2013-05-30 84 views
6

我用我的回購管理分支的git的流動方式,如描述: http://nvie.com/posts/a-successful-git-branching-model/git的合併與--no-FF和--squash

因此命令我應該使用順序將是如如下:

git checkout mybranch 
git pull --rebase origin develop 
git checkout develop 
git merge --no-ff mybranch 

然而,有一兩件事,我想這樣做不同的,在某些情況下:

我想保留我的所有提交的關於我的特性分支(mybranch),但有他們混在一起(或擠壓)進來當合併到develop時,將其轉換爲單個差異。

所以這是我覺得命令的順序應該是:

git checkout mybranch 
git pull --rebase origin develop 
git checkout develop 
git merge --no-ff --squash mybranch 

我會做錯事,如果我是--no-ff--squash結合?

我很猶豫嘗試了這一點,從如何「擠壓」和「保存歷史」莖是正交的要求 - 見Squashing all of my commits (including merges) into one commit without altering history

我的理由是,我想保留歷史上的一個分支(mybranch)和suqash上另一個分支(develop) - >因爲這些操作在不同的分支中執行,所以這是可以的。

+0

你爲什麼不只是嘗試。如果它不起作用,你總是可以做一個硬復位。只需在老地方建立一個臨時分支。繼續。嘗試一下。你知道你想... – 2013-05-30 02:54:48

回答

1

我想結合--squash和--no-FF一起,並得到:

fatal: You cannot combine --squash with --no-ff. 

一個Git合併基本上是一個南瓜。解決衝突後,它將作爲一項開發提交。合併版本的差異是衝突解決的結果。是的,mybranch上的變化被保留下來。在合併後只需執行「gitk mybranch &」進行驗證。

除了陰影是正確的。不要害怕。創建一個新的分支,四處遊戲,看看結果是什麼。

損壞是在你的「git pull --rebase origin develop」命令中完成的。

答案(假設你已經制定當地分支機構基於出身/開發):

git checkout develop 
git pull 
git merge --no-ff mybranch 
+0

世界上誰是「The Shadow」?你的意思是「蛋糕」? – masotime

+0

我的猜測是,自從我的帖子以來,有人更改了他們的名字或刪除了答案。 – cforbish