web-dev-qa-db-ja.com

Gitによるマージの取り消しの取り消し

ベンダーディレクトリ(#2)がある作業ディレクトリ(#1)があります。 composer(npm/gemのphpバージョン)なしで手動でプルしたい依存関係が1つあります。私は#1で作業していました。 #2でライブラリを更新するには、vendor/mynameに移動し、git pull repositoryを実行しました。

残念ながら、ベンダーフォルダに新しいディレクトリを作成する代わりに、プルして#1にマージし始めました。

今私が持っています:

  • 私の変更を含む#1フォルダー
  • #1間違ったリポジトリから不要なファイルを含むフォルダー
  • #1 composer.json、Readme.md ...などのマージ競合(一般的なファイル)

フォルダー#1に行った変更を失うことなく、この最後のgit pullを「取り消し」たいです。これどうやってするの?

75
ewooycom

git merge --abortはあなたが探しているものかもしれません。

148
aragaer

モダンGit:

git merge --abort

古い:

git reset --merge

Old-school(警告:ローカルの変更をすべて破棄します):

git reset --hard

ただし、実際には、git merge --abortが存在する場合、git reset --mergeMERGE_HEADとのみ同等であることに注意してください。これは、マージコマンドのgitヘルプで読むことができます。

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

マージに失敗した後、MERGE_HEADがない場合、失敗したマージはgit reset --mergeで元に戻すことができますが、必ずしもgit merge --abortではなく、同じものに対する古い構文と新しい構文のみ。個人的には、git reset --mergeが日常業務ではるかに役立つことがわかりました。

16
Martin G

Git 2.10(2016年第3四半期)では、git statusgit merge --abortオプションを提案するため、何をすべきかがわかります。

commit b0a61ab (2016年7月21日)by Matthieu Moy(moy を参照してください。
浜野潤夫-gitster- in commit 5a2f4d 、2016年8月3日)

status:必要に応じて 'git merge --abort'を提案します

競合するリベース中は、すでに「git rebase --abort」を推奨しています。
同様に、 'git merge --abort'の競合解決中に 'git merge'を提案します。

1
VonC