Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git重新设置浮动分支的基址_Git_Rebase - Fatal编程技术网

git重新设置浮动分支的基址

git重新设置浮动分支的基址,git,rebase,Git,Rebase,我已经导入了另一个回购协议,作为基于解决方案的分支 现在,新导入的分支是浮动的,而它应该以图像中指定的方式连接 我应该怎么做的基础 git checkout imported-branch git rebase ????? --onto ???? 您无法获取所绘制的内容,因为您绘制了提交哈希ID:f8114a。考虑到f8114a被绘制为根提交,这意味着f8114a在过去、现在和将来都始终是根提交。但在绘图的右侧,f8114a不是根提交:它有一个父级d0ece。因此,您声称,f8114a既是根提

我已经导入了另一个回购协议,作为基于解决方案的分支

现在,新导入的分支是浮动的,而它应该以图像中指定的方式连接

我应该怎么做的基础

git checkout imported-branch
git rebase ????? --onto ????

您无法获取所绘制的内容,因为您绘制了提交哈希ID:
f8114a
。考虑到
f8114a
被绘制为根提交,这意味着
f8114a
在过去、现在和将来都始终是根提交。但在绘图的右侧,
f8114a
不是根提交:它有一个父级
d0ece
。因此,您声称,
f8114a
既是根提交(没有父级)又是常规的日常提交(父级,
d0ece
),这是不可能的

你也许能得到你想要的。这取决于你到底想要什么。不过,尝试使用
git-rebase
执行此操作通常是个坏主意:如果您试图移植到某个分支上的提交集中存在任何分支和合并操作,那么rebase本身将不得不重新执行所涉及的任何合并,而这正是破坏这些操作的诀窍

现在,请记住,任何提交,无论其散列ID是什么,以及它可能具有的父散列ID是什么,都表示该提交中包含的文件的完整快照。所以commit
f8114a
是一个快照。由于它没有父级(在左侧),Git将把它显示为与没有文件的伪提交的比较。1因此,
f8114a
包含添加其所有文件,当作为一组更改查看时

如果您使用
f8114a
并将其复制到新的和改进的?提交让我们调用这个
f9114a
,虽然实际的散列ID可能会有所不同,但我们需要有一些东西来调用它2,它确实有一个父提交,不过,现在
git show
和其他将副本与其父副本进行比较的git操作将有一个快照进行比较。因此,现在,与添加所有这些文件不同的是,diff可能会说删除大部分文件,然后创建这些大部分是新的文件,然后更改大量剩余的文件

如果您同意的话,很容易在您自己的存储库中实现这一点,而不需要在任何人制作的存储库克隆中实现。只需使用
git replace
--graft
选项即可。有关详细信息,请参阅

一旦您对某些替换感到满意,您就可以使用无操作的
git筛选器repo
(或旧的但仍然受支持的,并包含在git发行版中的
git筛选器分支
)来重写可从
导入分支
的提示访问的提交。这将“将替代物固定到位”,并允许您丢弃移植物;克隆此筛选存储库将生成筛选存储库的副本,该副本不再使用替换技巧


1技术上,Git使用伪造此伪提交。它将提交树与空树进行区分,以生成所有“添加整个文件”的区分块


2如果你愿意,可以叫弗雷德、巴尼或威尔玛

f8114a
d0ece
之间的关系是什么?例如:您是否知道
f8114a
的内容与
d0ece
的内容完全相同?@LeGEC,它们可能相同或变化最小。