[解決済み] masterブランチの「途中」コミットをポップアップしてゴミ箱に捨てたいのですが、どうすればいいですか?どうすればいいですか?
質問
例えば、以下のmasterブランチにおいて、前回のリベースにより2回目となったコミット af5c7bf16e6f04321f966b4231371b21475bc4da のみをトラッシュする必要があります。
commit 60b413512e616997c8b929012cf9ca56bf5c9113
Author: Luca G. Soave <[email protected]>
Date: Tue Apr 12 23:50:15 2011 +0200
add generic config/initializers/omniauth.example.rb
commit af5c7bf16e6f04321f966b4231371b21475bc4da
Author: Luca G. Soave <[email protected]>
Date: Fri Apr 22 00:15:50 2011 +0200
show github user info if logged
commit e6523efada4d75084e81971c4dc2aec621d45530
Author: Luca G. Soave <[email protected]>
Date: Fri Apr 22 17:20:48 2011 +0200
add multiple .container at blueprint layout
commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
Author: Luca G. Soave <[email protected]>
Date: Thu Apr 21 19:55:57 2011 +0200
add %h1 Fantastic Logo + .right for 'Sign in with Github'
維持する必要がある
- 最初のコミット 60b413512e616997c8b929012cf9ca56bf5c9113 です。
- 3 番目のコミット e6523efada4d75084e81971c4dc2aec621d45530 および
- 最後のコミット 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
2 番目のコミットだけを捨てる af5c7bf16e6f04321f966b4231371b21475bc4da
どうすればいいのでしょうか? ありがとうございます。 ルカ
どのように解決するのですか?
リベース または 元に戻す がオプションです。リベースは実際にそのコミットを履歴から削除するので、2 番目のコミットが存在しなかったかのように見えます。これは、master ブランチを他のリポジトリにプッシュしている場合に問題となります。この場合、リベースの後にプッシュしようとすると git は fast-forward でないマージを拒否する というエラーが発生します。
ブランチが他のレポと共有されている場合、リバートするのが正しい解決方法です。
git revert af5c7bf16
は af5c7bf16 が行った変更を単純に取り消す新しいコミットを作成します。この方法では、履歴は書き換えられず、ミスの明確な記録を維持し、他のレポはそのプッシュを受け入れます。
ここで、消去するための良い方法を紹介します。
git rebase -i <commit>^
これで、削除したいコミットの直前のコミットに移動します。対話型エディタには、その時点までのすべてのコミットのリストが表示されます。選んだりつぶしたりすることができます。この例では
を削除します。
のように、消したいコミットの行を削除し、ファイルを保存してください。Rebaseはその作業を終了します。
関連
-
git pull エラー: .git/FETCH_HEAD を開けない: パーミッションが拒否されました。
-
ファイル名が長すぎるため、作業ツリーをチェックアウトできない警告が表示されました。クローンには成功しましたが、チェックアウトに失敗しました。
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Gitブランチをmasterにマージする最も良い(そして最も安全な)方法は何ですか?
-
[解決済み] Git のコミットで変更点を確認するには?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] 複数のコミットを1つのスクワッシュされたコミットとして別のブランチにマージするにはどうすればよいですか?
-
[解決済み] あるブランチが既にmasterにマージされているかどうかを知るにはどうすればよいですか?
-
[解決済み] .gitignoreで特定のファイルを除外する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
hint: 現在のブランチの先端が hint: そのリモートカウントより遅れているため、更新が拒否されました。
-
fatal: パス仕様 'readme.txt' がどのファイルにもマッチしなかった Solution
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] 単一のgitコミットに対して設定されたユーザーを上書きする
-
[解決済み] Git のリモート HEAD を master 以外に指定するように変更する
-
[解決済み] ローカルのGitブランチをリモートレポにコピーする方法
-
[解決済み] Git の 'master' ブランチを 'release' にリネームするには?
-
[解決済み] git add を実行してもしなくても、ブランチを切り替えたときに自分の変更点(修正、追加、削除されたファイル)が表示され続けるのはなぜですか?
-
[解決済み] TortoiseGitを使ったチェリーピック