GitHub中的拉取请求未显示合并冲突已修复且未显示我的提交

时间:2015-06-26 18:33:05

标签: git github merge

我正在修复命令行中其他贡献者的合并冲突。还在学习Git如何在这里工作,所以请耐心等待......

像这样...

git checkout -b otherusersbranch master
git pull https://github.com/otheruser/myrepo.git otherusersbranch

....找到并解决冲突

git add .
git commit -m "fixing merge conflicts"
git push origin otherusersbranch
git checkout master
git merge --no-ff otherusersbranch
git push origin master

当从命令行纠正合并冲突时,我正在将更改推送到贡献者的分支,就像正常一样。但是,pull请求中的合并冲突指示符保持不变,我无法在pull请求中看到我的提交。我做错了什么?

3 个答案:

答案 0 :(得分:5)

我认为您没有成功将更改推送到用户的分支。尝试向该分支提交拉取请求。否则,您需要允许自己直接推送。

根据您的描述,您只是将更改推送到您自己的分支,这就是为什么它没有出现在提交历史记录中。

答案 1 :(得分:2)

假设您在其他用户分支上,您可以通过执行

来改变您的好友
git pull https://github.com/otheruser/myrepo.git otherusersbranch

然后解决合并冲突,添加您的提交并将其推送到您的远程。除非他给你正确的访问权限,否则你无法将更改推送到朋友的分支机构。

理想情况下,您希望他将他的更改推送到您可以获取和处理的中央仓库,您将提交应用于他的顶部并发送拉取请求。

答案 2 :(得分:1)

如果您可以直接推送到您的贡献者的分支(我假设public interface ModelDAO { List<Model> getAllModels(); List<Model> getModelByName(String Name); void updateModel(Model model); void deleteModel(Model model); } 是您的分支并https://github.com/otheruser/myrepo.git是您的贡献者),那么编辑的原因不会出现在从fork到origin的pull请求是您直接推送更改,从而绕过pull请求进程。

解释:当你从你的朋友的叉子中打开一个拉取请求并且他们合并它时,这相当于他们已经完成了

origin

git fetch <your-fork> master 
git merge <your-fork>/master 

接着是

git pull <your-fork> master 

如果您继续前进并推送到git push <their-fork> master ,在这种情况下是原点,那么您基本上已经完成了拉取请求所做的事情。此外,在修复合并冲突后,当您推送到<their-fork>而不是<their-fork>时,github会在pull请求中看到与之前完全相同的合并冲突,因为<your-fork>尚未更新,所以现在你有与“固定”版本的合并冲突。当PR程序被规避时,git不知道,但是git HUB 变得非常困惑(拉取请求完全基于github - 没有概念在“拉取请求“在git本身)。

解决这个问题的最简单方法是简单地关闭打开的PR,因为无论如何你基本上已经合并了它。但是,如果要保留拉取请求工作流程,可以抓住朋友的主分支,执行

<your-fork>

到你推到它之前,然后

git reset --hard 

哪会让你的PR恢复到你想要的状态(你可能需要在那里进行一些调整,我对你的分支结构我不是很清楚,但这是要点)

注意:查看git checkout -b tmp git cherry-pick otheruserbranch <list-of-commits-you-made> git checkout master git merge tmp git push <your-fork> master 以获取有关git reset的文档,并确保在使用之前了解硬重置的后果。