我正在修复命令行中其他贡献者的合并冲突。还在学习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请求中看到我的提交。我做错了什么?
答案 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
的文档,并确保在使用之前了解硬重置的后果。