2012-03-18 16 views
0

Gitフィルタツリーは、.git/refs/original/refs/heads/tmpにバックアップを保存すると便利です。しかし、私はそれから復元する方法に関する指示を見つけることができません。それ以来私はリポジトリに触れていない - 私はちょうどその特定の操作の知恵について私の心を変えた。refs/original/refs/heads/tmpのリカバリ方法は?

答えはファイルコピーかgit update-refですが、これらはかなり破壊的な操作であり、間違っているとは思わないです。ここで

答えて

0

は、そこから他のすべて知っている事は、流れています:git gc(同様んgit gcだけでなく、物事を)やってたときに、gitのは何を削除することはありません除いて、それしか新しいものが追加されます。 (:http://blog.kfish.org/2010/04/git-lola.htmlgit lolaから、これが切り取られると、わずかに変更された出力)

* 9d2e82c handle another temporary failure mode 
| * 2afb8a0 (resubmit) checkpoint: resubmit 
| * 90dcfbb move definitinon of GRONK to sysdefs 
|/ 
* 1ba7847 treat XML login errors as temporary failures 

のは、あなたがこのようになります枝を持っているとしましょう。今私は私のブランチ(1234567と7654321、または何でも)に2つの新しいコミットがあるように、間違ったfilter-branchのような私の "再サブミット"ブランチに何かをしたと言う。私は、ああ、私は何かを完全に壊してしまったことを理解しています。そして、私は、そのブランチの元の先端である2afb8a0をコミットすることを指すように戻すことを欲しがります。コミット

はgitのでまだで、少なくとも数ヶ月間となります(インスタンスのためにそれにgit logをやってユーザに見える支店名original/refs/heads/tmp -tryを持っているので、もはや、あなたはそれがあります表示されます) 。あなたのケースではコミットIDを簡単に見つけることができます。名前はoriginal/refs/heads/tmpです。そこにブランチポイントを設定します。あなたが名前を持っていなかった場合は、(上記の私自身など)git branch -d resubmit、その後git branch resubmit 2afb8a0を行うことができますが、あなたはこれを行う:

git branch -D tmp 
git branch -m original/refs/heads/tmp tmp 

は、あなたの現在のtmpを削除し、tmpに改名1戻って名前を変更します。

filter-branchが最近追加された新しいコミット、あなたはまだあなたのリポジトリになり、結局好きではない。あなたは約3ヶ月で期限が切れるでしょう、ユーザー可視名を削除した後は決まっていること、その後、git gcが削除されます)。

+0

ああ、バックアップは他のどのようなものでもあります。それは私が欠けていたビットです。 :) –

+0

ああ、はい、それを置くには良い方法です。しかし、あなたがref名を失ったとしても、そこにコミットが残っていても、見つけにくくなります。 – torek

関連する問題