[英]How to zip and ignore all files specified by .gitignore
我在一個目錄下有幾十個 git 存儲庫,它們不僅包含源代碼,還包含構建工件、開發人員工件、blob 和其他通常被 .gitignore 忽略的數據
我想快速將這些源代碼傳輸到另一台計算機上。 有沒有一種簡單的方法來打包 git 不會忽略的所有內容?
添加更多上下文:
我有 50 個左右的 git 文件夾,每個文件夾都在不同的分支上,並且有一些當前的變化
我想復制git跟蹤的所有文件,處於當前狀態(當前分支加上當前本地更改)
如果通過克隆它們,這意味着去每個文件夾,在本地提交當前更改,記住分支名稱,git clone local branch到另一個文件夾,這樣做50次我強烈反對
你可以試試這個:
for dir in repo1 repo2 repo3; do
git -C "$dir" ls-files | perl -pe "s[^][$dir/]"
done | zip /tmp/test.zip -@
如果您想包含歷史記錄,請使用git bundle
(如果您的存儲庫有子模塊,則使用xeyownt/git-subundle
)
以這個腳本為例:
for repository in ${repositories[@]}
do
echo "$repository..."
declare file_name="../$repository-$(git rev-parse --short HEAD).bundle"
cd $repository
if [ -f $file_name ]; then
echo 'Found bundle is current'
else
git bundle create $file_name --all
fi
cd -
done
每個存儲庫都提供一個文件(沒有任何私有或被忽略的文件),您可以輕松地復制該文件,並且一旦復制,就可以從中克隆。
單線:
$ alias gitzip="git archive HEAD -o ${PWD##*/}.zip"
$ cd mydir
$ gitzip
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.