当前位置:   article > 正文

git本地怎么拉取新分支_git拉取新分支

git拉取新分支

一、本地拉取新分支

命令详解

当我们需要以当前分支为起点创建一个新的分支时,主要会用到以下两个命令:
1、创建分支

git branch <branch>
  • 1

2、切换到新分支

git checkout <branch>
  • 1

-b 创建并切换到新分支 (上面两个命令的合集)

git checkout -b <branch>
  • 1

-B 重置分支(删除已存在的分支且重新创建,分支不存在也不会报错)

git checkout -B <branch>
  • 1

创建分支的三种方式

1、基于远程库分支创建分支
语法格式

git checkout -b <new-branch> origin/<old-branch>
  • 1

使用示例: 以远程库中的master分支为起点,在本地创建一个 dev 分支

git checkout -b dev origin/master
  • 1

如果不知道有哪些可用的远程分支,可使用以下命令检查:

git branch -r
  • 1

2、基于指定标签创建分支
切换到标签对应的提交记录

git checkout <tagname>
  • 1

创建并切换到新分支

git checkout -b <branch>
  • 1

3、基于指定 commit id 创建分支
切换到指定提交记录

git checkout <commit id>
  • 1

创建并切换到新分支

git checkout -b <branch>
  • 1

参考: 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'.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

根本原因在于本地分支dev是从远程分支master拉取的,在执行git push命令时,不知道应该与远程哪个分支进行同步,就会出现上面那个错误。

解决办法有2个:
1、采取给出的建议

git push origin dev
  • 1

2、可以重新指定与远程同名的分支(推荐这种方式,执行之后以后就可以git push了)

git push -u origin dev
  • 1

参考: 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
  • 1
  • 2

这代表该 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 分支上的内容,即 保留主分支,应该设置主分支为主线,操作如下:

git revert -m 1 2211113
  • 1

注意:对于被revert的代码,想要重新merge或者cherry-pick过来,需要先撤销之前的revert,否则之前revert的代码是无法再重新合并过来的,详情请看: Git 之 revert

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号