2013-07-10 34 views
1

我工作的一個git的別名,並在其當前(未完成)狀態下運行到語法問題:使用bash條件邏輯比較字符串git的別名 - 語法問題

[alias] 
gup2 = !git checkout $1 && BEFORE=$(git stash list) && git stash save gup-temporary-stash && git fetch && git rebase -p origin/$1 && if [ "$BEFORE" != "$(git stash list)" ]; then git stash pop; fi 

的問題似乎開始當雙引號引入。我嘗試了許多單引號和雙引號與轉義序列的組合,但我似乎無法找到正確的組合。

什麼是形成上述別名的語法正確的方法是什麼?

回答

2

之後 a year 使用Git別名,我決定他們是不值得的麻煩。在我看來,使用別名的唯一好處是讓你可以把

git foo 

,而不是

git-foo.sh 

,事實上,如果你的腳本這裏命名爲我的例子中,你甚至可以把它作爲

git foo.sh 

,或者如果你的名字腳本git-foo那麼你甚至可以把它作爲

git foo 

在我看來完全消除了git別名的好處。編寫腳本的Git語法相對於只寫一個外部腳本來說是個廢話,它是 I have done

+1

我喜歡'git s'作爲git身份,我可能已經用它保存了大約100個小時的時間,但除此之外我同意你的看法。 – usumoio

+0

我一般都認同,但如果命令非常小,使其適合您的配置(您可以在其中共享配置到多臺機器)可能很有用。我喜歡這裏列出的解決方案 - http://stackoverflow.com/a/3322412/652904,我用它來啓動外部圖形差異工具來區分單個提交'meld1 =「!f(){git difftool -y -t融合$ 1^$ 1;}; f「' – nhed

0

你可以嘗試任何你想要的字符的字符代碼,或者你想要的字符的十六進制名稱。這裏是一個鏈接到這些事情:

http://www.utf8-chartable.de/

在你在做什麼,你只是在你的環境中編寫一個bash腳本的核心。所以無論你在git的bash界面以外寫引號都應該可以在這裏工作。