3

何か奇妙なことが起こった — 私の開発ブランチは、最後のコミットまでの履歴をすべて失ってしまった. 誰でも理由を提案できますか?

私が最後に行ったこと — フォークした Brotherbard GitX をインストールし、それを使い始めました (主に履歴の表示用ですが、マージも試みました)。しかし、開発がマスターから見つめられて並行して進む前に、「feature-shape-fill」ブランチが開発に2回マージされました。また、開発中に git stash を実行しました。

現在、develop ブランチの git log には、最後のコミットのみが表示されます。「切り離された」などとは言いません。

* GitX (公式およびこのフォーク) はすでに恐れています。先週の奇妙な出来事も同様に発生したためです — バイナリ .fla ファイルは、いくつかのコミットで過去の夜に保存されていません。すべてのテキスト ファイルは問題ありませんでしたが、そのバイナリは 4 つのコミットのように遅れていました。ブランチを切り替えている間、他の作業ディレクトリはまったく更新されませんでした (私はコンソールで作業していましたが、git はエラーについて何も言いませんでした。彼にとっては問題ありませんでした)。それがgitxと関係があるのならドンノ?

upd:ここで言及されているのと同じ問題のようですhttp://groups.google.com/group/gitx/browse_thread/thread/71a0f759d115fee5 ここに私が得たものがあります:

$ git reflog
157cfca HEAD@{0}: checkout: moving from feature-shape-fill to develop
46a6163 HEAD@{1}: checkout: moving from develop to feature-shape-fill
157cfca HEAD@{2}: commit: Rotated drag tip
7f6c394 HEAD@{3}: commit: TextShapesCanvas is working,
4765eed HEAD@{4}: merge feature-shape-fill: Merge made by recursive.
ed44a2c HEAD@{5}: checkout: moving from feature-shape-fill to develop
46a6163 HEAD@{6}: commit: More tight packaging (thnx to TextLineMetrics),
59b6d2d HEAD@{7}: checkout: moving from develop to feature-shape-fill
ed44a2c HEAD@{8}: merge feature-shape-fill: Merge made by recursive.
67d08b3 HEAD@{9}: commit: Basic grid functionality, need to add text shapes and fix resize-generation
505479c HEAD@{10}: checkout: moving from feature-shape-fill to develop
59b6d2d HEAD@{11}: commit (amend): Simple retrovirus non-optomized algorithm
5ec1b70 HEAD@{12}: commit: Simple retrovirus non-optomized algorithm
b9eaf18 HEAD@{13}: commit: The most ugly suitable version of fill algorithm
757f1b7 HEAD@{14}: checkout: moving from feature-shape-fill-predefined to feature-shape-fill
757f1b7 HEAD@{15}: checkout: moving from feature-shape-fill to feature-shape-fill-predefined
757f1b7 HEAD@{16}: checkout: moving from feature-shape-fill-auto to feature-shape-fill
b8e284f HEAD@{17}: commit: Auto fill first steps
757f1b7 HEAD@{18}: checkout: moving from feature-shape-fill to feature-shape-fill-auto
757f1b7 HEAD@{19}: commit: Test document created, components::TextShape base draft
505479c HEAD@{20}: checkout: moving from develop to feature-shape-fill
505479c HEAD@{21}: checkout: moving from master to develop

それらは失われていないように見えますが、どうすれば私の履歴を取り戻すことができますか?

4

3 に答える 3

2

develop私が間違っていなければ、あなたが与える写真はあなたの枝が切り離されていることを示しています。

ブランチに基づいていることを理解しているのでmaster、マスター ブランチに戻すことができます。

git rebase master develop

重要.git:上記を試す前に、最初に元のディレクトリのバックアップを作成してください。

develop2一時的なブランチを作成してそこmasterにマージすることでも、同様の結果を得ることができますdevelop

git checkout -b develop2 master
git merge develop

お役に立てれば!試したことがないので、上記を試す前にまずディレクトリをバックアップしてください.git!

于 2010-12-18T13:41:35.593 に答える
0

開発ブランチがどのように変更されたかの履歴を表示するには、次を使用します。

git reflog show develop

次に、機能していた最後のコミットが見つかるまで、SHA によって (または、develop@{1} などの位置によって) チェックアウトするか、ブランチ/タグを古いコミットに追加します。例えば:

git branch test 7f6c394

ログを見ると、これらの他のコミットも開発の一部であるようです: ed44a2c、67d08b3、505479c

開発ブランチを最後の適切なコミットに移動します。他のコミットをチェリーピックして戻すことができるかもしれませんが、実際にはエラーの原因によって異なります。

于 2010-12-18T15:45:50.023 に答える
0

私はまったく同じ問題を抱えていました。コミットの親SHAが何らかの形で設定されておらず、コミットはプロジェクト履歴の外に存在するように見えました。EOL によって提供される最初のオプションは、コミットを履歴に戻しますが、ブランチ履歴はすべて失われます。(少なくとも、それは私にとってはそうでした。) 私が最終的に行ったreflogことは、私の貴重なブランチをリンボに送る前の最後のコミットを探すことでした。私が見た行は次のようになりました。

6d79889 HEAD@{24}: checkout: moving from online-payment-processing to gift-certificates
3da6ec3 HEAD@{25}: commit: fix computation of when to skip processing for special orders

基本的に、コミットは別のブランチのチェックアウトに続きます。(私の場合、ブランチonline-payment-processingは宙に浮いたブランチであり、'moving from' メッセージは、以前のコミットが私のブランチにあることを保証しました。) 私は、HEAD でのコミットが台無しにされたものであることを知っていました (とは対照的に)歴史をさらに遡る)ので、次のコマンドを発行しました。

git rebase 3da6ec3 online-payment-processing

そして...うんざり...それは(いくつかの競合解決の後)修正さ、ブランチ履歴が復元されました。

于 2013-01-19T00:57:50.093 に答える