在GitHub上工作,对拉取请求和避免冲突感到困惑

时间:2015-05-27 16:02:19

标签: git github

通常当我分叉回购,处理它并提交拉取请求时,就会发生冲突。我不确定如何处理这些问题。在推到我的叉子之前,我应该在我的头上做git pull upstream/master,然后再做PR吗?我是否应该在某些时候做一个改变,以压缩我的承诺?我使用哪个rebase命令,交互式版本?如何使用git reset --soft <commit>后跟git commit的技巧?

我只是想知道做这些事情的时间点,以及我是否需要这样做。

2 个答案:

答案 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请求合并而不会发生冲突。但是,如果拉取请求没有立即合并,并且上游主机得到进一步发展,我的新变化就会出现。您需要再次执行上述命令并解决冲突。