假设我已经 fork https://github.com/user/proj.git并在我的分支(的主分支)上进行了重大开发。
我想解决上游遇到的问题(我尚未在我的 fork 中修复)。如果我理解正确,我应该在上游最后一次 checkin 其主节点的基础上创建一个功能分支:
git fetch upstream
git checkout upstream/master
git checkout -b my_new_feature
这些命令中的第二个让我知道我处于“分离头”状态..这是我需要关心的事情(了解执行此任务)吗?
现在我进行更改,然后 git add
和 git commit
更改的文件,然后 git Push
到 github,但是当我创建时 pull 请求 我被告知我的 pull 请求无法自动 merge ,因为我所做的更改与我完成后 checkin upstream/master
的更改之间存在冲突git fetch
。
冲突的更改在语义上是等效的,因此我想遵循 upstream/master
的版本。在解决冲突时,如何将我的 pull 请求从 upstream/master
rebase (这就是我想做的,对吧?)? (我精通 Subversion,并且是 git 的新手,如果这有助于回答的话..)
最佳答案
is this pull request that is problematic, since it includes a conflict with changes done to upstream/master after I branched off of it
the steps needed to "provide him a proper rebased branch"?
“正确的重新基址分支”是指在 upstream/master
之上重新基址的分支(上游是您 fork 的原始存储库的名称)
git fetch upstream
git checkout myBranch
git rebase upstream/master
(我也在“Pull new updates from original Github repository into forked Github repository”中描述了该步骤)
如果你想清理一下分支的历史记录,你也可以进行 rebase 交互 (git rebase -i
)
这样,您就可以解决本地克隆中的任何冲突,并git push --force
将您的分支推送到您的分支。
如果您已经有一个 PR( pull 请求)正在进行中,它将自行更新,以考虑您的重新定位分支的修订历史记录。
原始项目的维护者的目标仍然是将您的分支 merge 到他/她的主分支中,并通过简单的 merge (0冲突)来实现。
关于git - 如何为您 fork 的项目做出贡献?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987983/