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