2012-09-16 92 views
1

我是Git的新手,請耐心等待。提交請求覆蓋之前的提交

我有一個Git倉庫(在GitHub上),我有很多對Git沒有經驗的編碼人員。當我聘用他們時,我會要求他們向我的存儲庫發出拉取請求,以便在合併之前審查他們的更改。目前我最大的問題是,我們經常在更改後將它們合併到存儲庫中,但在它們發出pull請求之前,這意味着合併它們的pull請求將覆蓋先前的提交。

有沒有辦法讓我確保這不會發生,除了告訴他們避免這個問題?

+0

我看到你刪除了接受的答案。是否有任何其他信息可以添加到我的答案中? – VonC

+0

@vonc我真的很想找一個解決方案來避免整個問題,而你的答案解釋了什麼導致了它,以及在問題出現後我應該怎麼做。 – David

回答

1

困難的方法:要求他們在合併之前創建(本地)分支。

簡單的方法:讓我們忘記「如何避免這個問題」,告訴他們如何解決它。在git中,我們有git reflog可以回滾(幾乎)任何更改。

P.S.合併不會「覆蓋」以前的提交。即使您沒有reflog,您也可以使用git log ; git reset來修復(大部分)。

+0

我的問題主要是我必須非常仔細地檢查他們的提交,以查看他們的一些早期提交是否會丟失,如果我自動合併他們的拉取請求。坦率地說,我不明白你的答案。但是我會回顧一下你提到的命令(特別是reflog),看看我是否可以更好地理解你的答案,當我有更多的Git知識時。 – David

2

確保不會發生這種情況的方法是拒絕任何不能以快進方式應用的提交。
但是,沒有任何東西阻止用戶在不首先更新他/她自己的分支的情況下提交拉取請求。

正確的pull請求應該以快進的方式應用,這意味着貢獻者應該首先在目標repo的最新提交(即git pull --rebase)之前重新綁定他/她的工作,進行拉取請求。

換句話說,他們應該首先將您合併在自己本地回購的其他變更,測試他們的貢獻仍在工作,之前拉動請求。
如果他們這樣做,覆蓋以前的提交不會有任何問題。
如果存在,您只需拒絕拉取請求,請求撰稿人先重新綁定本地回購。