[解決済み] 古いファイルを元の作成/変更タイムスタンプでチェックアウトする
2023-03-31 07:23:57
質問
元の作成/変更のタイムスタンプを知る、または取得する方法はありますか?
どのように解決するのですか?
Git データベースに記録されるタイムスタンプは、作者とコミットのタイムスタンプだけだと思います。 ファイルのタイムスタンプを最新のコミットに一致するように修正する Git のオプションは見当たりませんし、これがデフォルトの動作でないことは理にかなっています (そうであれば、Makefile は正しく動作しないためです)。
ファイルの更新日時を最新のコミット時刻に設定するスクリプトを書くことができます。 それは次のようなものでしょう。
# No arguments? Recursively list all git-controlled files in $PWD and start over
if [ $# = 0 ]; then
git ls-files -z |xargs -0 sh "$0"
exit $?
fi
for file in "$@"; do
time="$(git log --pretty=format:%cd -n 1 \
--date=format:%Y%m%d%H%M.%S --date-order -- "$file")"
if [ -z "$time" ]; then
echo "ERROR: skipping '$file' -- no git log found" >&2
continue
fi
touch -m -t "$time" "$file"
done
これは、引数として特定のファイルを受け取るか、さもなければ現在のディレクトリかその子ディレクトリにあるgit管理下の各ファイルを更新します。これは、ファイル名の中にスペースや改行があってもよいように
git ls-files -z
はヌル文字で終端するファイル一覧を出力し
xargs -0
は null-terminatedなリストを引数にパースします。
多くのファイルがある場合、これはしばらく時間がかかります。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] GitHubでフォークされたリポジトリを更新または同期するにはどうすればよいですか?
-
[解決済み] Gitで変更された複数のファイルのうち、1つのファイルだけを隠す?
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする
-
[解決済み】既存のGitブランチをリモートブランチに追従させる?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
hint: 現在のブランチの先端が hint: そのリモートカウントより遅れているため、更新が拒否されました。
-
コミットメッセージが空だったため、コミットを中止する git commit
-
git-fatal: 設定されたプッシュターゲットがありません / 警告: store/README.md の LF は CRLF に置き換えられています。
-
git reports an error fatal: unable to auto-detect email address (got 'Administrator@MS-20180504MMDH.(none)')
-
[解決済み] バージョン管理には、なぜタグとリリース/ベータブランチを使い分ける必要があるのでしょうか?
-
[解決済み] なぜgit AuthorDateはCommitDateと違うのですか?
-
[解決済み] Gitでは、これらの言葉はどのような意味ですか?リポジトリ、フォーク、ブランチ、クローン、トラック?
-
[解決済み] IntelliJのShelveとGit stashの違いは何ですか?
-
[解決済み] Git のプッシュが "non-fast-forward" で拒否されました。
-
[解決済み] Subversion の "use-commit-times" に相当する Git の機能は何ですか?