「7日前に作成されたもの; GitHubではどうですか?」


21

私はこのGitHubリポジトリこれをています

ここに画像の説明を入力してください

これは何を意味するのでしょうか?どうすれば「7日前に作成」し、「14時間前にコミット」できますか?


gitは、編集したファイルと実際にコミットしてプッシュしたファイル間のタイムスタンプを測定できますか?私はそのような機能の使用が表示されていないが、それは言葉遣いが...意味するものちょっとだ
セス・

@Seth最初はそう思っていましたが、Gitがタイムスタンプを使って何かをしているとは聞いていませんでした。
元に戻す

@Seth Gitはファイルのタイムスタンプを無視します。コミッターはを使用して、作成者のタイムスタンプをオンザフライで変更できcommit --date=ます。シュヴェルンは非常にうまく説明しています。
ADTC 14年

「元に戻す」「14時間前」と「14日前」を混同しないことを願っています。 m Gitが作成者のタイムスタンプをコミッターのタイムスタンプより大きく設定できないかどうかわからない。おそらく気にしません。
ADTC 14年

回答:


21

Gitには、作成者(コードを書いた人)とコミッター(リポジトリにコミットした人)という別の概念があります。同様に、両方に異なる日付が存在する場合があります。それらは通常同じです。

パッチの提出にメーリングリストを使用するプロジェクトのように、コードを書いたりパッチを提出した人がリポジトリへのプッシュアクセスを持っていない場合、主にそれらを異なるものにしたいでしょう。この場合、プッシュアクセス権を持つ人はパッチを適用しgit commit--authorand --dateスイッチまたはGIT_AUTHOR_NAME、GIT_AUTHOR_EMAILおよびGIT_AUTHOR_DATE環境変数(git-commit-treeに文書化されています)を使用して実行します

もう1つのケースは、使用git cherry-pickまたはgit rebaseです。コミッターはチェリーピックを行う人であり、著者は元のコミットの著者です。Gitは、作成者のIDと日付の設定を処理します。

リポジトリでこの情報を見ることができますgit log --pretty=fuller

commit 21550561941b078ea1862b882ec89f26696ff5bb (HEAD, origin/master, origin/HEAD, master)
Author:     thiagopnts <thiagopnts@gmail.com>
AuthorDate: Tue Nov 18 14:52:49 2014 -0200
Commit:     Thiago Pontes <email@thiago.me>
CommitDate: Tue Nov 25 09:46:58 2014 -0200

    open repository url if confirmed, closes #1

1
git rebaseまた、作成者の日付は同じままでコミット日付が更新されます。
cjm 14年

@cjmそうですね!リベースとチェリーピックはどちらもこの点で同じように動作します。それは理にかなっています、リベースは複数のチェリーピックと考えることができます。
シュヴェルン14年

1
メールからパッチを適用するために、メールメッセージから日付と作成者を自動的に取得するgit amもあります。
デルタブ14年

6

これは、Gitが日付でどのように機能するかと、GitHubの終了キーワードでどのように参照されるかが混在しているように見えます。

Gitはコミット日と作成日を区別します。でプロGitの 彼らは違いに少し行きます

作者は最初に作品を書いた人であり、コミッターはその作品を最後に適用した人です。そのため、パッチをプロジェクトに送信し、コアメンバーの1人がパッチを適用すると、両方がクレジットを取得します。つまり、作成者としてのコアメンバーとコミッターとしてのコアメンバーです。

そのため、コード自体は「ローカルで」「7日前」にコミット/記述されましたが、「14時間前」までコードに「適用」またはパッチ適用されませんでした。メッセージ。


2
私はそれをテストしていませんが、著者情報がGithubのクローズキーワードによって追加されたとは思いません。コミッターと著者のIDと日付は、コミットIDに組み込まれます。Githubがこれらのいずれかを変更すると、リモートエンドのコミットIDが変更されます。リモートリポジトリとローカルリポジトリは分かれます。作成者は、強制せずにプッシュまたはプルすることはできません。
シュヴェルン14年

2
コミットは、リモートにプッシュすることとは異なります。コミットを含め、Gitのほとんどすべてをローカルで実行できることに注意してください。最初にコミット(両方のタイムスタンプを提供)し、後でプッシュ(単にコミットをリモートにアップロードしますが、タイムスタンプは提供しません)できます。コミットがいつプッシュされたかを知ることは重要ではないため、「プッシュタイムスタンプ」はありません-何度でもプッシュおよびプルできます(そして頻繁にプッシュされます)。
ADTC 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.