推送后在特定分支中更改作者和过去提交的电子邮件

时间:2018-11-07 20:11:37

标签: git git-branch

所以我忘记将我的姓名和电子邮件添加到git config中,当我推送更改后,我得到了一个默认名称。基本上看起来像这样:

  1. [我的名字]-提交(分支“ feature_1”)-最近更新
  2. [默认名称]-提交(分支“功能_1”)
  3. [我朋友的名字]-提交(分支“ feature_2”)
  4. [我的名字]-提交(分支“主人”)

我应该如何更改此列表中第二次提交的名称和电子邮件(从上到下),而又不影响其他内容或弄乱分支?

编辑:我忘了补充一点,我是唯一从事此分支功能的人。

2 个答案:

答案 0 :(得分:2)

您可以重新设置分支的基础,这将使您“重做”提交并使它具有您的名字。然后,您需要强制将更改推送到遥控器。

执行此操作的命令是:

git rebase -i <SHA before the commit with the default name>

您将获得提交列表,对于默认名称的提交,请指定您要“重新编写单词”。保存提交消息,您的历史记录将是最新的。

要更新遥控器,您需要执行git push -f。这告诉git,您所做的更改应覆盖远程存储库中的内容。

不建议这样做

执行上述操作正在更改历史记录,如果其他人也在该分支机构上工作,则会引起问题。当他们尝试使用您的更改更新分支时,他们将遇到问题。如果您是唯一与此分支机构打交道的人,那不是问题。

如果有多个人在分支上工作,则仅保留提交即可。推送后,您就不想重写历史记录。

答案 1 :(得分:1)

您实际上不能不进行任何修改。修改修订中的任何信息(例如带有修订)将创建完全不同的修订。您可以这样做:

git checkout my-branch~2 # two revisions back from the branch tip
git commit --amend --author "Foo Bar <darthv@empire.com>"
git cherry-pick my-branch~2..my-branch # reapply revisions 3 and 4
git branch -f my-branch # set my-branch over here

但是从修改的角度出发,您正在创建与原始版本(在历史记录上)无关的全新版本。要求用力推动遥控器来替换分支,将要求其他开发人员意识到这一变化,以便他们可以在已经在该分支顶部工作的情况下进行重新部署。无论如何,并不是特别痛苦。...如果您问我,照常营业。