通常当我分叉回购,处理它并提交拉取请求时,就会发生冲突。我不确定如何处理这些问题。在推到我的叉子之前,我应该在我的头上做git pull upstream/master
,然后再做PR吗?我是否应该在某些时候做一个改变,以压缩我的承诺?我使用哪个rebase命令,交互式版本?如何使用git reset --soft <commit>
后跟git commit
的技巧?
我只是想知道做这些事情的时间点,以及我是否需要这样做。
答案 0 :(得分:4)
提交PR时,通常需要确保更改基于分支的最新版本,您可以使用git rebase
命令完成此更新。
假设您正在更改&#34;功能&#34; branch(也就是说,你为了拉取请求而在本地创建的一个分支 - 添加一个功能,修复一个bug等),你会这样的,假设你的基础是{{{ 1}}分支:
master
如果您不在功能分支上工作,@ hek2mgl的建议(# ensure the master branch is up-to-date
git checkout master
git pull
# rebase your PR
git checkout my-branch
git rebase master
)将起作用,但我强烈建议您使用功能分支将您的更改与上游发展。
这将确保您的更改将适用而不会发生冲突。作为rebase操作的一部分,您可能需要在本地解决一些冲突。
没有必要压缩你的提交,但它通常是有帮助的,特别是如果你的提交符合&#34;修正了一个拼写错误&#34;或者&#34;忘了分号&#34;。有些项目会要求您将PR限制为单个提交,在这种情况下,将用于压缩您的提交。
答案 1 :(得分:1)
我建议做一个:
git pull --rebase upstream master
拉动上游变化。 --rebase
会将您自己的更改置于远程更改之上。这可能会导致冲突,但你必须自己解决它们 - 而不是repo维护者。一旦解决了冲突,就可以将pull请求合并而不会发生冲突。但是,如果拉取请求没有立即合并,并且上游主机得到进一步发展,我的新变化就会出现。您需要再次执行上述命令并解决冲突。