[解決済み】履歴に埋もれてしまったGitコミットを分割する方法は?
質問
履歴を書き換えてしまったので、変更を加えたいのですが、どうすればいいですか?問題は、2つの無関係な変更を含むコミットがあり、このコミットはローカルの(プッシュされていない)履歴で他のいくつかの変更に囲まれていることです。
このコミットをプッシュする前に分割したいのですが、私が見ているガイドのほとんどは、直近のコミットや、コミットされていないローカルの変更を分割することに関係しています。歴史に埋もれてしまったコミットに対して、それ以降のコミットを "re-do" することなくこれを実行することは可能でしょうか?
解決方法は?
コミットを分割するためのガイドがあります。 rebaseのマニュアルページで . 簡単にまとめると
-
対象のコミットを含むインタラクティブなリベースを実行する (例.
git rebase -i <commit-to-split>^ branch
を編集するようにマークしてください。 -
リベースがそのコミットに到達したら
git reset HEAD^
を実行すると、コミット前にリセットされますが、作業ツリーはそのまま維持されます。 -
必要な回数だけ変更を追加してコミットします。
add -p
は、あるファイルの一部の変更点のみを追加するのに便利です。使用方法commit -c ORIG_HEAD
は、特定のコミットに対してオリジナルのコミットメッセージを再利用したい場合です。 -
コミット内容をテストしたい場合 (いい考えです!) は
git stash
でコミットしていない部分を隠します (あるいはstash --keep-index
を実行する前に)、テストし、そしてgit stash pop
で残りを作業ツリーに戻します。すべての変更をコミットし終えるまで、つまり作業ツリーがきれいになるまで、コミットを続けましょう。 -
実行する
git rebase --continue
を実行すると、分割されたコミット以降のコミットの適用が進みます。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git revert <hash> not allowed due to a merge but no -m option was given.
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み】gpgがデータの署名に失敗した fatal: failed to write commit object [Git 2.10.0].
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] SourceTree error:1407742E:SSLルーチン:SSL23_GET_SERVER_HELLO:tlsv1警告プロトコルバージョン
-
[解決済み] エラーです。リベースを使用してプルできません。あなたはステージングされていない変更を持っています
-
[解決済み】Gitで最後のコミットを2つに分割する方法
-
[解決済み】GitのHEADとORIG_HEAD