我想创建一个 git别名, 克隆所有分支 。
我们有bash脚本,感谢这篇文章: How to clone all remote branches in 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脚本作为&#34; git别名&#34;回答如下。
但是,对于那些想要快速添加git别名的人来说,$ git clone-all-branches
这里是一个答案:
创建&#34; git别名&#34;这将运行一个脚本:
$ 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
答案 0 :(得分:1)
感谢@ g-sliepen建议,我做了以下事情:
对于Ubuntu:
#1 转到主目录:
`$ cd ~`
注意:应该与.gitconfig和.bashrc文件位于同一目录中,您很快就会需要这些文件。
#2 创建一个新文件,一个bash脚本,我们稍后会执行(确保你在主目录中):
`$ touch .gitcloneallbranches.sh`
打开文件:
`$ subl .gitcloneallbranches.sh`
粘贴并将以下内容保存在文件中:
# Bash script that we will execute as an "alias" either as a "git alias" or a "bash alias"
#!/bin/bash
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`
#3 为该文件提供需要执行的权限:
`$ chmod u+x .gitcloneallbranches.sh`
将脚本用作#4 a&#34; git别名&#34; -OR - 为#5 a&#34; bash别名&#34;
#4 创建&#34; git别名&#34;这将允许您作为git命令运行此脚本:
选择一个 A -OR - B 创建 git别名的方法(&#34 ; bash别名&#34;是#5):
(答:通过终端)
$ git config --global alias.clone-all-branches '!sh ~/.gitcloneallbranches.sh'
(OR,B:或者,直接在.gitconfig文件中添加别名:)
在主目录中,打开.gitconfig:
$ subl .gitconfig
在[alias]部分下,粘贴以下内容:
[alias]
clone-all-branches = !sh ~/.gitcloneallbranches.sh
试试我们的git别名!
转到git repo所在的目录。
查看当前分支机构:
$ git branch
//应该是当前可用的分支
尝试新的git别名:
$ git clone-all-branches
再次查看分支:
$ git branch
//现在所有分支都可用!
#5 或者,创建一个&#34; bash别名&#34;运行我们的.gitcloneallbranches.sh脚本:
$ subl .bashrc
在该文件中,添加&#34;别名&#34;添加以下内容:
# Adds ability to clone all branches of a repo, by typing 'clone-all-branches' in any directory with a git repo:
alias clone-all-branches='source ~/.gitcloneallbranches.sh'
试试我们的bash别名!
转到git repo所在的目录。
查看当前分支机构:
$ git branch
//应该是当前可用的分支
尝试新的git别名:
$ clone-all-branches
再次查看分支:
$ git branch
//现在所有分支都可用!
答案 1 :(得分:0)
还有另一种方法:只需创建一个名为git-cloneallbranches
的脚本,该脚本位于$PATH
的某个位置(例如,如果$HOME/bin
中有$PATH
,可能是一个好地方)。当您运行git cloneallbranches
时,它将自动运行您的脚本。