了解一些复杂的git程序

时间:2016-07-11 10:23:50

标签: git

我正在开发一个包含很多人的开源软件,我被分配来解决拉取请求。

另一个贡献者最初在他自己的分支上开发了一个新功能,现在拉请求说了#34;这个分支有必须解决的冲突"和github指示以下命令行来合并冲突。

  1. 从项目存储库中,查看新分支并进行测试 变化。

    git checkout -b others-master-branch master
    

    我知道git checkout -b branch-name,但这里最后一个参数master代表什么?

    git pull https://github.com/username/projectname.git master  
    

    这意味着什么?从用户名的主分支填充新分支的内容?

  2. 合并更改并在GitHub上更新。

    git checkout master  
    git merge --no-ff others-master-branch  
    git push origin master  
    
  3. 问题:冲突可能来自哪里?

1 个答案:

答案 0 :(得分:1)

关于问题1

git help checkout回答第一个问题。 git checkout -b A Bgit 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即可随时“回滚”,并且您没有机会对您的存储库造成任何伤害。

关于问题2

由于你已经完成了合并到你的“扔掉”分支others-master-branch的所有好工作,你现在可以简单地将它合并到你当前的主人(这将是一个快进合并,即,仅仅是簿记,然后将其推向上游。

如何发生合并冲突

你有一个链接可以在你的问题下面的一条评论中回答这个问题,谷歌会抛出围绕这个主题的很多其他好的页面。

简而言之:大多数冲突发生在合并的两面都编辑了文件内部的密切度的线条时。 git将无法猜测哪些修改不正确并由您自行决定。它们通常不会引起警报(除非它们跨越数十或数百行),但在合并时是标准业务。