したがって、非常に単純な使用例があります。「今日の作業」ブランチからマスターに戻る必要があるすべてのコミットを押しつぶしたいと考えています。
今までこれを使ってきましたが、うまくいき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
そうです、ここで最後の 4 つのコミットを 1 つのコミットにまとめたいと思います。
[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 <doug@null.com>
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 <doug@null.com>
Date: Tue Nov 6 21:38:53 2012 -0800
Updated TODO
いいえ!それは私が欲しかったものではありません。結果のコミットのタイムスタンプは、押しつぶしたコミットのタイムスタンプです。私が欲しかったのは、新しいコミット日を現在の時刻にすることでした。
私が話していることを正確に示すために:
[work2] date
Wed 7 Nov 2012 10:39:39 WST
Author: Doug <doug@null.com>
Date: Wed Nov 7 10:11:22 2012 +0800
結果のコミットをマージ時間までに日付にしたい、つまり。今、コミットの時ではありません。
私が知る限り、新しいコミットではなく、前のコミットに押しつぶすことしかできませんが、これを行う方法はありますか?
正しい解決策は
- マージメッセージと正しいコミット日時で新しいコミットを作成し、
- ??? <--- どういうわけか、以前のコミットをこのコミットに押しつぶします。
それ、どうやったら出来るの?