[解決済み】gitの履歴から特定のリビジョンを削除する方法とは?
質問
gitの履歴がこのようになっているとします。
1 2 3 4 5
1~5は別リビジョンです。1、2、4、5を残したまま、3を削除する必要があります。どうすればいいのでしょうか?
削除するリビジョンの後に数百のリビジョンがある場合、効率的な方法はありますか?
どのように解決するのですか?
リビジョン3と4を1つのリビジョンにまとめるには、git rebaseを使用します。リビジョン 3 の変更を削除したい場合は、対話型リベースモードで edit コマンドを使用する必要があります。変更を1つのリビジョンにまとめたい場合は、squash を使用してください。
私はこのsquashのテクニックをうまく使っていますが、これまでリビジョンを削除する必要があったことはありません。git-rebase ドキュメントの "コミットの分割" を読めば、うまくいけば十分理解できるはずです。(あるいは他の誰かが知っているかもしれません)。
から git ドキュメント :
そのまま保持したい一番古いコミットから開始します。
git rebase -i <after-this-commit>
現在のブランチにある、指定したコミットより後のすべてのコミット(マージコミットは除く)がエディタに表示されます。このリスト内のコミットは好きなように並べ替えることができ、また削除することもできます。リストはだいたいこのような感じになります。
<ブロッククオートpick deadbee このコミットのワンライン pick fa1afe1 次のコミットのワンライン ...
git-rebase はこの記述を見ずにコミット名 (この例では "deadbee" と "fa1afe1") を見るので、この名前を削除したり編集したりしないでください。
コマンド "pick" をコマンド "edit" に置き換えることで、そのコミットを適用した後に git-rebase を停止させ、ファイルやコミットメッセージを編集してコミットを修正し、リベースを続行できるようになります。
2つ以上のコミットを1つにまとめたい場合は、2つ目以降のコミットで "pick" コマンドを "squash" に置き換えてください。2 つのコミットの作者が異なる場合、squash されたコミットを最初のコミットの作者に帰属させます。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] ファイルをリセットしたり、特定のリビジョンに戻したりするにはどうすればよいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルの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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】fatal: 有効なオブジェクト名ではない: 'master'
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み】Git サブモジュール head 'reference is not a tree' エラー
-
[解決済み】未マージファイルがあるため、Gitマージができない
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] git commit signing failed: secret key not available.
-
[解決済み] "fatal: This operation must be run in work tree." というメッセージが表示されるのはなぜですか?
-
[解決済み] 特定のコミットを削除する
-
[解決済み】Git リポジトリから選択したコミットログエントリを、その変更を維持したまま削除する方法とは?