git本地怎么拉取新分支

打印 上一主题 下一主题

主题 910|帖子 910|积分 2730

一、本地拉取新分支

命令详解

当我们须要以当前分支为起点创建一个新的分支时,主要会用到以下两个命令:
1、创建分支
  1. git branch <branch>
复制代码
2、切换到新分支
  1. git checkout <branch>
复制代码
-b 创建并切换到新分支 (上面两个命令的合集)
  1. git checkout -b <branch>
复制代码
-B 重置分支(删除已存在的分支且重新创建,分支不存在也不会报错)
  1. git checkout -B <branch>
复制代码
创建分支的三种方式

1、基于长途库分支创建分支
语法格式
  1. git checkout -b <new-branch> origin/<old-branch>
复制代码
使用示例: 以长途库中的master分支为起点,在本地创建一个 dev 分支
  1. git checkout -b dev origin/master
复制代码
假如不知道有哪些可用的长途分支,可使用以下命令检查:
  1. git branch -r
复制代码
2、基于指定标签创建分支
切换到标签对应的提交记录
  1. git checkout <tagname>
复制代码
创建并切换到新分支
  1. git checkout -b <branch>
复制代码
3、基于指定 commit id 创建分支
切换到指定提交记录
  1. git checkout <commit id>
复制代码
创建并切换到新分支
  1. git checkout -b <branch>
复制代码
参考: git checkout 命令详解
二、办理git push提示不乐成

错误提示如下:
  1. $ git push
  2. fatal: The upstream branch of your current branch does not match
  3. the name of your current branch.  To push to the upstream branch
  4. on the remote, use
  5.     git push origin HEAD:master
  6. To push to the branch of the same name on the remote, use
  7.     git push origin dev
  8. To choose either option permanently, see push.default in 'git help config'.
复制代码
根本缘故原由在于本地分支dev是从长途分支master拉取的,在执行git push命令时,不知道应该与长途哪个分支进行同步,就会出现上面那个错误。
办理办法有2个:
1、采取给出的建议
  1. git push origin dev
复制代码
2、可以重新指定与长途同名的分支(推荐这种方式,执行之后以后就可以git push了)
  1. git push -u origin dev
复制代码
参考: 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信息:
  1. commit 2211113c88bb15b8b3a6f7fab86cad17ad4a41bc
  2. 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 分支上的内容,即 保存主分支,应该设置主分支为主线,操纵如下:
  1. git revert -m 1 2211113
复制代码
注意:对于被revert的代码,想要重新merge或者cherry-pick过来,须要先撤销之前的revert,否则之前revert的代码是无法再重新合并过来的,详情请看: Git 之 revert

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表