Git 从master创建一个干净的分支,并从另一个分支进行所需的提交

Git 从master创建一个干净的分支,并从另一个分支进行所需的提交,git,version-control,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 所以现在

所以,我是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
(我现在意识到这也会达到我的目的。)

这里是地狱

我继续开发dev brach并做出了承诺

dev -> A -> B -> C-> D -> E 
然后,在意识到我自己进入的位置后,我从master new_dev创建了一个新分支,但是-我将dev重新放在它上面,并做了几次提交(同样,这显然是一件愚蠢的事情)

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

  • 从主节点创建新分支
  • 从dev那里得到的Cherry pick E
  • Cherry pick F G来自新开发的

  • 让我知道这次我是否做对了,或者我应该做什么。

    这就是为什么您通常希望在功能/dev分支上而不是在master上挤压的原因

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

    或者,您可以将dev合并到master中,可能存在严重的合并冲突,然后创建一个新的dev分支或将master合并到dev中以同步它们


    我怎么强调都不过分。您不希望对主分支进行任何更改,包括挤压、重置等,这可能会导致与开发分支不一致。这就是为什么在master中有一个dev。合并的内容将永远合并。

    这是有道理的。如果我压扁了德夫,我就可以省下几个小时的头撞墙的时间了。谢谢!
    dev -> A -> B -> C-> D -> E 
    
    new_dev -> ABCD -> A -> B-> C-> D-> E -> F-> G