检查来自master的新分支,其中来自另一个分支的更改是从master分支出来的?

时间:2018-04-16 06:36:46

标签: git

目前我有以下分支机构:

----------- 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

还是有更好的方法(也许这甚至不起作用)?

1 个答案:

答案 0 :(得分:0)

这取决于您的计划中的-意味着什么。

我认为这是提交。在这种情况下,git stashgit 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

然而

最终目标是将所有分支集成到主中。您在分支中的差异越小,就越容易将它们组合起来。因此这种关系"分支是需要而不是避免的东西。