簡體   English   中英

如何壓縮和忽略 .gitignore 指定的所有文件

[英]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.

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