2016-03-29 12 views
0

私はレポにファイルのタイムスタンプを設定する方法を理解しようとしています。 git pushでは、ファイルの最終更新日がアップロード時ではなく過去になるようにしたい。リモートGitリポジトリにファイルタイムスタンプを設定するには?

私は手作業でコミット日付を簡単に設定することができますが、今すぐ変更されたファイルで私のリモートリポジトリに日数コミットがあることを意味します。

似たようなトピックを検索することでこれに問題があることは知っていますが、これは個人的なレポですから、これを理解したいと思います。 gitはどこからプッシュでファイルの変更されたデータを引き出すのですか?私がしたいことをさせるスクリプトや拡張機能はありますか?

+0

ファイルにはタイムスタンプがありません。コミットにはタイムスタンプしかありません。だからこそ、他のすべての質問は、あきらめたり、「受け取った後にあなたのファイルに設定できるタイムスタンプ」を含む補助ファイルを追加することになります(auxファイルはタイムスタンプだけでもよいし、スタンプ値など)。ちなみに、 'git checkout'の間にgitが修正しなければならないファイルの日付は、あなたのコンピュータ上の現在の日付だけです。つまり、gitはファイルを書き出し、コンピュータに" now "としてスタンプすることができます。 – torek

+0

あなたが探しているものを実行するスクリプトは次のとおりです:https://gist.github。com/jeffery/1115504 – paulsm4

+0

git pushでは、ファイルの最終更新日をアップロード時ではなく過去にします。 Gitはあなたのファイルのタイムスタンプを気にしません。 – CodeWizard

答えて

0

https://git.wiki.kernel.org/index.php/Git_FAQ#Why_isn.27t_Git_preserving_modification_time_on_files.3F

なぜファイルに更新時刻を保存Gitはされていませんか?

ファイルの変更時間は、ビルドツールに影響する機能です。
ほとんどのビルドツールは、ソースのタイムスタンプと派生ファイルのタイムスタンプを比較します。

ソースが新しい場合、再構築が行われます。そうでない場合は何も起こりません。これにより、ビルドプロセスが大幅に高速化されます。

ここで、別のブランチをチェックアウトして、変更時刻が保存されていたらどうなるか考えてみましょう。すでに完全に構​​築されたプロジェクトがあるとします。

他のブランチのソースファイルのタイムスタンプが対応する派生ファイルのタイムスタンプよりも古い場合、ビルドシステムは変更時刻のみを比較するため、派生ファイルは異なる場合でもビルドされません。

奇妙な二次的エラーが発生することがあります。ほとんどの場合、すべてが最初はうまく見えますが、クリーンビルドと同じ結果は得られません。あなたが実際にどのコードを実行しているのか分からず、問題の原因が見つけにくいので、その状況は不健全です。

正しいソースを使用していることを確認するために、ブランチを切り替えるときに常にクリーンビルドを行う必要があります。

は(Gitに二分あなたは信頼性の再構築必要な古いものと新しいリビジョンをチェックアウトし、別のGitの手順である。)
Gitはそれが修飾すべてのファイルのタイムスタンプとして現在の時刻を設定しますが、のみ。他のファイルは変更されません。つまり、ビルドツールは変更時間に依存して適切に再構築できます。ビルドルールが変更されると、それはとにかく失敗する可能性がありますが、それは誤って再構築しないよりもはるかに一般的な問題です。

関連する問題