将git分支合并到master中最好(也是最安全)的方法
创建一个来自master
的新分支,我们称之为test
。
有几个开发人员承诺master
或创建其他分支机构,然后合并到master
。
比方说,在工作test
正在采取数天,你要不断地保持test
里面提交更新的master
。
我会做test
git pull origin master
。
问题1:这是正确的方法吗? 其他开发人员可以很容易地处理相同的文件,因为我曾在btw工作过。
我的test
工作已经完成,我已准备好将其合并回master
。 以下是我能想到的两种方式:
A:
git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test
B:
git checkout test
git pull origin master
git checkout master
git merge test
我没有使用--rebase
因为从我的理解中,rebase会从master
和stack上取得变化,因此它可以覆盖其他人做出的更改。
问题2:这两种方法中哪一种是正确的? 那里有什么不同?
所有这些目标都是让我的test
分支更新为master
发生的事情,之后我可以将它们重新合并到master
希望尽可能保持时间线性。
我将如何做到这一点
git checkout master
git pull origin master
git merge test
git push origin master
如果我有一个远程分支机构的本地分支机构,那么我觉得合并其他分支机构比将此分支机构与远程分支机构合并是不合适的。 此外,我不会推动我的更改,直到我对我想要推动的内容感到满意为止,并且我也不会推动所有事情,只有我和我的本地存储库。 在你的描述中,似乎这个test
只针对你? 所以没有理由发布它。
git总是试图尊重你和其他人的变化,而且--rebase
也是如此。 我不认为我可以适当地解释它,所以看一下Git书 - 重新编辑或者编写Git-ready:介绍重新编写一些描述。 这是一个很酷的功能
这是一个非常实际的问题,但上面的所有答案都不实际。
喜欢
git checkout master
git pull origin master
git merge test
git push origin master
这种方法有两个问题 :
这是不安全的,因为我们不知道测试分支和主分支之间是否存在任何冲突。
它会将所有测试提交“压缩”到主设备上的一个合并提交中; 也就是说在master分支上,我们看不到测试分支的所有更改日志。
所以,当我们怀疑会有一些冲突时,我们可以进行下面的git操作:
git checkout test
git pull
git checkout master
git pull
git merge --no-ff --no-commit test
在commit
前测试merge
,避免通过--no-ff
进行快速提交,
如果遇到冲突,我们可以运行git status
来检查有关冲突的细节并尝试解决
git status
一旦我们解决了冲突,或者如果没有冲突,我们就会commit
并push
它们
git commit -m 'merge test branch'
git push
但是这种方式会丢失测试分支中记录的更改历史记录,并且会使主分支难以让其他开发人员了解项目的历史记录。
所以最好的方法是我们必须使用rebase
而不是merge
(假设,在这个时候,我们已经解决了分支冲突)。
以下是一个简单的示例,对于高级操作,请参阅http://git-scm.com/book/en/v2/Git-Branching-Rebasing
git checkout master
git pull
git checkout test
git pull
git rebase -i master
git checkout master
git merge test
是的,当鞋底完成后,所有测试分支的提交将被移动到主分支的头部。 重新设计的主要好处是您可以获得线性和更清洁的项目历史。
你唯一需要避免的是:不要在公共分支上使用rebase
,比如master分支。
如下面的操作:
git checkout master
git rebase -i test
从不做这些操作。
https://www.atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing的详细信息
附录:
重组或合并都不应覆盖任何人的更改(除非您在解决冲突时选择这样做)。
发展中的常用方法是
git checkout master
git pull
git checkout test
git log master.. # if you're curious
git merge origin/test # to update your local test from the fetch in the pull earlier
当你准备好重新融入主人时,
git checkout master
git log ..test # if you're curious
git merge test
git push
如果你担心打破合并, git merge --abort
就在你身边。
使用push然后pull作为合并的手段是愚蠢的。 我也不确定你为什么要将测试推向原点。
链接地址: http://www.djcxy.com/p/1363.html上一篇: Best (and safest) way to merge a git branch into master