1. ホーム
  2. ギット

[解決済み】Gitで日付ごとにチェックアウトする方法は?

2022-03-25 04:30:50

質問

ソースコードに回帰する作業をしています。 Gitに次のように伝えたいと思います: "パラメータ化された日付/時刻に基づいてソースをチェックアウトする"。これは可能ですか?

また、現在のビューにステージングされた変更があり、それを失いたくありません。 理想的には、現在のソースと、以前の日付に基づく興味のあるバージョンとの間で切り替わるようにしたいです。

どのように解決するのですか?

現在の変更点を維持するために

コミットすることなく、自分の作業を隠しておくことができます。 git stash . あなたは を使用します。 git stash pop を使えば元に戻せます。あるいは、(このように カレト と言った) git commit を別のブランチに移動してください。

rev-parseを使った日付ごとのチェックアウト

を使用すると、特定の日付でコミットをチェックアウトすることができます。 rev-parse このように

git checkout 'master@{1979-02-26 18:30:00}'

利用可能なオプションの詳細については git-rev-parse .

コメントにあるように、この方法は履歴の中からコミットを見つけるために reflog を使用します。デフォルトでは、これらのエントリは 90日後に失効 . reflogを使用するための構文はそれほど冗長ではありませんが、90日間しか遡ることができません。

rev-listを使用した日付別チェックアウト

もう一つの方法は、reflogを使用しないものです。 rev-list で特定の時点のコミットを取得します。

git checkout `git rev-list -n 1 --first-parent --before="2009-07-27 13:37" master`

注意 --最初の親 は、マージによってもたらされたバージョンではなく、自分の履歴のみが必要な場合です。通常、これが必要です。