私自身と他の1人の開発者は、ツールワークと呼ばれる非マスターブランチに作業をマージしてプッシュしていました。そのようにして、チームの残りの部分に影響を与えませんでした。私のトピックブランチはDPM-93と呼ばれ、私のgitワークフローはこれでした。
# do some work
git checkout DPM-93
git commit -m "did some work"
# catch up
git checkout toolwork
git pull Origin toolwork
# rebase my topic branch
git checkout DPM-93
git rebase toolwork
# merge and Push my changes
git checkout toolwork
git merge --no-ff DPM-93
git Push Origin toolwork
これらのgitコマンドを誤って発行するまで、それはほとんど正常に機能していました
git checkout toolwork
git pull Origin master
その時点で、ブランチツールワークに大量の新しいものが現れました。ワークスペースを削除してレポジトリから再度クローンを作成する以外に、それを取り除く方法がわかりません。
これをプル前の状態に戻す方法はありますか?
git reset --hard ORIG_HEAD
git reset
manページ から(プルを行った場合):
マージまたはプルを元に戻す
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
- アップストリームから更新しようとすると、多くの競合が発生しました。現在、マージに多くの時間を費やす準備ができていなかったため、後でマージすることにしました。
- 「
pull
」はマージコミットを行っていないため、「git reset --hard
」の同義語である「git reset --hard HEAD
」は、インデックスファイルと作業ツリーから混乱を取り除きます。- トピックブランチを現在のブランチにマージして、早送りしました。
- しかし、あなたはトピックブランチがまだ一般消費の準備ができていないことに決めました。
「pull」または「merge」は、常に現在のブランチの元の先端をORIG_HEAD
に残すため、ハードにリセットしますインデックスファイルと作業ツリーをその状態に戻し、ブランチの先端をそのコミットにリセットします。
詳細については、 HEAD
およびORIG_HEAD
を参照してください。
マスターブランチをリセットします。
git reset --hard Origin/master
git log
を使用してtoolwork
ブランチの先頭にしたいリビジョンのSHA-1を見つけてから、git reset --hard <SHA1>
を使用して作業コピーをそのリビジョンに戻すことができます。
最初にすべてをバックアップしてください!そして、git reset
のmanページを読み直して、あなたが望むことをしていることを確認してください。
編集:そうそう、ORIG_HEADには正しいSHA-1が含まれているはずです。しかし、最初に確認してください。
私は最近同様のことを行い、 この答え に基づいたよりシンプルなソリューションを使用しました。
に戻したいtoolwork
ブランチの状態がOrigin
にプッシュされたと仮定すると、単にやる
git fetch Origin
git reset --hard Origin/toolwork
私の場合、ORIG_HEAD
の値は別のブランチでの別のマージによって上書きされていたため、これを行うことで、ログで正しいコミットを検索することを心配する必要がありませんでした。
私のために働いたのは単純です
git reset --hard
不幸なマージ/プルでローカルリポジトリからこれを行いました:
Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2|MERGING)
$ git reset --hard
HEAD is now at 2d5a511 [last commit comment]
Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2)
$