2013-05-22 2 views
1

Я обычно использую эти команды на ветви «работы» с мерзавцемСоздать псевдоним для нескольких команд мерзавца

git commit -a -m "blah! blah!" 
git checkout master 
git merge work 
git checkout work 

Я слышал о GIT псевдонимами. Можно ли объединить все эти команды в одну через псевдонимы или что-то еще.

+1

http://stackoverflow.com/q/7534184/1615903 – 1615903

ответ

0

А также ответы на duplicate question публикуемую в комментариях, вы также можете поместить исполняемый скрипт под названием git-foo (например) где-то в вашем PATH и доступ к нему с git foo <args>, как если бы это был родной командой Git.

Это может быть полезно, если логика вашего псевдонима слишком длинна для одной строки в вашем файле конфигурации.

Например:

$ cat > ~/bin/git-foo 
#!/bin/bash 
echo "Foo: $1" 
^C 
$ chmod +x ~/bin/git-foo 
$ git foo test 
Foo: test 
+0

Извините, я пользователь Windows и новичок в git. Не могли бы вы рассказать мне, что делает ваш пример? –

0

Вы также можете добавить следующие строки в ваш файл shell.rc:

гмм сливает все данные ветви с одной вы в настоящее время на

Invoke: гмм branch1-быть-объединенное branch2-к-быть-слиты ...

gmm() { 
     src=`git branch --no-color | grep "*" | cut -f 2` 
     for i in [email protected] 
     do 
       git checkout $i 
       git merge $src 
     done 
     git checkout $src 
} 
0

Как @ Will-Vousden СУГ gests, можно было бы написать сценарий оболочки для этого. Например:

#!/bin/bash 
git commit -a -m "$1" 
git checkout master 
git merge work 
git checkout work 

, который вы могли бы назвать как:

$ git-commit.sh "Commit message in quotes" 

Однако этот подход (или ваш собственный псевдоним) легко может потерпеть неудачу, если есть, например, совмещенная конфликт:

$ git-commit.sh "Commit message in quotes" 
[work 1a6e17f] Commit message in quotes 
1 file changed, 1 insertion(+), 1 deletion(-) 
Switched to branch 'master' 
Auto-merging file.txt 
CONFLICT (content): Merge conflict in file.txt 
Automatic merge failed; fix conflicts and then commit the result. 
file.txt: needs merge 
error: you need to resolve your current index first 

оставляя вас в главной ветке с неразрешенным конфликтом слияния.

Возможно, вы можете добавить некоторую логику в скрипт, чтобы обнаруживать и, возможно, работать вокруг - такие проблемы, но это звучит намного больше работы и усилий, чем просто запуск четырех отдельных команд!