1

変更をコミットせず、その内容を読み取るためだけに使用するgitリポジトリがあるとします。時々、私はオリジンリモートからプルして、最新の変更を最新の状態に保ちます。

リポジトリのクローンを作成してからチェックアウトしたバージョンを知る方法はありますか?

なぜこれが必要なのですか?

私が抱えている問題は、リモートからプルすることがめったになく、プロジェクトが急速に進化することです。そのため、作業ディレクトリを元に戻したい場合に備えて、過去に使用した(つまりチェックアウトした)コミットを追跡したいと思います。それが私のために働いていたことを私が知っている状態に。覚えておいてください、私は実際にチェックアウトしたコミットにのみ興味があります。

更新: タグ(プルする前のタグ)でこれを実行できるようですが、 gitにタグのみを一覧表示させる方法がわかりません。それでも、私がチェックアウトしたコミットをgitがすでに追跡しているのではないかと思っていました。

4

7 に答える 7

6

これにはreflogを使用できますが、その制限までしか使用できません(時々消去されます)。たとえば、msysGit のローカル クローンでの簡単なテスト:

$ git log -g --oneline --abbrev-commit --grep-reflog "pull:"
53e28dd HEAD@{7}: pull: Fast-forward
947ccf6 HEAD@{9}: pull: Fast-forward
6bf64a4 HEAD@{10}: pull: Fast-forward
20344ae HEAD@{15}: pull: Merge made by the 'recursive' strategy.
31dd6ff HEAD@{36}: pull: Fast-forward
b4546cc HEAD@{37}: pull: Fast-forward
fd6f8d0 HEAD@{38}: pull: Fast-forward
4fc3780 HEAD@{41}: pull: Fast-forward

これは、過去数か月にわたってこのシステムでたまたま「プル」したコミット ID を示しています。git log -gのより詳細なバージョンですgit reflog

を実行するgit log -gと、提供されたセットから選択するのにより適切なものが表示される場合があります。チェックアウトが役立つ場合があります。

于 2013-01-09T23:37:51.943 に答える
1

参照@{-<n>}(など) は@{-1}@{-2}現在のチェックアウトの前にチェックアウトされた参照を示します。それらのリストを解析できる場合があります。

于 2013-01-09T23:36:32.127 に答える
0

これは、gitで見ているものに関するメタ情報のように見えます。これはgitの範囲外です。gitコマンドをラップして(gitアチーブメントと同じように)、セカンダリリポジトリバージョンのHEADファイルとHEADが最初のリポジトリを示すrefファイルを作成できます)

Reflogは、デフォルトで90日間のみ情報を保存します。これは変更できます。ただし、再クローンすると、この情報は失われます。

于 2013-01-10T00:02:42.580 に答える
0

s --author git logswitchはあなたが望むことをしますか?

于 2013-01-09T23:18:12.583 に答える
0

あなたが探しているものをあなたに与えますか、git statusそれとも与えませんか?git log

于 2013-01-09T23:11:22.753 に答える
0

私が理解しているかどうかはわかりませんgit reflogが、ブランチの先端を変更したローカル変更の履歴を示しています。

それはあなたが探しているものかもしれません。ただし、履歴の有効期間は限られており、git gc古いエントリは消去されます。

于 2013-01-09T23:20:18.260 に答える
0

でこれを達成することは可能だと思いますrebase。プル時にマージするのではなく、special_master追跡するがリベースする が必要です。masterその中に含まれるコミットは、pullある時点で明示的に編集したものだけです。

于 2013-01-09T23:39:00.273 に答える