这是我的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)
我想做的事:
我想 merge
upstream:master -> clone:branch1
。我知道此 merge 会有冲突(因为我更改了branch1
中的文件,而其他文件已在上游更改)。完成此操作后,我希望将更改推回origin:branch1
,其中将包括上游的1 commit +最新库(我想保持master
分支的最新状态,因为这是我从中分支出来的)。与此同时,我希望它成为一个 rebase ,以便提交历史记录是干净的,并且不会在所有地方产生蜘蛛网。另一个注意事项是,我不直接使用git命令行。在Windows上,我使用的是SmartGit,因此,如果有人知道该工具的说明,那将是最理想的。
我如何像上面描述的那样正确 merge ?
最佳答案
如果没有其他人克隆或正在使用branch1,则在将母版更新为上游/母版之后,可以在母版顶部 rebase 。
upstream
(SmartGit:远程/pull ,选择“仅获取”)master
重置为upstream/master
(SmartGit:本地/重置)Branches
View 中,您可以右键单击像master
这样的分支,然后选择Rebase HEAD
将当前的HEAD重新设置到所选分支master
上)Resolve merge conflicts(如有必要)。
branch1
推送(强制推送)到origin
(SmartGit:在Branches
View 的上下文菜单中,您可以在本地分支上调用Push
和Push To
)。