2016-06-16 6 views
1

これはちょっと複雑で、おそらく非常に具体的です。説明しようとしましょう。Git commit、masterからのrebase、そして元のcommitへの小さな変更

は、私は私のローカルドライブにこのGitのレポを引くとしましょう。次に、いくつかの変更を行います。これらの変更は多くの異なるファイルにあり、異なる目標を目指しているため、コミットは複数です。これらの変更によるコミットがハッシュ値ab001 to ab005(5つのコミット)であるとします。そして、私は一連のパッチを作成し、レビューのためにコミュニティに送ります。

はその間、私はマスターレポは、ビットを終了し変更されたことを認識し、私はリベースする必要があるとします。私はそれをして、すべての葛藤を解決する。今これは別のコミットにつながり、ab006と言うことができます。

すべてが良好です。

しかし、次の日、私は以前のパッチ(それらの5つのコミットして1)にコメントやアドバイスを得ることができます。そこで、私はこれらのコメントに応じていくつかの変更を加え、古いパッチのv2(バージョン2)(つまり5つのコミット)を送信しなければなりません。だから私はこれら5つのコミットをコミットせず、変更を加えて再度コミットし、別のパッチを作成しなければなりません。リベースがあるので

は、どのように私はHEADにコミット、私はuncommitことはできませんが、これをやって行きます。私は本当にこれについて混乱しています。

+0

gitのドキュメントには、あなたが持っているものを修正するのではなく、新しいコミットに変更を加えなければならないことが示唆されています。 「Upstream Rebaseからの回復」、https://git-scm.com/docs/git-rebase – declan

+0

@declan、Trueを参照してください。しかし、小さな変更や提案のたびに、増分コミットを送ることはできません。それは見苦しいように見え、校閲者は(マージされていないので)以前の変更の把握を失います。 – Haris

+0

もちろん、十分です。 – declan

答えて

2

マスターからrebaseを元に戻してから、ab001ab005に変更することができます。

git log 

# commit ab005 
# Fifth commit on the topic branch 
# ... 
# 
# commit ab001 
# First commit on the topic branch 
# 
# commit xy999 
# Last commit on master before I started this new branch 

git reset --hard xy999 
git cherry-pick ab001 
... 
git cherry-pick ab005 

あなたの履歴はクリーンで、トピックブランチコミットを修正できます。必要に応じて、リベースをマスターにやり直すことができますが、可能であれば、このブランチの作業が完了するまで待つことをお勧めします。

関連する問題