由于隐私原因,我已经修改了下面的图片,但基本上我有两个分支,我试图在同一个提交。带有标记4.3.1.11的提交与具有标记4.3.1.13的提交不同。我尝试将4.3.1.11合并到4.3.1.13但没有任何改变。
我只是想在同一次提交中获得两个分支。
我该怎么做我知道有类似的问题已被提出,但我没有看到像我这样的情况已被回答。
答案 0 :(得分:0)
您只需要合并您2个分支的更改。
# Checkout the branch you want to merge the code into
git checkout branchA
# now merge the code form the other branch into this branch:
git merge branchB
现在,branchB也将包含分支A的所有代码。
答案 1 :(得分:0)
要将分支的指针移动到其他提交,只需使用:
git branch -f <branch name> <commit number>
来自:Git: move branch pointer to different commit without checkout
答案 2 :(得分:0)
可能与Merge和Commit这两个术语混淆。在git中,提交只是一个增量,在上下文中的两个更改之间。合并是一种符号提交,它代表一个实体,它结合了两个父母的分支。
这与SVN这样的修订系统有所不同,其中合并实际上是一种东西。在git中,将它视为一种策略更安全。
因此,如果你在回购A和另一个B点有一个点,它们将通过某种路径相互连接(除非它们位于2个独立的孤立分支上)。在告诉git创建一个点C,它可以被认为是分支A或B的扩展,但它是A到B或B到A的符号合并,git将考虑沿路径的所有差异,返回获得A和B的父母,直到找到共享父母。
因此,如果O-A和O-B创建O-A-C(其中C是您的合并)的路径,则将B-O-A视为路径。
这令人困惑,因为你可能会认为O-B是你想要合并的,并且忘记了O-A。但这是合乎逻辑的。
在您的示例中,如果4.3.1.11是A,origin / develop是B且4.3.1.13是G,您可以看到您的分支树只是A-B-C-D-E-F-G。所以从A到G,你只需沿树前进(你可以快进)。
换句话说,G已经包含了A,它只是已经应用了增量B-G,所以显然策略的净效果是git来说'无所事事'。
在您的示例中,4.3.1.11和4.3.1.13是标记,因此根据定义不应移动。正如您在答案中所评论的那样,您可以使用git branch -f
将分支指针移动到新提交,但这不是合并。您还可以使用git revert
删除提交(要求git创建反向提交,并将其添加到链中)