git工作流

2019-06-19  本文已影响0人  Saber_87d4
  1. 上游分支用merge,下游分支用rebase
    会减少很多无意义的merge,以及保持master分支的树干净。

  2. 原理:凡是不能fast forward 都不能push。
    不能fastforward 就会产生一次合并的提交,这次提交会将远程的终点和本地的终点合并起来作为一个新的终点。所以才有了问题3。

  3. 有两种情况会导致失败或者会导致一次新的无意义的merge


    image.png

一种是上图这种,很奇怪,分支自己合并自己。



一种是上图,毫无意义的merge。

出现上面两种情况的原因是:
第一种是分支上的,例如dev分支,分支做的东西修改了,然后commit了,并且push到了远程分支(也就是origin dev)。 然后执行 rebase master的操作,这时候就会出现这种情况。
会在提交时提示

父节点图
这时候强制提交即可。 git push --force
这种情况 可以参考此链接

第二种情况是再master分支上commit后再pull,这时候因为pull的内容在commit后的,所以需要重新生成一次commit到本地,才能让本地master 知道变化。
可以看到无意义的提交有两个parent commit的


image.png

这种情况可以看链接
链接上有张图

image.png
可以看到 合并后的E,其实他的父节点就是c和d,所以我们看到了上面父节点图的那个父级的由来了。
  1. 正确流程
    参考链接
    不涉及合并操作时,也就是只在自己分支上提交时,使用sourcetree,其他使用git,更清楚到底用了什么命令导致。
    然后正确的流程:
    (1)分支都commit完到自己分支,(需要备份的可以push)
git add .
git commit -m "???"

(2)然后master 拉取最新

git checkout master
git pull origin master

(3)切换到分支,git rebase master

git checkout dev_zrh
git rebase master

(4) 有冲突解决,并add ,并继续 git rebase --continue, 重复本步骤,知道所有都解决
(5) 如果不想rebase了 git rebase —abort
(6)都解决完,commit
(7)master 再拉取一遍,有更新则继续步骤3,无则git merge dev 并commit、push 到远程master

git checkout master
git pull origin master
git merge zrh_dev
git push origin master

(8)dev push 到远程dev (需要备份的使用此步骤)

上一篇 下一篇

猜你喜欢

热点阅读