【发布时间】:2021-03-12 15:08:46
【问题描述】:
我有以下情况
o--A--B--C <-origin/master
\-D--E <-master
我想实现以下目标
o--A--B--C--D--E <-origin/master
并将标签保留在D 和E。
如果我做一个变基,那么 D 和 E 将被合并导致 D' 和 E'
o--A--B--C--D'--E' <-origin/master
标签也不会被移动,仍然指向提交的哈希D和E。
更新 1
如果我在C 有文件A.txt,在D 有文件B.txt,则rebase 将在提交D' 处保留A.txt 和B.txt。如何进行变基但保留我在D. 所拥有的所有文件结构和内容?
【问题讨论】:
-
D 和 E 将永远留在那里,没有什么可以改变这一点。重新定位然后手动移动标签可能是最好的选择。变基也不会合并任何东西……是什么让你认为它会合并?
-
问题标题错误。根据帖子的描述,您希望将本地 master 重新定位为 origin 的 master,但标题却相反。
-
在变基过程中存在冲突,也会导致新的哈希。
-
@OHLÁLÁ git 中每个修改历史的命令都会创建一个新的哈希。这是无法避免的
-
@OHLÁLÁ 我假设您的意思是“但 A.txt 不存在于 D”。因此,当您将 D 重新定位到 C 以创建 D' 时,A.txt 将保留在那里,因为有人添加了它。如果您不再需要它,请删除它并提交删除。 (您可以使用删除将 D' 修改为 D'',或者添加另一个带有删除的提交。