0

我有几个包含 master 和 dev 分支的 repo。Master 代表发布,而 dev 代表当前的可构建版本。还有许多其他功能分支在合并到 dev 后被删除。

我最近更改为使用拉取请求工作流程,在此之前,我执行了压缩合并。一些 repos 是新的,并且一直使用 pull request 工作流程,但是,一个较旧的 repos(也是最重要的)之一使用了 squashed merge。修订图如下所示

在此处输入图像描述

此时,所有更改都已提交,并且用于合并更改的拉取请求。忽略海关和收藏品,我希望有这样的修订图:

在此处输入图像描述

我的问题是:

  • 第一个修订图有什么问题吗?

  • 我怎样才能让图表更像第二个?

4

1 回答 1

1

Git 实际上确实有符号引用,其中一个引用包含另一个引用的名称,而不是它的值。

直到最近,这些大多都不起作用,1除了HEAD. mainHEAD通常是对其他分支名称的符号引用。该git checkout命令或git switchGit 2.23 及更高版本中的新命令为您管理此符号引用。

同时,到达远程,例如origin可以有一个象征性的HEAD,例如,origin/HEAD -> origin/master。你的 Git 根据它在 URL 上询问 Git(在本例中为 Git)时获得的结果来设置这些origin分支,它的 HEAD名称是什么。如果他们 HEAD是对他们 master的象征性引用,那么你origin/HEAD应该是对你的象征性引用origin/master

但除了这些情况之外,每个引用都只包含一个原始哈希 ID。最好的2种绘制方法是绘制包含哈希 ID 的引用,或指向由该哈希 ID 选择的 Git 对象。只有符号引用应该被绘制为指向另一个引用。


1sym尝试创建包含刚刚创建的分支名称的符号分支br

git branch br
git symbolic-ref refs/heads/sym refs/heads/br

列出分支git branch以确保它有效。现在让 Git 删除分支sym

git branch -d sym

旧版本的 Git 会删除分支br!如果您的 Git 已删除sym,则您有一个 Git,这些符号引用在其中工作得更好。

2最好当然是见仁见智,但既然我正在写这个答案,我就可以使用我的意见。:-)

于 2019-12-13T23:46:58.067 回答