使用git,如果我合并一个分支然后删除该分支,那么个别提交会丢失吗?

Aje*_*i32 2 git

git merge命令文档中,结果git merge topic如下所示:

      A---B---C topic
     /         \
D---E---F---G---H master
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它在我看来,如果我要删除topic以使我的分支列表保持整洁,那么提交A,B和C的所有记录都将丢失,只留下一个提交,H(并且可能会删除所有提交消息)来自A,B和C):

D---E---F---G---H master
Run Code Online (Sandbox Code Playgroud)

确实如此,如果是这样,我该如何预防呢?例如:

D---E---F---G---A---B---C master
Run Code Online (Sandbox Code Playgroud)

Die*_*Epp 9

不,一切都会在那里.

删除主题分支之前:

      A---B---C topic
     /         \
D---E---F---G---H master

之后删除特性分支:

      A---B---C
     /         \
D---E---F---G---H master

分支只是提交C的指针.删除它不会消除提交.

请注意,如果尚未合并主题分支,则删除它将失败,除非您使用git branch -D.该git branch -d命令只会删除合并的分支,这会保留所有历史记录,但会删除分支名称.

脚注:您可以通过使用git rebase master主题分支,然后将主数据库快速转发到主题以及删除主题来获取以下历史记录.

D---E---F---G---A'---B'---C' master

请注意,虽然这是可能的,但可能并不理想 - 原始提交A,B和C会因重新定位而丢失.