git branch -vv 查看一下目前分支的“关联”情况
git add --all 将本地文件夹里(文件夹或父目录包含.git目录)的增删改更新带git在本机的暂存空间。
git commit -m "123" 将本机的暂存空间的文件提交到本机的git的仓库的当前目录所在分支
git remote add z123 https://gitee.com/peng4602/z1 在本机登记一个远程仓库,登记的名字为z123,以后可以通过z123来访问远程仓库,如果指定名字默认名字origion,一般这一步只用在先有本地代码(也就是用git init 来初始化本地目录)的情况下。
git remote -v 来查看在本目录下已登记的远程仓库
git config --global user.name "kevin" 这个设置是提交代码时显示的名字,作用于当前登录的用户
git config user.name "localUser" 这个设置是提交代码时显示的名字,作用于当前目录(文件夹或父目录包含.git目录的目录)
git pull sh z123 master:master 把z123远程仓库的master分支上的代码拉取到本地的master分支上。
git pull z123 master:master --allow-unrelated-histories
后面加上 --allow-unrelated-histories
, 把两段不相干的 分支进行强行合并
git status 查看当前目录下文件的修改状态,也就是还没有commit的状态。
git push z123 master:master 把本地的master分支上的代码提交到z123远程仓库的master分支上
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://gitee.com/peng4602/z1' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
上面的错误是要先pull,但是pull也发生了错误。命令和错误如下:
kevin@kevin-PC MINGW64 /e/gitee/z (master) $ git pull z123 master:master --allow-unrelated-histories From https://gitee.com/peng4602/z1 ! [rejected] master -> master (non-fast-forward)
但是将:master去掉以后就可以了,不懂。
kevin@kevin-PC MINGW64 /e/gitee/z (master) $ git pull z123 master --allow-unrelated-histories From https://gitee.com/peng4602/z1 * branch master -> FETCH_HEAD Merge made by the 'recursive' strategy. README.en.md | 36 ++++++++++++++++++++++++++++++++++++ README.md | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 README.en.md create mode 100644 README.md这个方法只解决因为两个仓库有不同的开始点,也就是两个仓库没有共同的 commit 出现的无法提交。如果使用本文的方法还无法提交,需要看一下是不是发生了冲突,解决冲突再提交
写的不错可以参考
https://blog.csdn.net/kjunchen/article/details/52155055
分支讲解这个文章不错可以参考。Git自学之路(四)- git branch 分支。
创建&切换分支
git branch b1 创建b1分支,但是不切换到b1分支。(git branch -b b1可以创建加切换)HEAD是指向当分支的指针,也可以理解为当前分支的别名。git checkout -b develop origin/develop 在远程分支的基础上建立develop
分支,并且让develop
分支追踪origin/develop
远程分支。
git log --oneline --decorate 显示分支所对应的提交记录。git log
命令显示从最近到最远的提交日志。
git checkout b1 是把HEAD指向了b1这个分支,如果是刚刚做的b1分支创建,master也没有提交代码,此时b1分支和master指向的是同一个提交。
此时在b1上做一次修改并提交,那么b1分支做指向的提交就比master向前了一个。
如果此时执行git checkout master 那么git会做两件时间,首先HEAD指向了master,其次将当前目录的内容回退到master指向的快照内容,也就是刚才在分支b1上的提交内容不会再当前目录里出现。
再在master做一些改动 vim a.txt git commit -a -m "master commit"
此时提交历史已产生分叉,因为刚才创建了一个新分支,并切换过去进行了一些工作,随后又切换回 master 分支进行了另外一些工作。 上述两次改动针对的是不同分支,你可以在不同分支间不断地来回切换和工作,并在时机成熟时将它们合并起来。 而所有这些工作,你需要的命令只有 branch、checkout 和 commit。
在使用 git log 命令查看分叉历史。 运行 git log --oneline --decorate --graph --all ,它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况。
合并分支
在分支开发完成后,用git status检查,确认所有文件都提交。然后切换到master下,git checkout master
git merge b1
此时发生了冲突
Auto-merging src/main/java/com/kevin/autogenproject/controller/OtherHTTPController.java CONFLICT (content): Merge conflict in src/main/java/com/kevin/autogenproject/controller/OtherHTTPController.java Automatic merge failed; fix conflicts and then commit the result.
我习惯使用beyond compare 来对比和merge文件,需要配置beyond compare为默认对比和merge工具
先安装beyond compare软件,gitbash里执行下面命令即可
git config --global diff.tool bc4 git config --global difftool.prompt false git config --global difftool.bc4.cmd '"C:\Program Files\Beyond Compare 4\BCompare.exe" "$LOCAL" "$REMOTE"' git config --global merge.tool bc4 git config --global mergetool.prompt false git config --global mergetool.bc4.cmd '"C:\Program Files\Beyond Compare 4\BCompare.exe" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"' git config --global mergetool.bc4.trustexitcode true
执行命令:
git mergetool
会自动弹出beyond compare的对比页面,编辑完成保存即可。
删除分支:
git branch -d b1
git branch -v --merged 可以过滤出当前已经合并过的分支
git branch -v --no-merged 可以过滤出当前没有合并过的分支
新的分支也可以上传到远程服务器端
git push abcd test:test abcd是指远程服务器的地址别名通过git remote -vv可以查看,第一个test就是远程仓库里的即将通过这个命令新建的分支。第二个test是本地的分支,如果当前目录已经是test的分支那么这个参数可以省略。
从远程分支创建本地分支,分支的名字和远程分支一样。也可运行 git checkout -b [branch] [remotename]/[branch]
$ git checkout --track origin/serverfix
跟踪远程分支
如果用git push
指令时,当前分支没有跟踪远程分支(没有和远程分支建立联系),那么就会git就会报错
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
因为当前分支没有追踪远程指定的分支的话,当前分支指定的版本快照不知道要作为服务器哪一个分支的版本快照的子节点。简单来说就是:不知道要推送给哪一个分支。
那么如何建立远程分支,有3中方法:
- 克隆时自动将创建好的
master
分支追踪origin/master
分支
git clone 服务器地址
git checkout -b develop origin/develop
2.在远程分支的基础上建立develop
分支,并且让develop
分支追踪origin/develop
远程分支。
git branch --set-upstream-to=abcd/develop develop
3.或者使用-u参数,和上述命令是同样的效果
git branch -u abcd/develop develop
实际上是修改.git/config里面的内容
$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。
查看本地分支和远程分支的跟踪关系
$ git branch -vv
iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets
master 1ae2a45 [origin/master] deploying index fix
* serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it
testing 5ea463a trying something new
这里可以看到 iss53 分支正在跟踪 origin/iss53 并且 “ahead” 是 2,意味着本地有两个提交还没有推送到服务器上。 也能看到 master 分支正在跟踪 origin/master 分支并且是最新的。 接下来可以看到 serverfix 分支正在跟踪 teamone 服务器上的 server-fix-good 分支并且领先 2 落后 1,意味着服务器上有一次提交还没有合并入同时本地有三次提交还没有推送。 最后看到 testing 分支并没有跟踪任何远程分支。
需要重点注意的一点是这些数字的值来自于你从每个服务器上最后一次抓取的数据。 这个命令并没有连接服务器,它只会告诉你关于本地缓存的服务器数据。 如果想要统计最新的领先与落后数字,需要在运行此命令前抓取所有的远程仓库。 可以像这样做:$ git fetch –all; git branch -vv
那么假如我此时想要将master的改变推送到origin服务器的master分支上:
$ git checkout master//切换到master分支
...
$ git branch -u origin/master//将当前分支跟踪origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.
之后就可以执行git add和git commit了
现在再查看一下本地和远程的分支关系:
$ git branch -vv
develop 08775f9 [origin/develop] develop
feature_1 b41865d [origin/feature_1] feature_1
* master 1399706 [origin/master] init commit
master已经跟踪了origin/master了
删除远程分支
$ git push origin --delete serverfix
[git]merge和rebase的区别
https://www.cnblogs.com/xueweihan/p/5743327.html
git pull
和git pull --rebase
区别:git pull
做了两个操作分别是‘获取’和合并。所以加了rebase就是以rebase的方式进行合并分支,默认为merge。
相关推荐
git常见指令大全脑图 超详细的git命令集合供大家学习下载,后续会持续进行更新,方便记忆git常见指令大全脑图 超详细的git命令集合供大家学习下载,后续会持续进行更新,方便记忆git常见指令大全脑图 超详细的git...
git命令集合 git命令.md
这个压缩包包含了多个关于Git命令学习的资源,如图像、PDF文档等,旨在帮助用户深入理解和掌握Git的基本及高级操作。 首先,"git_cmd.jpg"可能是一张包含常见Git命令的图片,通常这种图片会用图形化的方式直观展示...
Git-js是针对Node.js环境设计的一个轻量级库,它提供了一个简单易用的接口,允许开发者在他们的Node.js应用中直接调用Git命令,无需离开JavaScript的舒适区。 ### Git-js核心特性 1. **轻量级**:Git-js的核心设计...
Git配置中有时会遇到中文乱码问题,解决这一问题的办法是通过设置环境变量,例如在Windows系统中可以通过 `set LC_ALL=C.UTF-8` 命令来设置环境变量,以确保Git命令输出中文不乱码。而在Linux或Mac系统中,使用 `...
以上是Git命令的基本知识点,对于开发人员来说,理解和掌握这些知识点是进行版本控制和协作开发的重要基础。通过Git,开发者可以在本地进行高效的开发工作,同时也可以与全球的开发团队共享和协作,共同推动项目的...
### 如何掌握 Git 命令使用 在 IT 行业中,版本控制系统是软件开发不可或缺的一部分,而 Git 作为目前最流行的分布式版本控制系统之一,其掌握程度直接影响着项目的高效协同与版本管理能力。本文将从 Git 的安装、...
最全的git命令 Git 有多种使用方式。 你可以使用原生的命令行模式,也可以使用 GUI 模式,这些 GUI 软件也能提供多种功能。 在本书中,我们将使用命令行模式。 这是因为首先,只有在命令行模式下你才能执行 Git 的 ...
以上只是Git命令的一部分,实际使用中还有更多高级功能,如交互式重置(`git reset --interactive`)、合并冲突解决、cherry-pick(选择性合并)等。熟悉并掌握这些命令,将使你在版本控制和团队协作中更加得心应手。
常用的Git命令,并且做成了思维导图,整理非常清晰,绝对是你想要的
以下是对标题和描述中提到的Git命令的详细解释: 一、新建代码库 1. `git init`:在当前目录创建一个新的Git仓库。 2. `git init [project-name]`:在指定的项目名称目录下初始化一个新的Git仓库。 3. `git clone ...
git命令-git命令-git命令-git命令
是最常用的Git命令,开发过程中不可缺少的部分,适合快速检索Git命令,使用起来方便快捷,尤其针对新手使用
git命令.txt下载
开发中代码管理少不了使用Git,对于初学者来说Git命令的学习是一个难过的坎,为了帮助大家记忆并快速掌握Git的基本使用,我把常用的Git命令整理成思维导图,分享给大家。非原创,内容转发自网络。感觉一图胜前言,...
### Git命令大全详解 #### 一、Git 配置 (Config) **命令示例:** - `git version`:查看当前安装的 Git 版本。 - `git config -l`:列出当前的所有 Git 配置项。 - `git config --global user.name "Dean"`:...
Git命令的使用即创建需要的下载吧
Git命令速查表,常用Git命令一表全包括,中文高清,打印出来放在办公桌旁,您的工作好帮手!
git命令使用指南,从网上看到的,就做成了txt,自己就是看它入门的