簡體   English   中英

在 git 中指定一個單向分支

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM