cvs diff -D "1 days ago"
gitのCVS機能をマッピングしようとする質問がいくつかあります。
Git-2回の間にマスターブランチで変更されたすべてのファイルを一覧表示するにはどうすればよいですか?
Gitで2つの日付の間に発生したすべてのコミット間の差分を取得するにはどうすればよいですか?
しかし、この質問のコメントからの私の理解から:
実行git diff --name-only master@{"5 day ago"} master
はマシンに対してローカルであり、マスターへのマージに関する問題を解決できません。
私はgit whatchanged
別の質問(git whatchangedからファイル名を抽出するためのBashスクリプト)を使用する必要があると考えています。
git show --pretty="format:" --name-only HEAD^
しかし、せいぜい、特定の日付内にある特定の参照のさまざまなgit出力を解析し、それらの参照を他のgitコマンドにリダイレクトして、それらの参照で変更されたファイルを分離し、最後に連結するために、やや壊れやすいスクリプトを作成する必要があると考えているようです。結果。
これはやや基本的な機能だと感じているので、これがgitによってまだ提供されていないことにショックを受けました。特に、上記の質問から、gitはcvs diff -D "1 days ago"
CVSの素晴らしい利点を完全に再現していないためです。 gitの何か、そしてまあ、私は人類へのすべての信頼を失いました。
誰かが私が間違っていることを証明できますか?一定期間以降、マージまたはコミットを介してマスター内のファイルが更新されているかどうかを確実に照会する方法はありますか?
問題
これが私がここに私を導いたことです:
- リポジトリにいくつかのコミットを行い、それらを元の場所にプッシュします
- 次に、ベアリポジトリを取得して、
cp -r --preserve
- このコピーされたベアリポジトリから、実行します
git clone copy_of_everything
copy_of_everything
実行中git diff --name-only master@{"5 day ago"} master
、またはステップ1でこれらのコミットを行ってからどれだけ長い時間が経過したか。
少なくとも私がgit diff --name-only master@{"5 day ago"} master
行ったように、クローンを実行してから実行されていないコミットを見つけることができません。
これはとても受け入れがたいように思われるものです。ログには、私が知っておくべきことを長い形式で教えてくれますが、私が知っている1つか2つのコマンドでは、特定の日付以降に変更されたファイルを教えてくれません。
アップデート1
sleskeのコメントは頭に釘を打ったようです。git diff --name-only master@{"5 day ago"} master
、reflogに基づいているのは、リポジトリの状態に対するローカルの変更に基づいているため、お勧めできません。
それで、良い代替案はありますか?
また、そもそもこの質問で私をこの方向に向けてくれたUser:qqxに敬意を表します。
アップデート2
そこには。そして、slekeの(現在受け入れられている)答えがその理由を説明しています。
要するに、私は実行する必要がありました:
git diff --name-only $(git log --until="1 days ago" -n1 --format=%H master ) master
人類への信仰が回復しました。