git分支合并,衍合

git分支

新建一个分支指针

git branch testing #新建一个叫testing的分支指针
         #git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去

切换到其他分支

git checkout testing
git checkout -b testing == "git branch testing" + "git checkout testing"
git checkout -d testing #删除testing分支
#留心暂存区或者工作目录里,那些还没有提交的修改,它会和即将检出的分支产生冲突从而阻止Git转换分支。

合并分支

git checkkout master #合并前,需要先检出想要更新的分支
git merge testing #把当前分支和testing分支合并
#如果顺着一个分支走下去可以到达另一个分支,那么 Git 在合并两者时,只会简单地把指针前移,因为没有什么分歧需要解决,所以这个过程叫做快进

冲突的合并

如果你修改了两个待合并分支里同一个文件的同一部分,Git 就无法干净地把两者合到一起,只能手动解决。可以使用git status查看哪里有冲突。。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可 视化的合并工具并引导你解决所有冲突。

管理分支

git branch#列出所有分支
git branch -v#查看各个分支最后一次 commit 信息
git branch --merged(--no-merged)#筛选出已经(或尚未)与当前分支合并的分支
git branch -d(-D) testing#(强制)删除分支

推送

git push origin(远程仓库名) serverfix(本地分支名)

抓取远程仓库的最新分支

git fetch origin 
    #,在 fetch 操作抓来新的远程分支之后,你仍然无法在本地编辑该远程仓库。换句话说,在本例中,你不会有一个新的 serverfix 分支,有的只是一个你无法移动的 origin/serverfix 指针。如果要把该内容合并到当前分支,可以运行 git merge origin/serverfix。如果想要一份自己的 serverfix 来开发,可以在远程分支的基础上分化出一个新的分支来:
git checkout -b serverfix origin/serverfix
    #这会切换到新建的 serverfix 本地分支,其内容同远程分支 origin/serverfix 一致,你可以在里面继续开发了。

跟踪远程分支

从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的 本地分支。在跟踪分支里输入 git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。反过来,在 这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。

设定为跟踪其他分支(而非最新分支)

git checkout --track origin/serverfix
#要为本地分支设定不同于远程分支的名字,只需在前个版本的命令里换个名字:
git checkout -b sf origin/serverfix
#现在本地分支 sf 会自动向 origin/serverfix 推送和抓取数据了。

删除远程分支

git push origin :serverfix #删除远程仓库的 serverfix 分支

衍合

把一个分支整合到另一个分支的办法有两种:merge(合并)和rebase(衍合)

git checkout experiment
git rebase master
    #它的原理是回到两个分支(你所在的分支和你想要衍合进去的分支)的共同祖先,提取你所在分支每次提交时产生的差异(diff),把这些差异分别保存到临时文件里,然后从当前分支转换到你需要衍合入的分支,依序施用每一个差异补丁文件。

更多有趣的衍合

git rebase --onto master server client
    #检出 client 分支,找出 client 分支和 client 分支与 server 分支的共同祖先之后的变化,然后把变化在 master 上重演一遍
#然后合并master和client
git checkout master
git merge client
​
git rebase 主分支 特性分支#命令会先检出特性分支server,然后在主分支master上重演:
#然后合并master和server
git checkout master
git merge server

注意!!!!!

永远不要衍合那些已经推送到公共仓库的更新。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值