gpt4 book ai didi

Git:由于 rebase merge ,如果分支等于或落后于主分支,则删除分支?

转载 作者:行者123 更新时间:2023-12-05 05:12:11 28 4
gpt4 key购买 nike

要删除一个分支,我至少知道这些命令:

git branch oldbranch -d
git branch oldbranch -D

第一个删除完全 merge 的分支,第二个在任何情况下删除它。

现在考虑一个工作流程,其中一个分支被重新设置为 master,而不是 merge 。第一个命令不会删除分支(它没有 merge )。第二个将删除分支,但无论如何它都会这样做(即使 rebase 尚未完成)。我想知道是否有更安全的方法来删除分支,可以是:

  1. 在更坏的情况下“如果当前分支和主分支之间的差异为空则删除”
  2. 在更好的情况下(因为 master 可以有其他新的提交)“如果 master 包含的提交等于该分支自创建以来的提交,则删除”(当然,“相等”位可能会有问题一些情况,但对于更简单的情况..)

你知道这样的命令吗?

最佳答案

万一

  1. in a better case (since master can have other new commits) "delete if master contains commits which are ~equal to the commits of this branch since its creation" (sure, there can be problems with the "equal" bit in some cases, but for simpler ones..)
git rebase master oldbranch
git checkout master
git branch -d oldbranch

应该这样做,rebase 识别并忽略你已经挑选的提交,如果这是所有这些 masteroldbranch 将是相同的提交,即 oldbranch 是已经 merge ,删除成功。

但是案例

  1. in a worse case "delete if diff between the current branch and master is empty"

是可区分的,有可能得到相同的结果但具有不同的单独步骤,其中只有累积效应匹配。这里的问题是,您希望结果历史记录是什么样的?您必须使用不同的命令来获得不同的结果。

所以我能想出的最简单的序列是

if [[ `git rev-parse master:` = `git rev-parse oldbranch:` ]]; then
echo '`oldbranch` tip identical to master tip, not bothering with rebase, deleting'
git checkout master &&
git branch -D oldbranch
else
git rebase master oldbranch &&
git checkout master &&
git branch -d oldbranch && echo oldbranch completely merged, deleting
fi

这里没有处理的情况是两个分支提示是否到达部分重叠的累积差异并以不同方式分配更改,为此您只需要决定哪个历史记录最有用。我只是 merge 。

关于Git:由于 rebase merge ,如果分支等于或落后于主分支,则删除分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54845105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com