0

我有以下情况

o--A--B--C <-origin/master
 \-D--E <-master

我想实现以下

o--A--B--C--D--E <-origin/master

并将标签保持在Dand E

如果我做一个变基,那么DandE将被合并,结果D'E'

o--A--B--C--D'--E' <-origin/master

标签也不会被移动,仍然指向提交的哈希DE.

更新 1

如果我有 file A.txtatC和 file B.txtat D,rebase 将同时保留A.txtB.txtat commit D'。我怎样才能做一个变基但保留我所拥有的所有文件结构和内容D。?

4

2 回答 2

0

如果节点 D 和 E 有标签,它们将不会随变基一起移动。D 和 E 是哈希的占位符名称,而不是 git 标签。

我认为您可能错误地使用了标签一词,或者是随意使用。但 agit tag正是你想要的。

于 2021-03-12T15:16:33.600 回答
0

首先让我们就合并的含义达成一致。你写了:

如果我做一个变基,那么 D 和 E 将合并产生 D' 和 E'...

与其说merge 那里,不如说 replayed 更有意义。您的案例中的实际合并会导致两个父级(来自每个分支)的新提交。

没有办法变基保持 D 和 E 提交 ID 完整。

您必须选择变基或合并。如果你变基,你的提交 ID 会改变,然后你可以为 D' 和 E' 创建新的标签(并且可能丢弃你以前的 D 和 E 的标签)。

如果你合并,D 和 E 的提交 ID 将保持不变,你可以使用现有的标签,但你将有一个合并提交,你的历史不会是一条直线。

于 2021-03-12T15:29:57.813 回答