2012-11-07 105 views
21

所以,我有一個非常簡單的用例;我想壓縮所有需要從我的'今天工作'分支返回主人的提交。我如何在git中提交一個未提交的提交日期?

到現在爲止,我一直在使用git rebase -i,但它不能正常工作;最終提交的時間戳不正確。

這裏有這樣的例子:

[work1] git checkout master 
Switched to branch 'master' 

[work1] git rebase today 
First, rewinding head to replay your work on top of it... 
Fast-forwarded master to today. 

[work1] git log --pretty=format:"%h%x09%an%x09%ad%x09%s" 
5ad95ff Doug Wed Nov 7 10:12:42 2012 +0800 Updated TODO again 
abb891c Doug Wed Nov 7 10:12:24 2012 +0800 Added more work 
c5fd35c Doug Wed Nov 7 10:11:50 2012 +0800 Added more work 
a98facd Doug Wed Nov 7 10:11:22 2012 +0800 Add work 
b4465be Doug Tue Nov 6 21:38:53 2012 -0800 Updated TODO 
403cea9 Doug Fri Jan 2 21:38:53 2009 -0800 Added todo 

好了,現在我想壁球過去的四個月提交到一個承諾。

[work2] date 
Wed 7 Nov 2012 10:39:39 WST 

[work2] git rebase -i b4465be 

pick a98facd Add work 
squash c5fd35c Added more work 
squash abb891c Added more work 
squash 5ad95ff Updated TODO to reflect todays work 

而結果:

[work2] git log 
commit 3f7f1d2eb4ef23c73dce95f718152c7d5683a926 
Author: Doug <[email protected]> 
Date: Wed Nov 7 10:11:22 2012 +0800 

    Add work 
    Added more work 
    Added more work 
    Updated TODO to reflect todays work 

commit b4465bee5b278214704edcfef3f6e222b5b52964 
Author: Doug <[email protected]> 
Date: Tue Nov 6 21:38:53 2012 -0800 

    Updated TODO 

該死的沒有!這是不是我想要的。結果提交的時間戳是我們壓縮提交的時間戳;我想要的是新的提交日期是當前時間。

爲了表明正是我在談論:

[work2] date 
Wed 7 Nov 2012 10:39:39 WST 

Author: Doug <[email protected]> 
Date: Wed Nov 7 10:11:22 2012 +0800 

我希望得到的承諾是由合併時間日期,即。現在,不是提交的時間。

據我所知,你只能壓縮到一個先前的提交,而不是向上進入一個新的提交,但有沒有這樣做的一些方法?

正確的解決方案似乎是1)使用合併消息和正確的提交日期時間創建一個新的提交,2)? < ---以某種方式壓扁此前的提交。

我該怎麼做?

+0

這是我不喜歡壓扁的原因之一。一個 –

+0

也。提交者日期和作者日期之間有區別。取決於你在做什麼。 –

+0

[git squash和保留上次提交的時間戳]的可能重複(https://stackoverflow.com/questions/10020641/git-squash-and-preserve-last-commits-timestamp) –

回答

31

哈克:您可以使用

git commit --amend --reset-author 

的git的承諾手冊頁說,這「也更新了筆者的時間戳」 。您不必對提交進行任何更改(我在本地嘗試),它會將時間戳更新爲當前時間。絕對是一種濫用,但它似乎工作。

0

相反的git rebase -i b4465be,最近的日誌複製到剪貼板,並做到:

git reset --soft b4465be 
git commit 

粘貼和編輯更改日誌,保存從提交信息編輯器&退出。

相關問題