[解決済み] 前のコミットを複数のコミットに分割する
2022-03-19 23:30:28
質問
ブランチを作成し、新しいブランチでいろいろな作業をすることなく、ローカルリポジトリにコミットした後に、一つのコミットをいくつかの異なるコミットに分割することは可能ですか?
解決方法は?
git rebase -i
がやってくれるでしょう。
まず、クリーンな作業ディレクトリから始めます。
git status
は、保留中の変更、削除、追加がないことを示す必要があります。
さて、どのコミットを分割するかを決めなければなりません。
A) 直近のコミットを分割する
最新のコミットを分割するには、まず。
$ git reset HEAD~
では、通常の方法で、必要な数だけコミットしてください。
B) もっと前のコミットを分割する
これには リベース つまり、履歴を書き換えることです。正しいコミットを指定するために、いくつかの選択肢があります。
-
もし3コミット前のものであれば
$ git rebase -i HEAD~3
ここで
3
は何回前のコミットかです。 -
数えたいと思うよりもツリーの奥にある場合、次のようになります。
$ git rebase -i 123abcd~
ここで
123abcd
は、分割したいコミットのSHA1です。 -
別のブランチ (機能ブランチなど) にいて、そこにマージしたい場合
master
:$ git rebase -i master
リベースの編集画面が表示されたら、バラバラにしたいコミットを探します。 その行の冒頭で
pick
を
edit
(
e
略して)。 バッファを保存して終了します。 これで、Rebase は編集したいコミットの直後で停止します。 次に
$ git reset HEAD~
通常の方法で、必要な数だけコミットしてください。
最後に
$ git rebase --continue
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] git rebase の取り消し
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] Gitブランチをmasterにマージする最も良い(そして最も安全な)方法は何ですか?
-
[解決済み] Git のブランチの一覧を最新のコミット順に表示するにはどうしたらよいですか?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
最新
-
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, fatal: リモートエンドが予期せずハングアップしました。
-
[解決済み】Git:コミットに何も追加されていないが、未追跡のファイルが存在する
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
Gitのプッシュでエラーが発生! [リモート拒否] master -> master (pre-receive hook declined) error: failed to push s...
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み】gitの「not something we can merge」エラーの解決方法
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] ssh-keygen' は内部コマンドまたは外部コマンドとして認識されません。
-
[解決済み] git: メッセージを入力している途中でコミットを中断する