假设我的同事 John 创建了一个名为“john”的分支。 John 有 10 次提交。当涉及到 merge 回 master 时,他们要求我进行 merge 。
我就是这样
git checkout -b john origin/john
git rebase master
git checkout master
git merge john --squashed
git add .
git commit -m 'merged branch john'
但是现在发生的是我的 id 反对 merge 提交。后来有人问我为什么改了某部分代码。
我如何将 john 分支中的所有提交 merge 为一个提交,以便 John 是作者。我想 git commit interactive 可以提供帮助,但不太理解。
最佳答案
这里的问题是 git merge --squash
将应用与正常 merge 相同的更改,但不保留 merge 信息。然后,当您提交时,它与您所做的任何提交相同:它归因于您。您可以使用 git commit --author="Original Author <email@server>"
更改提交的作者信息.参见 git-commit(1)有关 --author
的更多信息开关。
但我的问题是:为什么要压缩 merge ?为什么不只进行非压缩 merge ?如果有人做了 git blame
, 它将适本地归因于原作者的提交。
关于git - 如何 merge 分支并保留作者身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3305218/