修改时更新git commit author date

kso*_*sol 268 git

我发现自己经常修改我的提交.我没有stash那么多,因为我倾向于忘记我这样做,特别是当我想要在我离开之前或周末之前保存我所做的事情时,所以我做了一个"草稿"提交.唯一的问题是,当我修改提交时,它仍然设置为原始作者日期.在修改时是否有(简单)方法更新它?

Mar*_*air 336

您可以使用--date参数to 更改作者日期git commit.因此,如果要修改上次提交,并将其作者日期更新为当前日期和时间,则可以执行以下操作:

git commit --amend --date="$(date -R)"
Run Code Online (Sandbox Code Playgroud)

(该-R参数date告诉它以RFC 2822格式输出日期.这是其中一种日期格式git commit.)

  • `git commit --amend --date = now`也适用.无需使用**date(1)**命令调用子shell.您可以在[date.c](https://github.com/git/git/blob/master/date.c#L938)的'git(1)**源代码中看到它'现在'是使用date_now()函数转换的特殊值.同样的'中午','昨天','午夜','茶'和其他列在结构数组特殊[]. (103认同)
  • FTR,在OS X上看起来,`date`不知道`-R`.无论如何使用没有选项的`date`来完成工作 (26认同)
  • `date -R`在OSX上不起作用,而是使用`date +%s` (9认同)
  • 请注意,如果你想将它作为别名,你需要添加一个`!`并转义引号,例如`can =!git commit --amend --date = \"$(date -R)\"` (6认同)
  • 同意FreeBSD:`git commit --amend --date ="$(date +%s)"` (4认同)

Rup*_*Rup 249

另一种方法是

git commit --amend --reset-author
Run Code Online (Sandbox Code Playgroud)

这确实改变了提交作者以及日期 - 但如果它最初是你的未提交的提交,那么这是一个无操作.

--no-edit如果要在多次提交时更新日期,但您希望提交消息保持不变,也可以添加.这样,系统不会提示您为每个提交编辑消息.

  • 单个复制粘贴:`git commit --amend --reset-author --no-edit` (5认同)

Kam*_*mal 224

从Git v2.1.4开始(在Debian 8(Jessie)上测试)

git commit --amend --date=now
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想再次看到提交消息,请添加“--no-edit”。 (25认同)

JLa*_*rky 12

我喜欢Mark的答案并且自己多次使用它,但现在我在OS X上并且date -R不受支持.但是一切都比我们想到的原始答案容易得多,只需使用空字符串!

git commit --date= --amend
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用.Git以错误`fatal:invalid date format:`中止 (5认同)