3

以下は、数分前に私に起こったことの短い再話です。すべてが良いです。私は今コードを見つけました。この状況に到達するために何が間違っていたのだろうかと思っています。今後は再発しないように学びたいと思います。

FWIW: 最近、いくつかのリベースを行っています。私は通常、この方法で操作することはありません。その答えは、不適切なリベースにあるのではないかと思います。見てみましょう。


発見

そのため、いくつかのコミットを実行したことを覚えているブランチに変更しました。確かに、ヘッドコミットは私が望んでいた変更を含むものです。しかし、私の変更はありませんでした!

代わりに、変更の一部のみが表示されます。:(

よく調べてみると、残りの変更は削除のみであることがわかりました。おそらくあなたと同じように、コミットを呼び出す前にすべての変更を追加しなかった可能性があり、それは私自身のせいだと思いました。

更新: 元のコミットには、いくつかの追加、いくつかの削除、およびいくつかの変更されたファイルが含まれているはずです。この新しい「リベース」コミットは、私が期待していたものから削除されているように見えました。

調査

私は最近、もう必要ないと思っていた隠し場所を落としました。おそらく私の変更はそこにありましたか?

私はこのSOの質問を見つけました.

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

同じ秒に作成された(伝えられるところでは)同じコミットの複数のバージョン(つまり、同じコミットメッセージを持つ)を見つけることができました

これらは 1 回以上のリベース操作中に生成されたコピーである可能性が高く、元のコミット日が与えられている可能性が高いため、これは理解できると思いました。

では、これはどのように可能ですか?

これが興味深いところです:

これらのコミットの 1 つは、他のコミットとは異なりました。これらのコミットの 1 つに、欠落しているデータがすべて含まれていました。

だから私の質問は...どうやってこれを達成したのですか? 利用可能なデータの半分を残す方法でリベースしましたか?

手がかり\理論はありますか?

更新: ここにたどり着くまでにどのような手順を踏んだかについて、コメントで尋ねられました。問題は、それが質問のポイントのようなものです。

説明が一致するが内容が一致しないコミットの 2 つ以上のコピーを作成するには、どうすればよいでしょうか?

私が使用した可能性のある作品についていくつかの提案をすることができますが、それはそれについてです. 私はいくつかの簡単なリベースを行っていました。つまり、ブランチにアクセスして実行しました:

git rebase master

また、さらに調査を行ったところ、正しいコミットが実際に最も早いことがわかりました。私は gitK を使用して調べましたが、作成者の横の日付は常に昨日の 11:50:35 です。後のリベースと一致するように見える別の日付 (コミット日) がありますが、使用したのは...

git rebase master 

...指定されたソース ブランチから

4

2 に答える 2

2

私や他の人たちの些細な質問はさておき、あなたの質問は、私が本当に意味するものだと思います (悪意なくこれを言います) 「私はどこにいて、どうやってここに来たのですか?」実際には非常に合理的であり、git の操作を学習するときに (経験豊富な git ユーザーでさえ、時々) よく出てきます。幸いなことに、あなたの正確な質問に答えるように設計された git コマンドがあります。それは:

git reflog

そのコマンドの出力 (最初の 50 行程度) を投稿できれば、このスレッドにもっと有益な回答が表示されるようになる可能性があります。

于 2013-03-07T17:52:46.280 に答える
0

最近、リベースに関する git リストに関する議論がありました。

  1. デフォルトではマージを無視します
  2. すでに「上流」にあるものはすべて無視します。削除はすでに行われている可能性があります。

rebase のドキュメントには、テキストに隠されている動作に関する多くの「余談」があり、注意して読む必要があります。

于 2013-03-07T17:59:06.843 に答える