Para aqueles interessados em uma explicação mais detalhada, consulte minha postagem no blog .
Para mim, iniciar um projeto git é tão fácil quanto ginit gh epic-project
.
Use vários pontos de extremidade git
Eu uso três endpoints Git de dois sites diferentes, e os aliases aqui mapeiam para os URLs reais por meio de minha configuração SSH, o que me permite usar atalhos semânticos. A primeira função mostrada aqui atua como um ‘auxiliar’, permitindo-me especificar qual ponto de extremidade um repo deve usar.
# Test the first argument of a command for a git host identifier (aliases configured in ssh-config)
is_git_host() {
case "$1" in
'gh') host='github-personal'
user='SteveBenner'
true ;;
'bb') host='bitbucket'
user='SteveBenner09'
true ;;
'xf') host='github-work'
user='xFactorApplications'
true ;;
*) echo 'Usage: clone [host] [repository-name]'
echo "where <host> is one of:"
echo ' gh: Personal GitHub account'
echo ' xf: X-Factor Applications GitHub account'
echo ' gh: personal BitBucket account'
false ;;
esac
}
Faça tudo com um comando
Usar as ferramentas CLI não deve ser um processo complexo; sempre faça o computador fazer o trabalho pesado. Os comandos a seguir cuidam de tudo que você precisa para iniciar um novo repo ou clonar um existente.
# Clone a git repo using hostname aliases resolved via SSH configuration
clone() { if is_git_host $1 ; then `git clone git@${host}:${user}/${2}.git` ; fi }
# Initialize a new local git repository, setting the remote using given alias
ginit() {
if is_git_host $1 ; then
git init
`git remote add origin git@${host}:${user}/${2}.git`
echo "# This repo and README were created automatically." >> README.md
cp -n ~/.gitignore_global .gitignore
git add -A
git commit -m "Initial commit."
git push -u origin master
`git config core.filemode false` # see my blog post for explanation of this line
fi
}
PS O código parece um pouco confuso devido à largura menor que o CoderWall usa – no github , é muito mais limpo.