我正在开发一个包含很多人的开源软件,我被分配来解决拉取请求。
另一个贡献者最初在他自己的分支上开发了一个新功能,现在拉请求说了#34;这个分支有必须解决的冲突"和github指示以下命令行来合并冲突。
从项目存储库中,查看新分支并进行测试 变化。
git checkout -b others-master-branch master
我知道git checkout -b branch-name
,但这里最后一个参数master
代表什么?
git pull https://github.com/username/projectname.git master
这意味着什么?从用户名的主分支填充新分支的内容?
合并更改并在GitHub上更新。
git checkout master
git merge --no-ff others-master-branch
git push origin master
问题:冲突可能来自哪里?
答案 0 :(得分:1)
git help checkout
回答第一个问题。 git checkout -b A B
与git branch A B ; git checkout A
相同:它创建一个新分支A
,指向与分支B
相同的提交。
在此示例中,您将创建一个新分支others-master-branch
,该分支指向master
当前指向的提交,并且还将检出该新分支。
git pull ... master
然后与git fetch someorigin/master ; git merge someorigin/master
相同,假设someorigin
指向您提供的网址,即它从网址中提取当前master
并将其合并到您的网址中目前拥有当前分支(others-master-branch
)。
这将告诉您合并期间是否存在无法解决的问题,以及之后自动化测试是否正常运行。您只需删除others-master-branch
即可随时“回滚”,并且您没有机会对您的存储库造成任何伤害。
由于你已经完成了合并到你的“扔掉”分支others-master-branch
的所有好工作,你现在可以简单地将它合并到你当前的主人(这将是一个快进合并,即,仅仅是簿记,然后将其推向上游。
你有一个链接可以在你的问题下面的一条评论中回答这个问题,谷歌会抛出围绕这个主题的很多其他好的页面。
简而言之:大多数冲突发生在合并的两面都编辑了文件内部的密切度的线条时。 git
将无法猜测哪些修改不正确并由您自行决定。它们通常不会引起警报(除非它们跨越数十或数百行),但在合并时是标准业务。