我在一个目录下有几十个git存储库,它们不仅包含源代码,还包含构建构件、开发人员构件、blobs和其他通常被.gitignore忽略的数据
我想快速地将这些源代码转移到另一台计算机上。有没有一种简单的方法来打包所有不被git忽略的东西?
要添加更多上下文,请执行以下操作:
我有50个左右的git文件夹,每个文件夹都在不同的分支上,其中有一些最新的更改。
我想在当前状态(当前分支加上当前本地更改)复制git跟踪的所有文件。
如果通过克隆它们,这意味着转到每个文件夹,在本地提交当前的更改,记住分支名称,git将本地分支克隆到另一个文件夹,这样做50次,那么我强烈反对
发布于 2021-06-20 22:15:53
您可以尝试这样做:
for dir in repo1 repo2 repo3; do
git -C "$dir" ls-files | perl -pe "s[^][$dir/]"
done | zip /tmp/test.zip -@发布于 2021-06-20 23:59:17
如果您想包含历史记录,请使用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每个存储库提供一个文件(没有任何私有或忽略的文件),您可以很容易地复制该文件,一旦复制,就可以从中克隆。
https://stackoverflow.com/questions/68056216
复制相似问题