[解決済み] git で特定のコミットを別のブランチに移動させるには?
2022-03-25 04:44:30
質問
状況を教えてください。
- マスターはXにある
- quickfix1 は X + 2 コミットです。
そのような
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
その後、quickfix2に取り掛かったのですが、誤ってmasterではなくquickfix1をコピー元のブランチとして取ってしまいました。現在、quickfix2 は X + 2 コミット + 2 関連コミットになっています。
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
\
q2a--q2b (quickfix2 HEAD)
ここで、quickfix2 を含むブランチから、quickfix1 に属する 2 つのコミットを削除したいのですが、どうすればいいですか?
q2a'--q2b' (quickfix2 HEAD)
/
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
quickfix2のあるリビジョンからパッチを作成しようとしたのですが、パッチではコミット履歴が保存されないのです。コミット履歴を保存しつつ、quickfix1には変更のないブランチを残す方法はないでしょうか?
解決方法は?
の典型的なケースです。
rebase --onto
:
# let's go to current master (X, where quickfix2 should begin)
git checkout master
# replay every commit *after* quickfix1 up to quickfix2 HEAD.
git rebase --onto master quickfix1 quickfix2
ということは
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
\
q2a--q2b (quickfix2 HEAD)
になります。
q2a'--q2b' (new quickfix2 HEAD)
/
o-o-X (master HEAD)
\
q1a--q1b (quickfix1 HEAD)
この作業は、クリーンな作業ツリーで行うのが最適です。
参照
git config --global rebase.autostash true
、特に
Git 2.10 以降
.
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Git でブランチからコミットを削除する
-
[解決済み】"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:コミットに何も追加されていないが、未追跡のファイルが存在する
-
[解決済み] git pull リモートブランチがリモートの参照先を見つけることができない
-
[解決済み】fatal: 有効なオブジェクト名ではない: 'master'
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
[解決済み] TortoiseGitで「git did not exit cleanly (exit code 128)」というエラーを解決するには?[クローズド]
-
[解決済み] git ls-remote と git ls-remote origin の違い。
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み] ある範囲のコミットを選んで、別のブランチにマージする方法は?
-
[解決済み] git pull "で保留中の変更を自動的にstashしたりpopしたりできますか?