Gitでのマージ試行の取り消し


88

ベンダーディレクトリ(#2)が含まれている作業ディレクトリ(#1)があります。composerなしで手動でプルしたい依存関係が1つあります(npm / gemのphpバージョン)。#2でライブラリを更新することにしたとき、私は#1で作業していて、変更を保存またはコミットしていませんでした。vendor / mynameに移動し、git pullレポジトリを作成しました。

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

今私が持っています:

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

フォルダ#1に加えた変更を失うことなく、この最後のgit pullを「元に戻したい」と思います。これどうやってするの?


コミットされていない変更がある場合、Gitはプルまたはマージを防止します。これが起こっていることを確認しますか?
CharlesB 2013

1
@CharlesBマージは中止されました。プロジェクトはジェットマージされません。私はプル前のgit防止について何も知りません...
ewooycom

回答:


167

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


6
古いgitバージョン:git reset --merge
razz0

それは機能しますが、役に立たないことに何も伝えません。やるgit statusconfirm.-する
aliteralmind

17

モダンGit:

git merge --abort

古い:

git reset --merge

オールドスクール(警告:ローカルの変更をすべて破棄します):

git reset --hard

しかし、実際に、それは注目に値するであるgit merge --abortだけに相当しgit reset --merge、与えられたMERGE_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、毎日の仕事ではるかに便利だと思います。


2

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

Matthieu Moy()によるcommit b0a61ab(2016年7月21日)を参照してください。(による合併Junio C浜野- -5a2f4d3コミット、2016年8月3日)をmoy
gitster

statusgit merge --abort必要に応じて「」を提案

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.