如何压缩和忽略.gitignore指定的所有文件

hivapdat  于 2023-06-04  发布在  Git
关注(0)|答案(3)|浏览(156)

我在一个目录下有几十个git仓库,它们不仅包含源代码,还包含构建工件、开发工件、blob和其他通常被.gitignore忽略的数据
我想把这些源代码快速转移到另一台计算机上。有没有一种简单的方法来打包所有不会被git忽略的东西?
要添加更多上下文,请执行以下操作:
我有大约50个Git文件夹,每个文件夹都在不同的分支上,并有一些当前的更改
我想复制所有被Git跟踪的文件,在当前状态下(当前分支加上当前本地更改)
如果通过克隆他们,这意味着去每个文件夹,提交当前的变化本地,记住分支名称,git克隆本地分支到另一个文件夹,这样做50次,然后我强烈反对它

1aaf6o9v

1aaf6o9v1#

单行线:

$ alias gitzip="git archive HEAD -o ${PWD##*/}.zip"
$ cd mydir
$ gitzip
prdp8dxp

prdp8dxp2#

如果您想包含历史记录,请使用git bundle(如果您的存储库有子模块,则使用xeyownt/git-subundle
this script为例:

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

每个存储库提供一个文件(没有任何私有或忽略的文件),您可以轻松地复制,一旦复制,克隆。

osh3o9ms

osh3o9ms3#

你可以试试这个:

for dir in repo1 repo2 repo3; do
    git -C "$dir" ls-files | perl -pe "s[^][$dir/]"
done | zip /tmp/test.zip -@

相关问题