2014-11-20 147 views
3

我有一個遠程存儲庫的本地克隆與主和branch1git工作流後提交

master是最新的,直到我做了一些關於branch1的工作,我承諾(記住,所有地方)。在完成我的branch1工作後,我有點困惑如何去做後續步驟。

我的想法是切換到master,並做了git merge branch1,然後做我的本地的master副本推到遠程(我的本地master是最新的遠程master)。這是正確的還是有更好的方法來做到這一點?

+0

爲什麼選擇做'混帳checkout','混帳merge',然後'混帳push'時,你可以只是做'混帳push'?我更喜歡導致命令數量最少的工作流程來輸入 – 2014-11-21 00:00:14

+0

我沒有意識到我可以自己完成git push,它也會執行合併嗎? – 2014-11-21 03:09:35

+0

如果您的上游已更改,則必須進行合併/重新分配。如果您不在本地主人工作,則不需要使用兩個本地分支,但可以消除結帳/合併。 – 2014-11-21 03:29:26

回答

4

這一切都取決於您的workflow。你有多個開發者在項目上工作,或者只有你?

如果您是該項目的唯一開發人員,那麼您的建議很好。您在本地分支,執行您的更改,合併和推送。

另一種方法是創建遠程分支,將本地推送到遠程分支,然後合併在一起(如果您使用的是Stash,BitBucket或其他遠程主機技術)。如果您正在執行協作代碼評論或需要與團隊分享您的工作,則後一種方法很好。您也可以推送到遠程分支進行備份。

+0

快速的問題,合併後,我必須做一個提交與主?或者我可以推? – 2014-11-20 22:20:13

+1

合併不需要提交,因爲您只是將提交提交到目標(例如主目錄)的提交歷史記錄中。 – 2014-11-20 22:21:12

+0

很酷的感謝,感謝詳細的答案 – 2014-11-20 22:21:38

2

這是將更改從branch1合併到您的master分支的正確方法。關於git合併here有一些很好的文檔。

3

當我在一個項目上進行獨立工作時,我儘量避開主人的工作。抵制誘惑。

無論是我自己的項目還是其他人的我一直在克隆它,創建一個新的develop分支並在那裏工作,並將develop合併到master

我也經常會創造過的develop特性分支,我這樣做,所以,如果我需要調整當前運行代碼的東西,我可以藏我的變化,切換到develop,進行修正和歸併到master並仍然能夠回到我正在開發的功能。

我的功能分支從未被推送到原點。一旦功能合併到開發中,我將刪除功能分支。

如果我在develop分公司工作,並有一個特性分支我的工作,我通常會重訂於develop分支我的特性分支。

+0

我試圖抗拒的誘惑;) – 2014-11-20 22:24:58

+0

工作流可以根據它工作的人員變化,但給出的鏈接是相當不錯的出發點,這是一個好主意,理解爲什麼人們有一定的工作流程,因爲你會來跨越他們在許多開源項目上。 – Casey 2014-11-20 22:26:17

3

我通常使用這個工作流程。假設上的名字my_project在你的系統的主目錄中存在回購,進入這樣的:

cd ~/my_project 

一旦在該項目中,我做了分支機構的檢查:

git branch -a 

,將列出所有分支機構。如果你確定沒有其他分支想要處理,那麼可以跳過這一步。現在,確保你是這樣的主人:

git checkout master 

好,好嗎?現在,讓我們簽出develop分支這樣的:

git checkout -b develop 

那麼現在就同時創建,並簽了一個名爲develop分支。

現在在開發做你想做的事情。在適當的時候提交。只要做你的事情。

現在,當談到時間master結賬master這樣的合併:

git checkout master 

雖然在那裏,你現在有兩個選擇。你可以做一個標準的合併是這樣的:

git merge develop 

所以現在master將與develop合併。但人的時候,我喜歡用這樣的沒有快進(--no-ff)選項:

git merge --no-ff develop 

本網站explains it in detail,但長期和短期的它是通過使用--no-ff你基本上把一個額外提交到合併這標誌何時合併發生。這樣做的主要好處是,如果某事發生了什麼事情,並且需要調查(或回滾)發生了什麼事情,那麼--no-ff相關的提交很明顯可以發現並回滾到。比試圖破譯您在回購中可能擁有的大量提交更容易。

--no-ff,你與其他人分散團隊的工作變得更有價值。通過使用--no-ff提交合並的意思,每個人在處理提交後相關問題時都會變得更加容易。

這麼說,我經常做平原git merge develop,當我對我自己簡單的項目工作,我在一個藍色的月亮做出新的調整一次。

Git是最終源控制管理系統,你這麼如何處理犯基本上要依賴於處理,將需要回滾,如果/當一起去的問題你的舒適程度。