目前我有以下分支机构:
----------- master
\---------------- feature
---------------- awesome-feature
我不小心开始处理新事物,我忘了git checkout master
然后git checkout -b feature/new-feature
,所以现在所有新的更改都在awesome-feature
分支上。所以现在我想这样做:
----------- master
\---------------- feature
---------------- awesome-feature
---------------- new-feature
所以我awesome-feature
的所有新更改都在new-feature
分支上。这样做的正确方法是:
git stash
git checkout master
git checkout -b feature/new-feature
git stash apply
还是有更好的方法(也许这甚至不起作用)?
答案 0 :(得分:0)
这取决于您的计划中的-
意味着什么。
我认为这是提交。在这种情况下,git stash
和git stash apply
无用。
您使用命令序列得到的是:
/ new-feature
----------- master
\---------------- feature
---------------- awesome-feature
你更有可能想要这个:
/---------------- feature
/------------------- awesome-feature
----------- master \
\...........+ new-feature
当您将git merge awesome-feature
附加到命令序列时,可以得到此信息。这不是"复制"个人提交new-feature
。
然而,
通常你也想要" master"的实际状态。在你的awesome-feature
分支之前也是如此。
/---------------- feature
----------- master
\---------------- awesome-feature
\ new-feature
这是你得到的
git checkout awesome-feature
git rebase master
git checkout -b feature/new-feature
如果我只是从当前的awesome-feature分支git checkout new-feature,它们就会被连接起来。 - MortenMoulder
不是。
在git中,分支基本上是提交的标签"标签。所以,是的,只要你在分支提交之前没有改变任何提交,分支看起来就会连接"。但你可以单独 rebase 。
然而
最终目标是将所有分支集成到主中。您在分支中的差异越小,就越容易将它们组合起来。因此这种关系"分支是需要而不是避免的东西。