1. ホーム
  2. git

[解決済み] 誤ったブランチへのGitプル

2023-05-30 01:22:45

質問

私ともう一人の開発者は、自分の作業をツールワークと呼ばれるマスターではないブランチにマージしてプッシュしていました。そうすることで、チームの他のメンバーに影響を与えないようにしたのです。私のトピックブランチは 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 マンページ (pullを行っただけの場合)。

マージやプルを元に戻す

$ 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)

<ブロッククオート
  1. 上流から更新しようとした結果、多くのコンフリクトが発生しました。今すぐマージに多くの時間を費やす準備ができていなかったので、後で行うことにしました。
  2. " pull はマージコミットをしていないので、" git reset --hard と同義語である " を使用します。 git reset --hard HEAD "は、インデックス ファイルと作業ツリーから混乱をクリアします。
  3. トピック ブランチを現在のブランチにマージし、その結果、早送りが発生しました。
  4. しかし、そのトピックブランチはまだ公開する準備ができていないと判断しました。

    "pull" または "merge" は常に現在のブランチのオリジナルの先端を残します。 ORIG_HEAD を残すので、これにハードリセットすると、インデックスファイルと作業ツリーがその状態に戻り、ブランチの先端がそのコミットにリセットされます。

参照 HEADORIG_HEAD を追加してください。