私のソース/リポジトリがgit pullする前の古い状態になるようにgit pullを元に戻す、または元に戻す方法はありますか?そうしたくないファイルをいくつかマージしたが、他の残りのファイルだけをマージしたので、これを行いたい。それで、私はそれらのファイルを取り戻したいです、それは可能ですか?ありがとう:)
明確にするためにgit mergeを元に戻したい。いくつかの答えを見た後、私はこれをしました
git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...
さて、どうすればいいですか。 git reset --hard
を実行しても大丈夫ですか?私はもう一度それをねじ込みたくないので、詳細な手順を尋ねますか?
git pull
は2つのことをします:それはgit fetch
を行い、それからgit merge
を行います。ここで、設定でマージされるように設定されたブランチをマージします。
ですから、あなたがしたいのはマージを元に戻すことです(フェッチを元に戻すことはあまり意味がないので必要ではないはずです)。
これを行うには、git reset --hard
を使用して前の状態にリセットします。 git-reflog コマンドを使用して、前の状態のSHA-1を見つけてからリセットします。
警告 :git reset --hard
はコミットされていない変更をすべて削除します。
Jkpの答えと同じですが、完全なコマンドは次のとおりです。
git reset --hard a0d3fe6
することによってa0d3fe6が見つけられるところ
git reflog
元に戻したいポイントを見てください。
マージを取り消すより現代的な方法は次のとおりです。
git merge --abort
そして少し古い方法:
git reset --merge
以前の回答で説明した古い方法(警告:ローカルの変更をすべて破棄します):
git reset --hard
ただし、実際には、git merge --abort
が存在する場合、git reset --merge
はMERGE_HEAD
とのみ同等であることに注意してください。これは、gitコマンドのmergeコマンドで読むことができます。
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
が日常業務ではるかに有用であると思う理由です。
それは最初の使用で動作します:git reflog
あなたの前の状態のSHAを見つけて、作ってください(HEAD @ {1}は一例です)
git reset --hard HEAD@{1}
Gitkを使っているなら( "gitコマンドラインから" gitk --all "を実行してみてください)、それは簡単です。それを実行し、ロールバックしたいコミットを選択(右クリック)して、「マスターブランチをここにリセット」を選択してください。コミットされていない変更がない場合は、 "hard"オプションを選択してください。
$COMMIT
を実行する前に、git pull
が最後のコミットIDだったとします。最後のプルを元に戻すために必要なのは
git reset --hard $COMMIT
。
プルについて言えば、私は興味深いトリックを共有したいと思います、
git pull --rebase
このコマンドは私のgitの人生で最も便利なコマンドで、多くの時間を節約しました。
新たにコミットをサーバーにプッシュする前に、このコマンドを試してください。そうすると、最新のサーバーの変更が自動的に同期され(フェッチ+マージ)、gitログの一番上にコミットが置かれます。手動のpull/mergeについて心配する必要はありません。
で詳細を見つける: http://gitolite.com/git-pull--rebase
git reset --hard ORIG_HEAD
できます
"pull"または "merge"なので、これらのアクションを実行する前にORIG_HEADを現在の状態に設定してください。
これは、あなたがプルした変更を元に戻す最も簡単な方法です。
git reset --hard 9573e3e0
9573e3e0
はあなたの{Commit id}です
git pull
を元に戻したい最も一般的な理由であるマージに失敗した場合、git reset --merge
を実行すると、フェッチしたファイルを保持しますが、git pull
マージしようとしました。そうすれば、git merge
が時々生成する混乱なしに、何をすべきかを決定できます。また、他のすべての回答で必要な--hard
が必要とする正確なコミットIDを見つける必要はありません。