途中のコミットに新しい変更を追加する方法は、トップコミットに追加しないことです。Gitの途中でコミットに変更を加える
git log
commit1 <--- HEAD
commit2
commit3
commit3に直接変更を追加するには、commit1とcommit2を削除してからcommit3に変更を加えないでください。
stashを使用する必要がありますか?
可能であれば、リンクをご提供ください。
途中のコミットに新しい変更を追加する方法は、トップコミットに追加しないことです。Gitの途中でコミットに変更を加える
git log
commit1 <--- HEAD
commit2
commit3
commit3に直接変更を追加するには、commit1とcommit2を削除してからcommit3に変更を加えないでください。
stashを使用する必要がありますか?
可能であれば、リンクをご提供ください。
commit3のコピーである新しいブランチを作成します。変更を加えてコミットします。次に、そのブランチにcommit2とcommit1をマージします。
対話型のリベースを行う必要があります。詳細は、git rebaseのヘルプページを参照してください。短い答えは、あなたが先に進んでいつものように "中"の変更をコミットし、次にgit rebase -i HEAD~4
を実行することです。最後の3つのコミットのリストがテキストエディタに表示されます。最新のコミットが途中に置かれたコミットを並べ替えるだけで、エディターを保存して終了します。 Gitは新しい順序で履歴を再構築しようとします。それは紛争で止まるかもしれません。その場合は、マージ競合の場合と同様に修正し、すべて修正して追加した後にgit rebase --continue
を実行してください。それは紛争が発生したときにこれをすべて伝えるので、エラーメッセージを読んだだけで大丈夫です。
EDIT:実際には、既存のコミットを編集するように見えます。その場合は、エディタが起動したとき、あなたの新しい一時はcommit3し、「選択」から「スカッシュ」にコマンドを変更することが次のようにコミット移動:
pick 123456 commit3
squash 541343 tmpcommit
pick 654321 commit2
pick 431523 commit1
EDIT2を:ブランチとcommit1、commit2場合コミット3はすでに公開されているので、リベースしないでください。それでは、やはり、とにかくコミットを変更するべきではないので、全体的な疑問は気にならないでしょう。私は、これが民間の支店であると仮定しています。あるいは、他の人がリベースして巻き戻すことを期待しているものです。
あなたはgit-rebaseでこれを行うことができます、ポップアップするファイルで
git rebase -i commit3^
edit commit3
にpick commit3
を変更します。保存して終了し、変更を加えます。通常どおりにコミットしてからgit rebase --continue
を使用してください。作業が完了すると、commit3とcommit2の間に新しい変更が表示されます。
(これはSjoerdの答えと同じように動作します。それはそれについて考えてのちょうど別の方法ですcommit2と変更が競合した場合、あなたはどちらの方法であることを処理する必要があります。。)
も参照のhttp:/ /stackoverflow.com/questions/179123/how-do-i-edit-an-incorrect-commit-message-in-git –