亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何以編程方式確定當前簽出的Git分支

如何以編程方式確定當前簽出的Git分支

開心每一天1111 2019-07-31 15:53:20
如何以編程方式確定當前簽出的Git分支在Unix或GNU腳本環境(例如Linux發行版,Cygwin,OSX)中,確定當前在工作目錄中檢出哪個Git分支的最佳方法是什么?這種技術的一個用途是自動標記一個版本(就像svnversionSubversion一樣)。另請參閱我的相關問題:如何以編程方式確定Git簽出是否為標記,如果是,那么標記名稱是什么?
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

正確的解決方案是看看contrib / completions / git-completion.bash是否為bash提示做了__git_ps1。刪除所有額外內容,例如選擇如何描述分離的HEAD情況,即當我們在未命名的分支上時,它是:

branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||branch_name="(unnamed branch)"     # detached HEADbranch_name=${branch_name##refs/heads/}

git symbolic-ref用于從符號引用中提取完全限定的分支名稱; 我們將它用于HEAD,目前已檢出分支。

替代解決方案可能是:

branch_name=$(git symbolic-ref -q HEAD)branch_name=${branch_name##refs/heads/}branch_name=${branch_name:-HEAD}

在最后一行我們處理分離的HEAD情況,使用簡單的“HEAD”來表示這種情況。


Junio C. Hamano(git maintainer)博客文章,從2013年6月10日起以編程方式檢查當前分支,更詳細地解釋了為什么(和hows)。


查看完整回答
反對 回復 2019-07-31
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

有沒有人看到Git描述你所在的分支有什么問題?

git rev-parse --symbolic-full-name --abbrev-ref HEAD

這可以在$()中使用,并在Bash,Powershell,Perl等中輕松傳遞。如果您在提交中有多個分支,并且如果您當前不在分支上,那么它不會被欺騙,它只是簡單的回復“HEAD”。

或者,您可以使用

git symbolic-ref --short -q HEAD

哪個會給你相同的輸出,但如果你被分離,它將不會返回任何內容。如果你想在分離時發生錯誤,這個很有用,只需刪除-q即可。


查看完整回答
反對 回復 2019-07-31
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

您可以使用 git name-rev --name-only HEAD


查看完整回答
反對 回復 2019-07-31
  • 3 回答
  • 0 關注
  • 789 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號