首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何更改提交时间(尚未推送)?

如何更改提交时间(尚未推送)?
EN

Stack Overflow用户
提问于 2009-02-25 09:10:51
回答 4查看 6.3K关注 0票数 20

如何更改在本地存储库中进行提交的时间?

假设我做了几次提交,并注意到我计算机上的日期是错误的。还假设这些提交还没有被推送到任何地方。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-26 04:36:43

使用MQ (Mercurial Queues)可以很容易地做到这一点:

设置错误的日期存储库

+ hg init
+ echo line
+ hg commit -A -d 12/1 -m first
adding file
+ echo line
+ hg commit -A -d 12/2 -m second
+ echo line
+ hg commit -A -d 12/3 -m third
+ hg log
changeset:   2:81c88de729a8
tag:         tip
user:        Ry4an Brase <ry4an@mini>
date:        Thu Dec 03 00:00:00 2009 -0600
summary:     third

changeset:   1:c1fe70008824
user:        Ry4an Brase <ry4an@mini>
date:        Wed Dec 02 00:00:00 2009 -0600
summary:     second

changeset:   0:abb97adaa541
user:        Ry4an Brase <ry4an@mini>
date:        Tue Dec 01 00:00:00 2009 -0600
summary:     first

将变更集转换为队列中的补丁

+ hg qimport -r 2
+ hg qimport -r 1
+ hg qimport -r 0

依次制作每个补丁的qtip并确定日期

+ hg qrefresh -D
+ hg qpop
Now at: 1.diff
+ hg qrefresh -D
+ hg qpop
Now at: 0.diff
+ hg qrefresh -D

重新应用补丁程序

+ hg qpush
applying 1.diff
Now at: 1.diff
+ hg qpush
applying 2.diff
Now at: 2.diff

将每个补丁转换回真正的变更集

+ hg qdel -r 0
+ hg qdel -r 1
+ hg qdel -r 2

一切变得更好:

+ hg log
changeset:   2:6b51e14aadfc
tag:         tip
user:        Ry4an Brase <ry4an@mini>
date:        Wed Feb 25 22:29:01 2009 -0600
summary:     third

changeset:   1:5cbb9fc51bcc
user:        Ry4an Brase <ry4an@mini>
date:        Wed Feb 25 22:29:02 2009 -0600
summary:     second

changeset:   0:ec58d1f24278
user:        Ry4an Brase <ry4an@mini>
date:        Wed Feb 25 22:29:02 2009 -0600
summary:     first
票数 11
EN

Stack Overflow用户

发布于 2016-06-07 01:43:42

如果这只是一次提交,且该提交是最近提交(在您所在的分支上),那么执行此操作的快速一行代码是:

hg commit --amend -d now
票数 15
EN

Stack Overflow用户

发布于 2009-02-25 23:08:38

hg commit有一个--date标志,这就是你改写提交时间的方式。问题是如何在没有太多痛苦的情况下重新提交早期的更改。

让我们假设您获得以下本地提交的历史记录:

dir1> hg commit # r100, OK
dir1> hg commit # r101, need to fix time
dir1> hg commit # r102, need to fix time

这是我的解决方案:

hg diff -r100:101 > 101.diff
hg diff -r101:102 > 102.diff
cd ..
hg clone -r100 dir1 dir2 # create a copy just before changesets than needs to be fixed
cd dir2
patch -i ../dir1/101.diff
hg commit -m "Same commit message" --date="required date"
patch -i ../dir1/102.diff
hg commit -m "Same commit message" --date="required date"
cd ..
rm -rf dir1 &&  mv dir2 dir1 # replace working copy

您可以使用hg patch自动应用补丁,这在我的实践中还没有使用过。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/585258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档