2012-11-05 20 views
2

有沒有辦法讓git發出警告,如果你試圖重新綁定已經被推送的分支? (即在你可能會「重寫歷史記錄」的情況下)。如果重新綁定被推送到遠程的分支,會發生警告?

(我知道在某些情況下,git不會知道你是否在重寫歷史記錄,但通常是? )它會有這個信息。)

+0

不是「推」重新啓動的分支無論如何都會被拒絕,並且總是被「強制」? – pmr

+0

@pmr我不確定,我想這是可能的,但在進入這種情況之前我想知道! – mjs

回答

4

你可以使用git的pre-rebase掛鉤在那種情況下產生警告或錯誤。 (the various githooks is here的文檔。)sample pre-rebase hook做了一些非常類似於你想要的東西,雖然(如http://git-scm.com/book/en/Customizing-Git-Git-Hooks指出),你需要將分支名稱next更改爲你發佈的分支被調用的任何東西。

這可能也值得指出(因爲pmr在上面的評論中提到),如果你重寫了公共歷史,那麼試圖推動重寫的分支將不會成功 - 你會得到一個錯誤,以避免這個問題。

此外,你應該知道,你通常可以安全地完成:

git rebase <upstream-remote-tracking-branch> 

例如,如果你在master分公司工作,而其上游的遠程跟蹤分支origin/master,則:

git rebase origin/master 

...纔會考慮重新應用提交未包含在origin/master,當你推到master在遠程跟蹤分支更新origin以及當您從origin獲取。 (我之前說的「通常」的原因是,如果您使用多個遙控器,或者您以不同尋常的方式設置了遠程追蹤分支,則這會變得更加複雜。)