[英]Specify a one-direction branch in git
假設一個 repo 有一個master
分支和一個junk
分支。 有沒有辦法配置 git 以確保我和我的同事永遠不會將junk
合並到master
?
最簡潔的答案是不。 特別是 Git 並沒有真正合並分支。 它合並提交。 像junk
這樣的分支名稱只是一個標記,意思是“最新的此類提交”,Git 會為您保持最新狀態。 但是因為你可以運行:
git merge a123456
這是一個哈希ID而不是分支名稱,如果該提交是junk
分支上的最新提交,即使當前分支是master
,也會將該提交(“那個分支”)合並到當前分支中,並且贏了沒有任何跡象表明這正在將junk
合並到master
中,即使它正在做完全相同的事情。
綜上所述,您可以使用各種 Git 鈎子,或者避免直接使用git
命令本身,以防止自己出錯。 例如,編寫你自己的前端命令——我在這里將它mgit
作為my git
,但你可以將它命名為git
,只要你讓它以某種方式調用“真正的 Git”——並讓你的mgit merge
檢查:
mgit() {
local subcmd="$1"
case "$subcmd" in
merge)
# if current branch is master and argument is junk, error
... write code here ...
;;
... add additional subcommands here ...
esac
}
編寫mgit
只是編程的小事,現在您有了一個命令,可以執行您希望它執行的操作。
(至於 Git 鈎子,目前還沒有一個合適的地方可以阻止自己犯這個特定的錯誤,所以除非你想真正參與 Git 項目,否則不要這樣做。制作鈎子的工作正在進行中更有用和更友好等等,你可以進入。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.