git:如何在不接管'blame'的情况下解决合并冲突



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

   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>" 

有关如何在此处更改作者的更多详细信息。从内存来看,要更改合并提交的作者身份,还有一些额外的困难需要克服,但考虑到您已经完成了合并,这似乎还可以。

相关内容

  • 没有找到相关文章

最新更新