这是我的 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 次提交 + 来自上游的最新基础(我想与 master
保持同步) code> 分支,因为那是我分支的分支)。除此之外,我希望它成为一个 rebase ,以便提交历史记录干净并且不会到处都是蜘蛛网。
另一个注意事项是我不直接使用 git 命令行。在 Windows 上,我使用的是 SmartGit,因此如果有人知道该工具的说明,那将是最理想的。
如何像上面描述的那样正确 merge ?
最佳答案
如果没有其他人克隆或正在使用branch1,您可以rebase 一旦您将 master 更新为上游/master,它就位于 master 之上。
- 首先,fetch
upstream
(SmartGit:远程/pull ,选择“仅获取”) - 然后将
master
重置为upstream/master
(SmartGit:本地/重置) - 现在在 master 之上重新设置分支 1(SmartGit:在
Branches
View 中,您可以右键单击master
等分支,然后选择Rebase HEAD
将当前 HEAD 重新设置到所选分支master
)
Resolve merge conflicts如果需要的话。 - 最后将
branch1
推送(强制推送)到origin
(SmartGit:在Branches
View 的上下文菜单中,您可以调用本地分支上的Push
和Push To
)。
关于windows - 如何从上游分支 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19715001/