2011-10-01 65 views
1

我們試圖實現一個git工作流,其中在遠程repo上存在一個預接收鉤子來驗證所有推送的ref都提交了包含某些必需信息的消息。爲了給開發人員提供一些便利,我們還需要一個本地git命令,開發人員可以運行它來查看所有引用將被推送命令推送,以便他們在推送它們是否會通過鉤子之前驗證它們,以及還要創建一個新的git命令來調用filter-branch或其他東西來重寫所有提交消息以填充任何缺失的信息。如何獲得git push將推動的所有ref的列表?

那麼,是否有可能得到一個由推命令推送的所有內容? git push --dry-run --verbose只給出了一個非常粗略的概括:

例如,

> git push --dry-run --verbose origin head:test/me 

Pushing to [email protected]:myproject.git 
To [email protected]:myproject.git 
* [new branch]  head -> test/me 
+0

你明確告訴它推HEAD測試/我,並作爲回報它告訴你,它會創建一個名爲test/me的服務器上的新分支。這是粗略的? –

+0

@Kevin我想​​知道它將傳輸到遠程存儲庫的完整提交列表,可以作爲散列列表或通過foo..bar語法。 – nohat

+0

如果一個git push推送引用,那麼git push會推送多少個引用? – nohat

回答

0

還可以使用Git推 - 陶瓷。

2
git log @{u}.. 

這將列出所有尚未推送到遠程的提交。如果你想每個DIFF提交再加入-p後登錄

git log -p @{u}.. 

是,在最後的兩個點是必要的。 :)

+0

這聽起來很有希望,但是@ {u}應該是什麼? ' 沒有找到上游分支'' 錯誤:找不到上游分支'' 致命:模棱兩可的論點'@ {u} ..':未知修訂或路徑不在工作樹中。 使用' - '分隔修訂版本的路徑 – nohat

+0

@nohat這個回覆來得非常晚,但這裏仍然是:@ {u}是@ {upstream}的簡寫形式,它是指向遠程 - 當前分支正在跟蹤的跟蹤分支。您看到的錯誤是由於您當前活動的分支與其遠程跟蹤分支之間缺少映射。運行'git branch --set-upstream /'來設置映射。如果'test'是分支,'origin'是遠程,那麼'git branch --set-upstream test origin/test'會設置映射。另外,如果您撤回-ve分數,我會很高興。 – brahmana

+0

很高興知道這個捷徑! 'git cherry -v @ {u}'也可以做到。 –

相關問題