一、本地拉取新分支
命令详解
当我们须要以当前分支为起点创建一个新的分支时,主要会用到以下两个命令:
1、创建分支
2、切换到新分支
-b 创建并切换到新分支 (上面两个命令的合集)
-B 重置分支(删除已存在的分支且重新创建,分支不存在也不会报错)
创建分支的三种方式
1、基于长途库分支创建分支
语法格式
- git checkout -b <new-branch> origin/<old-branch>
复制代码 使用示例: 以长途库中的master分支为起点,在本地创建一个 dev 分支
- git checkout -b dev origin/master
复制代码 假如不知道有哪些可用的长途分支,可使用以下命令检查:
2、基于指定标签创建分支
切换到标签对应的提交记录
创建并切换到新分支
3、基于指定 commit id 创建分支
切换到指定提交记录
创建并切换到新分支
参考: git checkout 命令详解
二、办理git push提示不乐成
错误提示如下:
- $ git push
- fatal: The upstream branch of your current branch does not match
- the name of your current branch. To push to the upstream branch
- on the remote, use
-
- git push origin HEAD:master
-
- To push to the branch of the same name on the remote, use
-
- git push origin dev
-
- To choose either option permanently, see push.default in 'git help config'.
复制代码 根本缘故原由在于本地分支dev是从长途分支master拉取的,在执行git push命令时,不知道应该与长途哪个分支进行同步,就会出现上面那个错误。
办理办法有2个:
1、采取给出的建议
2、可以重新指定与长途同名的分支(推荐这种方式,执行之后以后就可以git push了)
参考: git fatal: The upstream branch of your current branch does not match the name of your current branch
三、撤销分支合并的两种方式
1、git reset
此方式是以代码回退的方式撤销分支合并,详情请看: Git长途仓库版本回退
2、git revert
revert 可以撤销指定的提交内容,撤销后会生成一个新的commit。
a、两种commit
当讨论 revert 时,须要分两种情况,因为 commit 分为两种:一种是通例的 commit,也就是使用 git commit 提交的 commit;另一种是 merge commit,在使用 git merge 合并两个分支之后,你将会得到一个新的 merge commit。
merge commit 和普通 commit 的不同之处在于 merge commit 包含两个 parent commit,代表该 merge commit 是从哪两个 commit 合并过来的。
在上图所示的第一个commit信息:
- commit 2211113c88bb15b8b3a6f7fab86cad17ad4a41bc
- Merge: 940c192 a9f81b9
复制代码 这代表该 merge commit 是从 940c192 和 a9f81b9 两个 commit 合并过来的,而通例的 commit 则没有 Merge 行。
b、revert 通例commit:
使用 git revert 即可,git 会生成一个新的 commit,将指定的 commit 内容从当前分支上撤除。
c、revert merge commit:
revert merge commit 有一些不同,这时须要添加 -m 选项以代表这次 revert 的是一个 merge commit;
但假如直接使用 git revert ,git 也不知道到底要撤除哪一条分支上的内容,这时须要指定一个 parent number 标识出"主线",主线的内容将会保存,而另一条分支的内容将被 revert。
如上面的例子中,merge commit 的 parent 分别为 940c192 和 a9f81b9,其中 940c192 代表 master 分支,a9f81b9 代表 will-be-revert 分支。须要注意的是 -m 选项吸取的参数是一个数字,数字取值为 1 和 2,也就是 Merge 行里面列出来的第一个还是第二个,其寄义用来保存某个分支。
我们要 revert will-be-revert 分支上的内容,即 保存主分支,应该设置主分支为主线,操纵如下:
注意:对于被revert的代码,想要重新merge或者cherry-pick过来,须要先撤销之前的revert,否则之前revert的代码是无法再重新合并过来的,详情请看: Git 之 revert
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |