如何从本地主分支更新本地工作分支?

时间:2018-04-30 11:01:56

标签: git version-control

所以我有主人和工作分支。我已经在master分支中对文件进行了几处更改,并在工作分支中进行了修改。现在我必须将此更改从我的本地主分支推送到本地工作分支?静止是我如何做到的?

3 个答案:

答案 0 :(得分:1)

你想要的是一个分支rebase。它会尝试将Branch-A的历史记录与Branch-B重新对齐。

git checkout work-branch
git rebase master

对于MOST场景而言,这就是它。您可能需要解决两个分支之间的冲突,但您必须在相同的位置编辑相同的文件才能实现。

答案 1 :(得分:1)

只需使用git merge--ours运行--theirs即可修复冲突(如果有的话)我们的是您当前所在的分支他们的是您的行动中使用的另一个分支。

例如,如果您希望在work-branch中合并所有更改,并且应从work-branch获取冲突文件,则命令应为:

$ git checkout work-branch
$ git merge --strategy=ours local-master

否则,如果您希望在work-branch中合并所有更改,并且应从local-master获取冲突文件,则命令应为:

$ git checkout work-branch
$ git merge --strategy=theirs local-master

答案 2 :(得分:1)

同步分支的直接方式是进行合并(我的评论)或rebase(Strike的答案),具体取决于您希望工作历史和主分支随后查看的方式。 (净效应是相同的。)

但是既然你问这个问题,你可能正在寻找不同的东西,例如正确的主人到一个变化不可见的状态,将它们应用到工作分支,然后将工作分支合并到主,如标准工作流程会建议。

这样做的一种方法是

  • 将master的当前状态分支为新分支
  • 再次检查master并将其(硬)重置为工作分支上应该发生的更改之前的最后一次提交(通过git log找到)
  • 签出工作分支并合并包含更改的新分支
  • 最后查看master并合并工作分支,该分支现在包含最初和错误地在master上进行的更改。

如果您尚未将master推送到其他存储库,则重置master是一个好主意。