我想创建一个克隆所有分支的git 别名。
我们有了 bash 脚本,感谢这篇文章: 如何在 Git 中克隆所有远程分支?
这是 bash 脚本(多行版本):
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
git branch --track "${branch##*/}" "$branch"
done
(一行版本):
git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs
让我们调用 git 别名git cloneallbranches
我尝试使用以下方法设置单行和多行版本:
$ git config --global alias.cloneallbranches '...'
并尝试将两个版本都粘贴到我的 .gitconfig 文件中,但均未成功(我还有其他 git 别名,但没有一个是 bash 脚本)。
有人可以帮我修改一个 bash 脚本,以便我可以将它粘贴到我的 .gitconfig 文件中,以使 git 别名正常工作吗?
谢谢你。
回答:
在下面的回复中运行一个单独的 bash 脚本作为“git 别名”答案。
但是,对于那些想要快速添加 git 别名的人,$ git clone-all-branches
这里有一个答案:
- 感谢此处更新的答案:如何在 Git 中克隆所有远程分支?
创建一个“git alias”,它将运行一个脚本:
$ git config --global alias.clone-all-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'
现在你可以运行(从任何有 git repo 的目录):
$ git clone-all-branches