我可以更改Git分支源自哪个分支吗?

时间:2016-08-02 15:50:47

标签: git version-control

在我们的项目中,我们有一个开发分支,每当处理问题时,我们都会从开发分支到item-xxxx并在那里完成我们的工作。

似乎item-0012item-0009而不是develop分支的提交中分支并推送。因此,将item-0012合并回开发将包括两个分支的更改。

有没有办法让item-0012重新回归developitem-0009所需的item-0012没有做出任何更改。

很抱歉,如果我错过了这些条款,仍然围绕着Git。

现在Git看起来像这样,item-0012分支item-0009分支的提交(c17):
培养─(C14) - (C16) - (C18)
____ \项目-0009-(C15) - (C17)
____________________ \ item-0012-(c20)

我希望item-0012分支停止提交(c16):
培养─(C14) - (C16) - (C18)
_____________ \ item-0012-(c20)

这可能吗?

2 个答案:

答案 0 :(得分:1)

你有没有尝试将你的物品-1200改为开发?来自rebase docs:

   Here is how you would transplant a topic branch based on one branch to another, to pretend that you forked the topic branch from the latter branch,
   using rebase --onto.

   First let's assume your topic is based on branch next. For example, a feature developed in topic depends on some functionality which is found in next.

           o---o---o---o---o  master
                \
                 o---o---o---o---o  next
                                  \
                                   o---o---o  topic

   We want to make topic forked from branch master; for example, because the functionality on which topic depends was merged into the more stable master
   branch. We want our tree to look like this:

           o---o---o---o---o  master
               |            \
               |             o'--o'--o'  topic
                \
                 o---o---o---o---o  next

   We can get this using the following command:

       git rebase --onto master next topic

你应该git rebase --onto develop item-0009 item-0012

答案 1 :(得分:1)

由于你仍在围绕git,我会给出更一般的答案。

分支机构不会相互“干扰”

重要的是要围绕git中的分支不是“一等公民”这一事实。它们只是指向特定提交的小粘滞便笺。可以移动,创建和删除它们,而无需更改存储库的实际内容中的任何内容。它们并不像提交那样被视为“不可变的历史”。

它们完全不像其他系统中的分支(Subversion等),即它们不是重量级的。

特别是,根本不存在一个分支以某种方式成为另一个分支的父级;除了他们指向的单个提交之外,分支与任何事物都没有任何关系。如果你愿意,它们只是隐秘提交哈希的别名。

Rebase是你的朋友

git rebase做你想要的。如果可以的话,试着找出如何使用git help rebase,它有ASCII图片以及获得必要命令行所需的一切,所以我不会将这些内容剪切并粘贴到这个答案中。使用git rebase进行环绕式包装也是值得的(也就是说,研究参考手册又名git help rebase) - 你可以用它来做奇妙的事情,这是它的一个杀手特征。 git