2013-10-22 17 views
25

Pracuję na gałęziach fabularnych, które mają irytujące wielkich nazwisk, więc często kończy się grepping moją obecną nazwę oddziału, kiedy trzeba wcisnąć się do gałęzi funkcji z mojego lokalnego oddziału funkcji, tak jak poniżej:Rury w dupie Alias?

git branch | grep '*' | sed 's/* //' | xargs git push origin 

ten działa w porządku. Chcę, aby ten alias, więc zrobiłem to w ~/.gitconfig:

[alias] 
    pushcur = branch | grep '*' | sed 's/* //' | xargs git push origin 

Teraz, kiedy biegnę git pushcur, pojawia się następujący błąd:

usage: git branch [options] [-r | -a] [--merged | --no-merged] 

prowadzi mnie do przekonania, że alias nie przetwarza poprawnie rur. Czy jest coś jeszcze, co powinienem zrobić, aby osiągnąć pożądany pseudonim?

+2

Nie związane z rozwiązywaniem ogólnego problemu, ale w całkiem nowych wersjach gita, możesz skonfigurować 'push.default' (lub' push.origin.default', aby ograniczyć efekt do 'origin') do' current' (chociaż 'upstream' może być czasem bardziej odpowiedni). Zobacz sekcję push.default w [git-config] (https://www.kernel.org/pub/software/scm/git/docs/git-config.html). – torek

+0

rozważ także użycie autouzupełniania bash do TAB od nazwy gałęzi! zsh z oh-my-zsh ma domyślnie;) – caesarsol

Odpowiedz

37

Nie sądzę, można, ale można poprzedzić je z ! traktować polecenia jako nowego polecenia powłoki

[alias] 
    pushcur = ! git branch | grep '*' … 
+0

"Może jednak chcesz uruchomić polecenie zewnętrzne, a nie podkomendę Git, w takim przypadku uruchomisz polecenie ze znakiem!". - [git book] (https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases) – nietaki

3

ja zwykle zrobić małe git- skrypty i umieścić je w katalogu, który znajduje się w moja ścieżka (~/.local/bin). Sprawdź git-extras pod kątem kilku dobrych przykładów.