爲什麼git允許你提交分離頭?有沒有可以禁用它的預提交鉤子?什麼目的?許多新開發人員這樣做,我想找到一種方法來禁用它。如何防止分離頭中的提交
回答
這隻能由本地git pre-commit
掛鉤阻止,因此開發人員需要創建它。添加your-local-project/.git/hooks/pre-commit
文件,內容如下:
#!/bin/sh
if ! git symbolic-ref HEAD &> /dev/null; then
echo "You are in a detached head state! Commit has been blocked. (Use --no-verify to bypass this check.)"
exit 1
fi
確保它是可執行文件。 Credits go to svachalek
爲什麼git應該阻止分離HEAD中的提交?分離HEAD意味着只有沒有指向您正在處理的存儲庫狀態的指針。它假定你知道你在做什麼。
我寧願調查爲什麼很多開發者在你的團隊中進入這個狀態?也許他們應用了一些奇怪的工作流程?
git checkout $commit-sha1
可能會導致分離的HEAD。 git checkout FETCH_HEAD
也是如此。分離的HEAD可以被視爲沒有名字的分支。如果它不會讓你感到困惑,你可以忽略它。正如@fracz所說,你可以通過pre-commit
來阻止它。你也可以用git checkout -b some_name
作爲它的名字。 A post-checkout
掛鉤可以幫助您檢測分離的HEAD狀態並使其成爲分支。
+1在'post-checkout'鉤子中創建分支的想法。但是,它將不得不創建隨機名稱的分支,這反過來會隨着時間的推移而產生大量混亂。 – fracz
@fracz是的,隨機分支名稱確實是一個問題。我們可以用一些邏輯來找到一個合適的名字,但相比之下它仍然有點麻煩。所以只要忽略它或找到根本原因並提前阻止它。據我所知,沒有'repo start'的'repo sync'如果使用Repo也會導致分離的HEAD狀態。 – ElpieKay
在'post-commit'鉤子中創建分支將避免在用戶實際上不想提交任何內容時創建分支。見https://gist.github.com/ben-cohen/316f89c763e9d8a027335261a44c4954 –
Git在內部使用它來執行許多操作。分離的HEAD模式簡單地讓你進入(單一,特殊)匿名分支,並且匿名分支可以稍後被賦予一個名字。
例如,這是git rebase
如何設法將提交從原始鏈複製到新鏈。首先使用這種分離的HEAD模式檢出--onto
目標提交(--onto
默認爲<upstream>
)。然後,對於每個要複製的提交,它會複製該提交(使用git cherry-pick
或其他類似的內容:具體取決於交互式與非交互式底圖,以及交互式更多細節)。最後,它移動現有的分支標籤,使其指向最終的複製提交。
- 1. 防止提交
- 2. 展會上提交頭部分離
- 3. 如何防止linkbutton的雙重提交?
- 4. 如何防止textarea maxlength阻塞提交
- 5. 如何防止按鈕提交表格
- 6. 如何防止按鈕提交?
- 7. 如何防止重複表單提交
- 8. 如何防止表單提交默認?
- 9. 如何防止提交輸入元素
- 10. 如何防止mysql隱式提交
- 11. 如何防止表單提交JQuery
- 12. 如何防止非法提交請求?
- 13. 如何防止地方提交審批?
- 14. 如何防止提交後刷新?
- 15. 如何從'分離頭狀態'恢復提交?
- 16. 如何防止「您確定要離開此頁面嗎?」提交表單提醒?
- 17. 如何防止在輸入時提交表單提交
- 18. 如何防止表單提交非提交按鈕?
- 19. 如何防止提交刷新也確實提交表單?
- 20. 如何防止提交到某個分支?
- 21. 如何用分離的HEAD提交覆蓋提交?
- 22. Ajax.BeginForm +防止提交進入
- 23. 防止readline行提交
- 24. 防止默認提交: - Angularjs
- 25. 防止表單提交
- 26. 防止多次提交
- 27. 防止多個Ajax提交
- 28. jquery防止表單提交
- 29. 防止形式空提交
- 30. jquery防止表單提交
雖然這會阻止提交分離的頭部,但它也會干擾(交互式)rebase操作。在內部,rebase使用分離的頭來重放提交。 – ad22
允許rebases需要[檢測它們]在鉤子中(http://stackoverflow.com/questions/3921409/how-to-know-if-there-is-a-git-rebase-in-progress)。但是,我很難想象一個開發人員會進行交互式重新分配,並且害怕同時承諾分離的HEAD。 – fracz