从master创建一个干净的分支,并从另一个分支

时间:2017-08-23 20:21:45

标签: git version-control

所以,我是git的新手,而且它是一个非常学习的曲线 - 我很快就会看到这个曲线。

我从master创建了一个dev分支,然后进行了一些提交。

dev -> A -> B -> C-> D

然后我合并为主人。

(on branch dev)$ git merge master
git checkout master
git merge dev

然后我压扁了4个提交并推送到远程

git rebase -i HEAD~4
git push

所以现在

master: ABCD

(我现在意识到这也会做我想做的事。)

git reset --soft HEAD~3 &&
git commit

这就是地狱的地方。

我继续开发dev开发并做出承诺。

dev -> A -> B -> C-> D -> E 

然后,我意识到我自己进入了这个地方,我创建了一个来自master,new_dev的新分支但是 - 我将dev重新设置为它并做了几次提交(再次,显然是一个愚蠢的事情)

new_dev -> ABCD -> A -> B-> C-> D-> E -> F-> G

现在,我意识到我的方式错误,我正在考虑做以下事情,但希望得到更有经验的人的批准。

  1. 从主人
  2. 创建新分支
  3. 来自dev的Cherry pick E
  4. 来自new_dev的Cherry Pick F G
  5. 如果我这次做得对,或者我该做什么,请告诉我。

1 个答案:

答案 0 :(得分:1)

这就是为什么你通常想要在功能/开发分支上而不是在主分支上的原因。

但是既然你已经处于这种情况,你可以从master创建一个新的分支,并使用git cherry-pick从dev添加你想要的提交(cherry-pick只是在当前分支上创建新的提交,与指定为参数的提交相同的事情)。你必须抛弃当前的开发分支。

或者,您可以将dev合并到master中,可能存在令人讨厌的合并冲突,然后创建新的dev分支或将master合并到dev中以进行同步。

我不能强调这一点。您不希望在主分支上进行任何更改,包括南瓜,重置等可能会与dev分支产生不一致的情况。这就是为什么你有一个开发者。在掌握中,合并的内容是合并的。