2014-10-31 23 views
1

如果我有一個分支設置,並且我已經遠程推送它,以供其他人共享和處理。在git中是否有命令來檢查我的分支是否在HEAD中?我假設某人已經承諾並將其機器上的更改推送到遠程,但尚未完成,這意味着我的本地分支不在HEAD中。查找分支是否在git的頭部

我明白了,我可以做

git diff testbr origin/testbr 

如果返回的東西,這意味着本地testbr不是在頭部。 或者我也可以做,如果

git fetch returns empty update 

git log HEAD..<remoteBr> --oneline 

有一個簡單的真或假的答案,而不是我分析這些命令的輸出。

+0

備註:通常git工作流假設每個人都只是拉一個早在常識之前 - 在每次地方變革之前,在推動之前。這樣,本地活動分支始終處於最新狀態。 – Basilevs 2014-10-31 02:56:59

+0

謝謝。這就說得通了。但是我正在從一些自動化代碼做到這一點。 – user3606175 2014-10-31 03:00:32

+0

你不能自動拉? – Basilevs 2014-10-31 03:01:20

回答

1

如果你不想獲取,你必須從git ls-remote解析提交ID。例如,如果你做

git ls-remote origin testbr 

你可能會看到

728f270f6850706a3ac1990da4c44589eb6d38f7  refs/heads/testbr 

你也可以使用cut在shell拿到的第一個字段。

爲了得到提交當地分公司的ID,您可以使用git rev-parse

git rev-parse testbr 

所以在shell腳本你只是比較提交的ID:

[ `git ls-remote origin testbr | cut -f1` == `git rev-parse testbr` ] 

如果你願意取第一,那麼你可以做

[ `git rev-parse testbr` == `git rev-parse origin/testbr` ] 
+0

謝謝。我正在尋找更多真實/錯誤的答案。但看起來它不存在。所以我將使用git log HEAD和git fetch。 – user3606175 2014-10-31 05:16:28

相關問題