我有大約160K承諾每3個文件被更新(在使用github上的網站),我正在尋找一種方式來獲得這些文件,所以我可以然後把內容製作成真正的DB。獲得每個git的文件提交
我的問題是如何才能得到(下載?)更新的文件,從每次提交,將它們保存到一個文件夾的時間戳/ commitSHA附加到名稱,以避免命名衝突。
這是可能的混帳?我知道我可以使用github網站查看文件以及發生了什麼變化,但問題是有超過160k的提交。
我有大約160K承諾每3個文件被更新(在使用github上的網站),我正在尋找一種方式來獲得這些文件,所以我可以然後把內容製作成真正的DB。獲得每個git的文件提交
我的問題是如何才能得到(下載?)更新的文件,從每次提交,將它們保存到一個文件夾的時間戳/ commitSHA附加到名稱,以避免命名衝突。
這是可能的混帳?我知道我可以使用github網站查看文件以及發生了什麼變化,但問題是有超過160k的提交。
這還不是最完美的解決方案,但它應該工作。
首先,你必須讓使用庫的本地副本:
git clone <repo-url>
您從項目的GitHub的頁面得到<repo-url>
(檢查「克隆或下載」按鈕)。
然後你cd
到本地回購和運行這些方針的東西:
for rev in $(git log --format=%H); do
git checkout $rev -- file1
cp file1 ../history/file1-$rev
done
請務必提前創建history
目錄。爲每個需要獲取的文件複製循環內部的兩行。在結束
運行git reset --hard
讓處於原始狀態的存儲庫。
如果你還需要文件的時間戳,你可以使用git log --format=%ct file1
。對於其他文件
ts=$(git log --format=%ct $rev file1)
cp file1 ../history/file1-$rev-$ts
檢查documentation或承諾,你可以開始使用get log
性能:與更換cp
命令。
感謝你們所有的三個人(la,,Fabrizio Migotto,還有你們)。做這個只是因爲它有所有步驟纔是正確的。 現在我開始等待,而我下載500Kish txt文件! – Tribe
一旦你有你的資料庫*的本地工作副本,你可以從任何git的文件通過查看該承諾,在承諾只是:
git checkout 1e6c98511d9154bfdc49a31fd26229953df0bd70
因此,要獲得從每一個文件在您的項目歷史中提交,您只需要(a)爲您的項目生成提交列表,然後(b)遍歷該列表,檢查每個提交併處理文件。
的git rev-list HEAD
命令將產生對當前分支(從最新到最舊的)所有提交的清單。如果您想以正向順序處理這些文件,可以將其傳送至tac
以反轉列表,例如
for rev in $(git rev-list HEAD | tac); do
git checkout $rev
...do something here...
done
*運行git clone <repourl>
假設你是新使用git,你將不得不從這裏安裝git的工具:
然後,你將不得不克隆你的倉庫在git控制檯中運行:
git clone https://github.com/username/repositoryname.git
這些步驟後,你將能夠在不同的提交移動作爲@larsks解釋。
上市每提交一個特定的文件:
我的理解是,你正試圖獲得該文件的每個160k版本,是不是? –
正確。一旦我有文件,我知道如何處理它們,得到它們就是問題所在。 – Tribe