[解決済み] まだプッシュされていない Git マージを元に戻す
質問
masterブランチの中で、私は
git merge some-other-branch
ローカルで、しかしオリジンマスターに変更をプッシュすることはありませんでした。マージするつもりではなかったので、元に戻したいのですが。ローカルで
git status
というメッセージが表示されます。
# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
いくつかの を発見しました。 を実行してみました。
git revert HEAD -m 1
というメッセージが表示されましたが、今は
git status
:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
自分のブランチが何コミット分も先に進んでしまうのは困ります。どうすれば元に戻せますか?
解決方法は?
と
git reflog
どのコミットがマージ前のものかをチェックする (
git reflog
よりも、より良い選択肢となるでしょう。
git log
). そして、それを使ってリセットすることができます。
git reset --hard commit_sha
また、別の方法もあります。
git reset --hard HEAD~1
1コミット分取り戻せます。
変更されたファイル、コミットされていないファイル、破棄されたファイルは、変更されていない状態にリセットされることに注意してください。
. それらを維持するには、変更を隠しておくか、あるいは
--merge
というオプションがあります。
以下の@Velmont氏の回答にあるように、この直接のケースでは、使用することです。
git reset --hard ORIG_HEAD
の方が、変更内容を保持できるため、良い結果が得られるかもしれません。
ORIG_HEAD
は、マージが発生する前のコミットを直接指すので、自分で探す必要はありません。
さらなるヒントは
--merge
スイッチの代わりに
--hard
というのは、不必要にファイルをリセットすることがないからです。
git reset --merge ORIG_HEAD
-- マージ
インデックスをリセットし、作業ツリー内の <commit> と HEAD の間で異なるファイルを更新しますが、インデックスと作業ツリーの間で異なるファイル(つまり、追加されていない変更があるもの)は保持します。
関連
-
[解決済み】複数のgitコミットを元に戻すには?
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] Git のローカルコミットを破棄する
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] リモートレポにプッシュされた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'ブランチの方法は?
-
[解決済み] git pull リモートブランチがリモートの参照先を見つけることができない
-
[解決済み】fatal: 有効なオブジェクト名ではない: 'master'
-
[解決済み】Gitのエラー。リモートリポジトリへの接続時に「Host Key Verification Failed」。
-
[解決済み】Gitマージで「すでに最新」と報告されるが、違いはある
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
[解決済み] 複数のコミットをチェリーピックする方法
-
[解決済み] git stashを元に戻す
-
[解決済み] git ls-remote と git ls-remote origin の違い。