将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
    

    一旦我们解决了冲突,或者如果没有冲突,我们就会commitpush它们

    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的详细信息

    附录:

  • 如果您不确定重组操作,请参阅:https://git-scm.com/book/en/v2/Git-Branching-Rebase

  • 重组或合并都不应覆盖任何人的更改(除非您在解决冲突时选择这样做)。

    发展中的常用方法是

    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

    下一篇: How to delete a git remote tag?