繁体   English   中英

git:如何解决合并冲突而不承担“责任”

[英]git: how to resolve merge conflicts without taking over 'blame'

对于我的github存档,我收到了一个合并请求,我想在合并之前先对其进行测试,因此使用了github推荐的命令行命令(contrib1代表贡献者的用户名,patch1代表合并请求的名称,并回购该名称存储库的)

   git checkout -b contrib1-patch1 master
   git pull https://github.com/contrib1/repo.git patch1

因为我已经进行了一些更改,所以解决了一个(简单的)合并冲突,我通过编辑file1解决了这个问题。 该补丁还包括对其他文件file2,...的无冲突更改。

然后我再次遵循github的建议:

   git add file1
   git checkout master
   git merge --no-ff contrib1-patch1
   git push origin master

merge命令产生一条消息“已经是最新的”,然后我发现我已经省略了首先提交,因此基本上重复了该过程:

   git commit -m "Implements patch1 by contrib1" repo
   git checkout master
   git merge --no-ff contrib1-patch1
   git push origin master

再次, git merge --no-ff导致消息“已经是最新的”。 现在,该存储库是正确的,但是我责怪自己是所有文件中更改的发起者,而不仅仅是行之间的冲突,从为外部贡献者分配功劳的角度来看,我觉得这很糟糕。

问题是,下一次应避免使用哪种命令顺序来避免这种情况,并确保在“责备”或“历史记录”视图中显示补丁作者? 请注意,我不关心更改以上补丁的历史记录,我只想为下一个补丁做正确的事情。 如果我没有犯忘记commit的错误(很明显是“本地”问题),那么很可能会出现相同的问题,但是如果它很重要,我觉得我应该报告它。

使用git rebase -i然后通过以下方式设置提交的原始作者

 git commit --amend --author "Original Author Name <email@address.com>" 

有关如何更改作者的更多详细信息,请点击此处 从内存中可以跳过一些额外的循环来更改合并提交的作者身份,但是考虑到您进行了合并,这似乎还可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM