如何解决有什么办法将所有git分支转换为存储库的文件夹?
我在git仓库中有几个分支。
-repo
-- branch1
-- branch2
出于某种原因,我需要将存储库移至另一个没有历史记录的存储库。由于branch1
和branch2
的代码不同,因此如果我可以在新位置的repo内部自动创建分支到文件夹的映射,这对我会有所帮助。 有什么办法吗?
实际问题是我在GitHub中有一个名为存档的git repo,在其中我需要使用可浏览的源代码保存多个repo。 我手上还有哪些其他选择?
解决方法
我不确定是否存在仅使用git的解决方案,因为这并不是该工具的目的。但是,存在基本命令,您可以在上面构建自己的脚本。
您需要:
- 列出远程站点上的分支:
git ls-remote --heads origin
- 仅克隆其名称为
git clone -b BRANCH_NAME --single-branch REMOTE_URL DESTINATION
的分支
使用这两个命令,您可以像这样在bash中自动化该过程:
#!/usr/bin/env bash
####
#
# $1 = Remote URL to be clonned
# $2 = New name of the repository
#
####
remote=$1
repository=$2
workdir=$(pwd)
destination="$workdir/$repository"
echo "Creating repository at $destination"
mkdir "$destination"
git clone "$remote" "$repository"
cd "$repository"
for branch in $(git ls-remote --heads origin | grep -o "refs/heads/.*$" | cut -d / -f 3-)
do
echo "Cloning into branch $branch"
git clone -b $branch --single-branch $remote "$destination/$branch"
done
echo "Current dir: $(pwd)"
echo "Deleting all .git and .gitignore files"
rm -rf "$destination"/*/.gitignore
rm -rf "$destination"/*/.git
rm -rf "$destination"/.gitignore
rm -rf "$destination"/.git
cd $workdir
echo "All done! cur dir: $(pwd)"
将这段代码保存在my-repo-cloner.sh
之类的文件中,然后您可以使用./my-repo-cloner.sh REMOTE_URL MYREPO
来克隆仓库(具有所需的结构)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。