整个git分支的简单基础正确的方法

时间:2019-04-25 10:56:45

标签: git atlassian-sourcetree

我正在尝试将整个分支重新建立到master上。 师父已通过多个新提交通过了我的第一个分支提交。 当前,我使用git reset HEAD~<X>在整个分支中创建1个提交,我对分支进行暂存,然后将其提交到一个单独的临时分支/将其存储,然后将其重新建立在master之上。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您有以下选择。根据您的问题,我认为您可能希望将 Merge + squash功能分支转换为master 选项,因为这将导致对master的新提交,其中包含您对{{1 }}分支,这似乎是您想要实现的目标,但是我也解释了其他选择,以防万一您更喜欢另一种方法。

合并feature分支到feature

master

git checkout master git merge feature 分支更改合并到feature分支后,将master分支合并到master

feature

合并+压缩git checkout feature git merge master # Resolve merge conflicts if needed & git commit git push git checkout master git merge feature # Conflicts are not possible here, # since they would have been already resolved in previous merge git push feature中。

这将在master上创建一个新的提交,其中包含您要从master分支合并的所有更改。缺点:feature分支似乎没有包含在feature分支中。

master

git checkout master git merge --squash feature git commit git push 上的整个feature分支重新设置

缺点:

  1. master分支的所有提交都在master分支的顶部被重写。因此,在重新设置基准之后,feature分支的提交不会显示为feature分支中包含的内容。
  2. 您最终将不得不在不同的提交中解决 merge 冲突不止一次。
  3. 您松散的历史记录,并且将在一行中同时看到master分支的提交

因此,请考虑上述选项之一。

feature

压扁git co master git rebase feature git push 分支,然后将其合并到feature

缺点:如果您的master分支已被推送到远程,则需要重写远程历史记录。通常不建议这样做。有关更多详细信息,请参见https://stackoverflow.com/a/55824162/6939011