2011-01-25 332 views
2

假設我有一個master分支和一個project分支,都位於我們的遠程origin上。工作主要在project分支完成,但偶爾需要修復一個缺陷修復程序master,以便可以立即部署。最後,當項目完成時,我希望能夠將項目中的所有提交壓縮爲單個提交,然後將其合併到master中。我應該如何讓我的git項目分支與主人保持一致?

與功能分支

一般(未被推到origin),我們讓他們最新的通過僅僅用master基礎重建,並準備在我們快樂的方式,但由於projectorigin自己的分公司,我不知道如何以我想要的方式保存歷史記錄(由master提交,然後提交新的project提交,理想情況下沒有合併提交),因爲有關在遠程分支上重寫歷史記錄的保護措施。目前我們通過刪除遠程project並用正確的歷史記錄重新創建它,但這絕對是不理想的。

我很喜歡在遠程project上重寫歷史記錄,因爲這只是一個2人團隊,我們瞭解其含義並願意小心謹慎。但我該如何實現它?

回答

1
git checkout project 
git rebase master 
git push origin +project:project 

現在只是想弄清楚如何正確地拉另一臺計算機上的更改!

2

您可以在git的

git checkout project 

git merge origin/master 

,因爲他們來自同一個祖先來到這將合併的任何更改主有到項目,只要合併設有分公司。

+0

這只是答案的一部分。 – Arafangion 2011-01-25 16:15:37

0

我會傾向於將'項目'中的相應更改挑選爲'主',以便'主'包含您想要的代碼。

然後,我會將'master'合併到'project'中,或者只跟蹤已經應用的patch-id。 (無論哪種方式,始終如一!)。就個人而言,我認爲將'主'合併爲'項目'從長遠來看更簡單。

+0

從`project`到`master`的代碼並不是我所擔心的。雖然我將`master`合併到`project`而不是將`project`合併到`master`中可能會做我想要的,因爲無論如何我都會壓縮任何合併提交,但是我必須去嘗試它並看看它是否以我想要的方式獲得歷史。 – adamjford 2011-01-25 16:30:36

+0

而是考慮git log和gitk的' - first-parent'選項,而不是壓縮合並。 – Arafangion 2011-01-25 16:36:10

0

關於功能分支,我更喜歡在master上重新綁定它們。這對於長期運行的功能分支特別有用,它可能需要大量的開發,然後再回到master,而master將並行發展。

重新激活將採取您的分支的變化並將它們應用於master,結果將是您的新分支。 master本身將保持不變。當你project分公司簽出

你可以做到這一點像如下:

(project) $ git rebase master 

或明確:

(some-branch) $ git rebase master project 

注:衍合會重寫你的分支的歷史!所以要小心。

有關更多信息,請參閱documentation

+0

是的,這是目前我們用功能分支做的。我的問題是關於一個長期運行的項目分支,它也存在於「origin」上,它有自己的功能分支。 – adamjford 2011-01-26 19:13:05

相關問題