覆盖Git合并中的作者

25

git-merge有像git-commit的--author选项吗?

我们维护一个需要执行某些更改的暂存环境。由于某些限制,我们只能使用一个Linux用户访问暂存环境。

无论如何,我们是一个合作倡议的小团队,在做提交时,我们使用--author git-commit选项告诉谁是作者。但有时我们需要从其他分支合并,这会导致非快进式合并。这意味着在执行此合并时进行了一次提交。

在这种情况下,手动指定合并提交的作者最好的方法是什么?

4个回答

32

首先,防止合并操作创建提交:

git merge --no-commit …

然后,手动执行提交:

git commit --author="A. U. Thor <a.u@thor.example.com>"

16

如果您已经合并了代码,您可以使用--amend来修改作者信息,就像这样:

git checkout master
git merge my_branch
git commit --amend --author="My Nick <my.address@example.com>"
git push origin master

这样做可以按预期将指定的作者添加到合并提交中,没有任何魔法。 :)


我觉得你的回答是最完整的,尽管它暗示了必须使用 --amend,但实际上并不一定。 - TheMonarch
不是吗?git merge会创建一个提交,如果要更改该提交的作者,则需要使用git commit --amend - q9f
这并不总是正确的,如果合并是一个快进合并,就不会创建提交,因此修正操作将尝试修正最新的提交。 - jonathancardoso

5
尝试使用 git merge --no-commit ... 然后再使用 git commit --author ...

3

另一个选择是设置GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL环境变量:

GIT_AUTHOR_NAME="A. U. Thor" GIT_AUTHOR_EMAIL="au@th.or" git merge ...

1
@Gerry 可能是因为投票的人意识到他们必须重置这些变量时,未记录的压力。不便之处使他们在工作上落后,无法表达自己的关切。开玩笑的话,这可能是设置环境变量的“破坏性”本质。 - Abandoned Cart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接