在我们的项目中,我们有一个开发分支,每当处理问题时,我们都会从开发分支到item-xxxx并在那里完成我们的工作。
似乎item-0012
从item-0009
而不是develop
分支的提交中分支并推送。因此,将item-0012
合并回开发将包括两个分支的更改。
有没有办法让item-0012
重新回归develop
? item-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)
这可能吗?
答案 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等),即它们不是重量级的。
特别是,根本不存在一个分支以某种方式成为另一个分支的父级;除了他们指向的单个提交之外,分支与任何事物都没有任何关系。如果你愿意,它们只是隐秘提交哈希的别名。
git rebase
做你想要的。如果可以的话,试着找出如何使用git help rebase
,它有ASCII图片以及获得必要命令行所需的一切,所以我不会将这些内容剪切并粘贴到这个答案中。使用git rebase
进行环绕式包装也是值得的(也就是说,研究参考手册又名git help rebase
) - 你可以用它来做奇妙的事情,这是它的一个杀手特征。 git
。