如何从上游分支合并?

时间:2013-10-31 19:25:35

标签: windows git branching-and-merging smartgit

这是我的git设置(我们在公司网络中使用Git + Atlassian Stash):

upstream:
  master

origin (my fork of 'upstream'):
  master
  branch1 (branch of master, with a few commits on top of it)

clone (local; clone of 'origin'):
  master
  branch1 (ahead of 'origin:branch1' by 1 commit)

我想做什么:

我想合并upstream:master -> clone:branch1。我知道这个合并会有冲突(因为我在branch1中更改了其他人在上游更改的文件)。一旦完成,我希望将我的更改推回到origin:branch1,这将包括我的1提交+来自上游的最新基础(我想跟上master分支的最新状态,因为那是一个我分支了)。除此之外,我希望它是一个rebase,因此提交历史记录是干净的,并且不会在整个地方发送蜘蛛网。

另一个注意事项是我不直接使用git命令行。在Windows上,我正在使用SmartGit,所以如果有人知道该工具的说明是最理想的。

如何正确合并,如上所述?

1 个答案:

答案 0 :(得分:3)

如果没有其他人克隆过或正在使用branch1,那么一旦您将master更新为上游/主服务器,您就可以在master之上 rebase

  • 首先,fetch upstream(SmartGit:远程/拉动,选择“仅提取”)
  • 然后将master重置为upstream/master(SmartGit:本地/重置)
  • 现在在master上重新设置branch1(SmartGit:在Branches视图中,您可以右键单击master之类的分支,然后选择Rebase HEAD将您当前的HEAD重新定位到选定的分支master
    {}必要时Resolve merge conflicts
  • 最后将branch1推送(强制推送)到origin(SmartGit:在Branches视图的上下文菜单中,您可以调用Push和{{1在本地分支上)。

enter image description here