私はちょうど何かダムをやった。私fooclientプロジェクトでは、私はちょうどでした:つまり無関係のプロジェクトからgit pullを元に戻すには?
git remote add official https://github.com/fooserver
git pull official master
を、私は私の作業ディレクトリに(代わりに、クライアントのサーバー、)完全に異なるコードベースを引っ張りました。驚くことではないが、マージの競合はあまりありません(ファイル名はまったく別のものです)。驚くことではないが、Gitは、レポに共通の祖先がひとつもいないことを私に警告することは全くできなかった。この特定の状況では
、私はこれを行うことによって回復することができるよ:cp file-i-worked-on.js ~
git reset --hard HEAD # to discard broken merge conflicts
git checkout a12345 # where a12345 is the latest head of fooclient that I had checked out
cp ~/file-i-worked-on.js .
しかし、何がより一般的な戦略でしょうか?
ああ - これは正解のように聞こえます。だからHEAD @ {...}では、HEADが指しているものの変更を追跡することができます。そして、あなたのコマンドは、「あなたが頭を悩ます直前に何を指していたのか知っていますか?そこに戻ってみましょう...」 - 非常に便利なツールのように聞こえます。 –
@SteveBennettはい!それはあなたがしたことを逆追跡しようとするよりも偶発的なコマンドを元に戻すほうがはるかに簡単なので非常に便利です。残念ながらそれはGitのよく知られている機能ではありません。 –