2015-12-01 45 views
2

嗨,大家好我想添加一個git別名,讓我放棄剛剛完成的rebase。我試圖在.gitconfig添加git別名與不工作的管道

rebabort = !sh -c 'git reflog | grep -v rebase | head -1 | sed -e "s/^\([[:alnum:]][[:alnum:]]*\)\(.*\)/\1/g" | git reset --hard' 

添加這一點,但它抱怨了錯誤的配置。無論如何,我試圖添加以下方式的別名:

git config alias.rebabort '!git reflog | grep -v rebase | head -1 | sed -e "s/^\([[:alnum:]][[:alnum:]]*\)\(.*\)/\1/g" | git reset --hard' 

它的工作。我錯過了什麼?

UPDATE

我也試圖在.gitconfig

rebabort = "!f() { \ 
       git reflog | grep -v rebase | head -1 | sed -e 's/^\([[:alnum:]][[:alnum:]]*\)\(.*\)/\1/g\' | git reset --hard; 
    }; f" 

加入這個和這個

rebabort = !"git reflog | grep -v rebase | head -1 | sed -e 's/^\([[:alnum:]][[:alnum:]]*\)\(.*\)/\1/g' | git reset --hard" 

但它仍然抱怨錯誤配置。

+0

你在使用什麼shell和什麼操作系統?這可能是OS + shell特定的問題,而不是git問題。 – starlocke

+0

打擊Mac優勝美地。 – se7entyse7en

+0

是你的第一個命令嗎?它看起來像缺少一個閉合的撇號符號來匹配'sh -c'選項的第一個符號。 – starlocke

回答

2

我複製,然後看了看我的虛擬項目的.git/config,發現下面你的「那個工作線」:

[alias] 
     rebabort = !git reflog | grep -v rebase | head -1 | sed -e s/^\\([[:alnum:]][[:alnum:]]*\\)\\(.*\\)/\\1/g | git reset --hard 

只需複製到你的~/.gitconfig

看起來不是一件簡單的事情需要sh -c的東西。你的.gitconfig不是.bashrc;我這樣說是因爲它看起來像你試圖寫一個.bashrc格式的別名。

此外,供你參考,你可以做了同樣的效果(你行的工作,再加上--global)選項下面,因爲--global通常添加到您的~/.gitconfig

git config --global alias.rebabort '!git reflog | grep -v rebase | head -1 | sed -e "s/^\([[:alnum:]][[:alnum:]]*\)\(.*\)/\1/g" | git reset --hard' 

幫助文件因爲git config對於學習新的選項和技巧也非常有用。 https://git-scm.com/docs/git-config

+1

謝謝!有效! – se7entyse7en