鑑於您已經包含了該井,和 -answer,我不確定您的實際問題是什麼。也許這是關於在腳本中使用變量?
get_current_branch() {
git rev-parse --abbrev-ref HEAD
}
cbranch=$(get_current_branch)
git checkout master && git pull
do_something_with $cbranch
我把get_current_branch
成殼功能這裏,因爲這個人是有缺陷的:如果你有一個「分離的頭」開始時,你會得到這樣的:
$ git checkout --detach master
HEAD is now at 4384e3cde... Git 2.14
Your branch is up-to-date with 'origin/master'.
$ git rev-parse --abbrev-ref HEAD
HEAD
使$cbranch
捲起只是HEAD
。
另一種方法是使用git symbolic-ref
,產生stderr中的fatal: ...
錯誤信息,並沒有分支機構的名稱,當你在這個分離的頭模式:
$ git symbolic-ref --short HEAD
fatal: ref HEAD is not a symbolic ref
一旦回到master
,雖然:
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git symbolic-ref --short HEAD
master
,所以我們可以使用git symbolic-ref
更換外殼的功能,如果外殼應在分離的頭模式下打印錯誤:
cbranch=$(git symbolic-ref --short HEAD) || exit
的|| exit
使得外殼出口(與最後一個命令運行的退出狀態,在這種情況下,git symbolic-ref
狀態);如果命令失敗,因此這將要麼把目前的分行名稱爲$cbranch
,要不然打印一條消息到stderr並退出。
與所有的出路,我也建議避免git pull
完全,和檢查索引和/或工作樹是否乾淨。請參閱$(git --exec-path)/git-sh-setup
瞭解一些用於Git腳本的shell腳本項目。例如,shell函數require_clean_work_tree
在這裏很有用。
而不是運行git pull
,你幾乎總是要運行git fetch
,然後仔細檢查的獲取結果。只需將結果合併到合併或重新分配操作中,如git pull
所做的那樣,在腳本中很難做到。
是的,存儲在變量中正是我想要的。我只是不知道這是我想要的。感謝您的解釋和其他附加信息。我只是開始爲我的工作流程使用腳本,所以這非常有用。 – nxmohamad