かつては、diffとの間のすべての犯にかけて発生した二日Git?
質問
ただすべての犯発生したとか?にSVN、次のように
svn diff -r{date}:{date}
にしてもらいましょう!ないのですが見Gitと同等です。
具体的にはうって文章を書くのスクリプトへの送付の日常のメールはすべてのコードを犯その日によります。
解決
他のヒント
前回提案して問題点がありました。基本といたしが探していたものと同等の cvs diff -D"1 day ago" -D"2010-02-29 11:11"
.を収集する情報、さらには解決策です。
私た:
git whatchanged --since="1 day ago" -p
から こちらのここのdiffのための各コミットも複数ある場合は為の一つのファイルです。知っている "日付"の"スポーツは世界共通ルールなのでゆったりコンセプトgit, 思ったことがある方もよろしくお願いします。
git diff 'master@{1 day ago}..master
あ警告warning: Log for 'master' only goes back to Tue, 16 Mar 2010 14:17:32 +0100.
しない全ての負荷を.git format-patch --since=yesterday --stdout
いませんでした。revs=$(git log --pretty="format:%H" --since="1 day ago");git diff $(echo "$revs"|tail -n1) $(echo "$revs"|head -n1)
作品がなんだかもう複雑な制限の電流ます。
最後に:
git diff $(git rev-list -n1 --before="1 day ago" master)
うと デフォルトいいのではないでしょうか, が複雑になりえているのだと思っていた。
所狭しと配置さ,git-cvsserver対応していないcvs diff-D"なしで記録されど).
「日付」はgitで緩い概念のビットです。誰かが実際に引く前に、過去にもいくつかの時間であってもよい著者の日付を持っていますコミット/も明らかに新しいコミットの上にあることをリベースして更新することができるコミット、そのリポジトリにコミットコミットします。
Aもコミットが何らかの方法でリベースまたは改正された場合に更新されるコミットの日付を持ってコミットします。これらのコミットは、年代順のいくつかの並べ替えである可能性が高いですが、あなたは自分のコンピュータに設定された正確な時間を持つコミッターのなすがままに残っていると、そうであっても、変更されていないが、前に無期限にリモートリポジトリに機能ブランチの上に座ることができますコミット中央リポジトリのmasterブランチにマージされます。
何おそらくあなたの目的のために最も有用であることは問題の特定のリポジトリにREFLOG日です。あなたは(git config core.logAllRefUpdates
を参照)が有効ごとのブランチreflogsを持っているなら、あなたは分岐が特定の時間にあった場所を参照するためにref@{date}
構文を使用することができます。
例えばます。
git log -p master@{2009-07-01}..master@{now}
また、同様に 'ファジー' の記述を使用することができます:
git log -p "master@{1 month ago}..master@{yesterday}"
これらのコマンドは関係なく、彼らが実際に彼らの著者によると日付をコミットする方法を「古い」のリポジトリの特定のブランチに「登場」したすべてのコミットを表示します。
あなたはクローン上のログコマンドを実行している、とあなたは月に(例えば)のために引っ張っていないので、もしその後、先月のためにすべての変更を引っ張って、あたりの分岐REFLOGがリポジトリに固有であることに注意してください一度、その後、先月のすべての変更は、@{1 hour ago}..@{now}
の範囲で表示されます。あなたは、人々がにプッシュ「中央」repostoryのログコマンドを実行できる場合、それはあなたがやりたいことがあります。
git diff --stat @{2013-11-01}..@{2013-11-30}
または
git diff --stat @{2.weeks.ago}..@{last.week}
おそらく
$ git format-patch --committer=<who> --since=yesterday --stdout
あなたが(または '--stdout' なし)何をしたいのですか?
私は一般的なソリューションを使用することであると考えています:
git rev-list -n1 --first-parent --until=<a date string> <a ref>
--first-親がなければ、後でa ref
にマージされましたが、a date string
のようマージされていなかったブランチからコミットし得る可能性があります。
ここでは代わりに--children
のgrep
と-n1
を使用する代替です。
mlm_git_ref_as_of() {
# # Examples #
#
# Show all commits between two dates:
#
# git log $(mlm_git_ref_as_of '2012-05-21 09:00:00-0400')..$(mlm_git_ref_as_of '2012-05-21 17:00:00-0400')
#
# Show diffs of all commits between two dates:
#
# git diff $(mlm_git_ref_as_of '2012-05-21 09:00:00-0400')..$(mlm_git_ref_as_of '2012-05-21 17:00:00-0400')
local as_of="$1"
local ref="${2:-HEAD}"
# Get the most recent commit (--children, grep -v ' ') that was on
# the given branch ($ref, --first-parent) as of a given date
# ($as_of)
git rev-list --children --first-parent --until="$as_of" "$ref" | grep -v ' '
}
私はこのQ&Aを読む前にgit whatchanged
に慣れていなかったが、それは私にとって非常に異なる結果を与えるので、私はそれがやっているかわからないんだけど。
もう一つの簡単なるときのdiffの変化から一定の日である、最初のコミット X
発生した又はその期日以降は、その利用
git diff X
このことによって、潜在的に持てる力を十reflogエントリに新鮮なクローンとは異なり、
git diff <reference>@{n}..
git log <reference>@{n}..
ソリューション
これは面白い答えにあがります。このまですべてのコミットハッシュは、今でも当てはまります。
git log --pretty="format:%H %ai" | grep `date +"%Y-%m-%d"` | awk {'print $1'}`
;·)
また、のgit-フォーマットを使用することができますパッチ(差分)を作成し、電子メールを介してそれらを送信するために-patchするます。
コミット範囲を指定するオプション[以降]または[リビジョン範囲]を使用します。
私はそれを行う方法でスローされます:
日付のgit log
は、現在のブランチのハッシュをコミットできます。その後、私はちょうど私にファイル別に集計し、適切な差を与えるgit diff 8fgdfg8..565k4l5
のようなものを使用します。これは
見るため、ファイルの変更日から日までにお支店以下の式:
- レジにおさい。
- プロジェクトを更新からの変更リモートリポジトリ
- 見diffファイルから日時範囲
例:
git checkout <branch>
git pull
git diff --stat @{fromDate}..@a{toDate}
注目の日に YYYY-MM-DD フォーマット:
git diff --stat @{2019-08-20}..@a{2019-08-21}
ただの観察 変化を特定のファイルの特定の時間範囲 (時計のdiffコード)は、ナビゲートの現在のファイル:
例:
git diff @{2019-01-01}..@{2019-01-02} ~/dev/myApp/package.json