所以,我是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
现在,我意识到我的方式错误,我正在考虑做以下事情,但希望得到更有经验的人的批准。
如果我这次做得对,或者我该做什么,请告诉我。
答案 0 :(得分:1)
这就是为什么你通常想要在功能/开发分支上而不是在主分支上的原因。
但是既然你已经处于这种情况,你可以从master创建一个新的分支,并使用git cherry-pick
从dev添加你想要的提交(cherry-pick只是在当前分支上创建新的提交,与指定为参数的提交相同的事情)。你必须抛弃当前的开发分支。
或者,您可以将dev合并到master中,可能存在令人讨厌的合并冲突,然后创建新的dev分支或将master合并到dev中以进行同步。
我不能强调这一点。您不希望在主分支上进行任何更改,包括南瓜,重置等可能会与dev分支产生不一致的情况。这就是为什么你有一个开发者。在掌握中,合并的内容是合并的。