我需要從我的 git 存盤庫中提取自某個日期以來更改的所有檔案,以將它們復制到單獨的存盤庫中。
運行以下命令獲取我需要的檔案路徑串列:
git log --since="2021-10-21" --name-only --pretty=format: | sort > changed-files.txt
手動復制這個大串列既費時又容易出錯。
有沒有辦法提取或捆綁此檔案串列以更輕松地移動它們?
uj5u.com熱心網友回復:
像這樣的東西可能正是你想要的
git log --since="2021-10-21" --name-only --pretty=format: | \
sort -u | \
grep -ve '^$' | \
xargs -I{} cp -v -u {} /destination/path
特征
sort -u消除重復grep -ve '^$'消除任何空行(我的輸出中有一個空行)- xargs 不作業后從cp替換xargs
uj5u.com熱心網友回復:
如果你想保留目錄結構,你可以這樣做:
git log --since="2021-10-1" --name-only --pretty=format: \
| sort -u \
| xargs -I{} bash -c \
'[ -x {} ] && mkdir -p $(dirname tmp/{}) && cp -v {} tmp/{}'
這會:
- 獲取自某個日期以來所有更改或修改的檔案的串列
- 洗掉重復項
然后,對于每個檔案:
- 檢查它是否仍然存在(洗掉的檔案將顯示為已修改)
- 如果是,請為該檔案創建一個目錄
- 最后,將檔案復制到給定目錄中
然后,您的所有檔案都將位于 tmp 目錄中,其目錄結構與原始 git 存盤庫中的目錄結構相同。
(您不需要過濾掉空行,因為 xargs 會自動處理)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/349270.html
標籤:混帐
上一篇:從本地存盤庫克隆,然后推回更改
