你可能會認爲這不是一個常見的用例,但我很頻繁地創建新的git
回購。從本質上講,我有一個存儲當前分支shell腳本到$CURRENT_BRANCH
通過:沒有提交的git分支
#!/bin/sh -e
git rev-parse --is-inside-work-tree 2>/dev/null > /dev/null
git rev-parse --abbrev-ref HEAD
這種運作良好,即使在非git的回購協議(這是想法)。然而,其中一個案件,它投訴很多是一個沒有提交的git回購。具體而言,我得到:
fatal:歧義參數'HEAD':未知版本或路徑不在工作樹中。 使用 ' - ' 從版本不同的路徑,像這樣: '混帳[...] - [...]'
這至少提出了兩個問題:
- 爲何即使我將
stderr
和stdout
重定向到null
通過2>/dev/null > /dev/null
- 即使沒有提交,我如何獲取當前分支名稱?
您正在使用兩個命令,並且只有一個命令重定向輸出。我認爲'''致命的:'''來自第二個 – Alex
@Alex通常我認爲你會是對的,但是運行#2(第二個命令,重定向和所有)* still *似乎包括致命錯誤輸出 –
由於'-e',第一個'rev-parse'使得腳本在* not *時在git倉庫中退出。但是當你在* git倉庫中時,* second *'rev-parse'會吐出這個錯誤(只有第一個'rev-parse'的stderr被放棄)。 – torek