【问题标题】:Change name, email and/or date for one specific commit, *before* committing更改一个特定提交的名称、电子邮件和/或日期,*在*提交之前
【发布时间】:2016-03-08 11:47:57
【问题描述】:

我想在 Git 存储库中创建提交,但提交中与作者关联的姓名和电子邮件与通常与我关联的信息不同。

我还希望提交的时间戳与我当前的本地时间不同。

我知道我可以在提交更改此信息之后重写我的项目历史记录。但是我还没有提交。 在我提交时有什么方法可以更改这些信息吗?

【问题讨论】:

标签: git


【解决方案1】:

要更改提交的作者,请使用git commit --author

git commit -m "A commit with a different author" --author="Your name here <yourEmailHere@includeTheAngleBrackets.com>"

要更改提交日期,请使用git commit --date="YYYY-MM-DD HH:MMxm

git commit -m "A commit made to celebrate Christmas" --date="2015-12-25 12:00am"

这些选项可以组合:

git commit -m "Ho ho ho" --author="Santa Claus <santa@northpole.org>" --date="2015-12-25 12:00am"

git merge 命令没有--author--date 选项。要更改合并命令的日期和作者,首先要定期进行合并:

git merge other_branch

然后,只要创建了合并提交,就可以在 push 之前使用git commit --amend 更改合并提交的元数据:

git commit --amend --author=... --date=...

【讨论】:

  • 更多关于--date选项格式的详细信息,包括如何设置时区,请看这个问题:stackoverflow.com/questions/19742345/…
  • 默认情况下,当您使用--date 选项时,Git 将使用您的本地时区作为日期。
【解决方案2】:

您还可以在提交期间设置适当的环境变量。来自文档:[1]

Git 提交的最终创建 [...] 使用这些环境变量作为其主要信息来源,只有在这些不存在时才回退到配置值。

  • GIT_AUTHOR_NAME 是“作者”字段中的人类可读名称
  • GIT_AUTHOR_EMAIL 是“作者”字段的电子邮件
  • GIT_AUTHOR_DATE 是用于作者字段的时间戳
  • GIT_COMMITTER_NAME 设置“提交者”字段的人名
  • GIT_COMMITTER_EMAIL 是“提交者”字段的电子邮件地址
  • GIT_COMMITTER_DATE 用于“提交者”字段中的时间戳

例子:

GIT_AUTHOR_NAME="foo" GIT_AUTHOR_EMAIL="bar" git commit -m "baz"

【讨论】:

  • 我接受 Whymarrh 的回答,因为它解释了如何更改提交者和作者元数据,而我的仅更改作者元数据。
猜你喜欢
  • 2016-04-23
  • 2014-11-14
  • 2018-11-21
  • 2018-04-27
  • 1970-01-01
  • 2019-03-31
相关资源
最近更新 更多