git flow澄清-重新合并是否比合并更好?请解释

时间:2018-08-26 19:38:04

标签: git

使用git时,在开始处理功能或问题之前,我会按照以下步骤进行操作

git checkout master // make sure you are on local master

git fetch origin // get latest commits from remote

git merge origin/master // merge latest commits from remote into local master

git checkout -b new-branch // create new branch from up-to-date remote master

但是,我正在阅读Atlassian的功能分支工作流程教程,他们建议您进行以下操作

git checkout master

git fetch origin

git reset --hard origin/master

git checkout -b new-branch

很显然,除了第3步,我们遵循相同的步骤。但是作为新的git用户,即使在我阅读了它的解释之后,我还是对第3步感到困惑。

我和他们的步骤3有什么不同? 哪个以及为什么更好?

3 个答案:

答案 0 :(得分:1)

看看this post

  

简短地:
   - git merge 一次将分支A的所有唯一提交应用于分支B      提交最终结果
   - git merge 不重写提交      历史记录,只添加了一个新的提交
   - git rebase 从两个分支获取所有唯一的提交,并将它们一次一一地应用
   - git rebase 重写提交历史记录,但不创建用于合并的额外提交

答案 1 :(得分:1)

您的问题有点错!

git reset --hard origin/master

不会重新设置基准,它是hard reset;另请参见Reset Demystified

在您的情况下,这意味着“删除当前分支中的所有本地更改,并将分支指针移至origin/master”。它的优点是命令完全将本地分支与远程同步;缺点是,它会删除您的本地提交和未提交的更改(如果有的话)。

答案 2 :(得分:1)

您显示的示例来自Atlassian的Git Feature Branch Workflow 在正常情况下,提取后git merge origin/mastergit reset --hard origin/master之间没有区别。

但是reset --hard具有破坏性,我会避免常规执行。如果您在错误的分支或不同的时刻偶然执行了merge,则可以撤消。


更简单的方法

顺便说一句,您只需

git checkout master
git pull 
git checkout -b feature_branch