2016-01-09 71 views
5

receive.denyCurrentBranchconfig option控制如果推送到結賬的倉庫分支時會發生什麼情況。`receive.denyCurrentBranch = updateInstead`如何與索引進行交互?

默認情況下,它拒絕它(這就是爲什麼你通常只推送裸露回購,沒有結帳分支)。

它可以通過ignorewarn被禁用。

另一種選擇是updateInstead

這裏做的事情是,如果HEAD和工作目錄是相同的,並且被推分支是HEAD,無論是工作目錄和分支/ HEAD都在同一時間更新。

如果工作目錄不同於HEAD,推送被拒絕。
這對於推送到網絡服務器,for example很有用。

我的問題是,這個選項是否與Index相互作用?

索引是否已更新?如果HEAD和工作目錄匹配,但不是Index

回答

5

索引是否已更新?如果HEAD和工作目錄匹配而不是索引會怎麼樣?

Commit 0855331 (git 2.4.0-rc0, Dec. 2014)規定很清楚:

receive.denyCurrentBranch設置爲updateInstead,一推即 嘗試更新當前簽出的分支被接受 只有當指數和準確的工作樹匹配 當前簽出的提交,在這種情況下索引和 工作樹被更新以匹配推送提交
否則推送被拒絕。

儘管同樣的提交引入了push-to-checkout掛鉤。

該鉤子可用於定製此「推送」部署邏輯。
掛鉤接收當前分支的提示將被更新的提交,並且可以決定哪種本地改變是可接受的,以及如何更新索引和工作樹以匹配當前更新的提示分支

這給了索引的一些靈活性。


Commit 1a51b52, git 2.4.0-rc2, Apr 2015再次說它:

設置receive.denycurrentbranchupdateinstead和推入 當前分支,當工作樹和索引是真正 乾淨,應該重新設置工作樹以及匹配 推送提交的樹的索引。