对于我的 github 存档,我收到了一个 pull request,我想在合并之前先对其进行测试,因此使用了 github 推荐的命令行命令(contrib1 代表贡献者的用户名,patch1 代表 pull request 的名称,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
合并命令导致一条消息“已经是最新的”,然后我发现我忽略了先提交,所以基本上重复了这个过程:
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
(显然是“本地”问题)的错误,很可能会出现同样的问题,但万一这很重要,我觉得我应该报告它。