拷貝某commit變更的檔案群


首先你要先切換到你想要拷貝的commit,例如v2.3這個tag

git checkout -b newbranch v2.3

然後才開始拷貝檔案,不然你拿到的會是當前branch內的檔案,而不是該commit的

mkdir -p ~/bak/
git show --name-only v2.3 | xargs -i cp --parents {} ~/bak/

這方法若遇到git內有檔案被刪除的,會顯示拷貝錯誤的訊息

因為用git show會顯示commit的訊息,所以會有幾行拷貝錯誤的訊息,要解決這問題可以換成git diff來處理,但是缺點就是git會先跑git status的整體檔案check,所以要等待一陣子才會處理好
git diff --name-only v2.3^ v2.3 | xargs -i cp --parents {} ~/bak/

確認拷貝完整性
列出當前commit的修改檔案的個數
git diff --name-only v2.3^ v2.3 | wc -l

列出拷貝出的patch檔案個數
find ~/bak -type f | sort | wc -l

留言