簡體   English   中英

獲取git中文件的所有修訂版

[英]Get all revisions of a file in git

我有一個git存儲庫,里面有多個文件。

我需要獲取特定文件foo.bar所有修訂(不是差異),並將其存儲為類似0001-{date}-{sha}-foo.bar0002-{date}-{sha}-foo.bar等在新文件夾中。

我怎樣才能做到這一點?

假設您想要作者日期,並且unix時間戳是可以的:

i=0
git log --reverse --format=%H\ %at $file |
while read hash date; do
  git show $hash:$file > $(dirname $file)/$i-$hash-$date-$(basename $file)
  : $((i += 1))
done

應該做你想做的事。 如果您想要不同的日期,請在說明符處更改%,但unix時間戳很好,因為您不必處理名稱中的空格。 顯然,如果你願意,有辦法解決這個問題。

你可以使用git log --pretty="%ct %H" -- foo.bar ,它會給你類似的東西:

1322212187 f75e724eec4e11a720d4620b3ca09eff91bb754e
1311666567 d6b578f1b778c67d78322d914d3ab46e02d12f6c
1311584563 cb76c3e39553cf20c9e96ad3d2c963b905d19180
1311321178 bec391005805ca01e9c7b11032b456d426f4fa52
1311321089 b29afbf8c4ca7e8f178cec981b5d3d14f0abeb15
1311081641 74d5747f2094a8f1696344c6c2b94244e52c7cc9

第一列是commit(unix)時間戳,第二列是commit的SHA。 如果你想要別的東西(在--pretty參數中為' %ct ',RTFM可以查看選項),你可以更改日期格式。 從這里可以很容易地編寫git命令來檢查該特定文件的特定修訂版本,並使用shellscript將其復制到您的命名約定 - 左側作為練習給讀者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM