我们将 kickstart 代码保存在 git 存储库中,以便它在所有 kickstart 服务器上保持一致。我们有一个小脚本来显示所有当前分支,询问您要使用哪一个,然后将其拉下来并确保代码可供所有人阅读。部分代码:
git checkout main >/dev/null 2>&1
git fetch --all >/dev/null 2>&1
git pull >/dev/null 2>&1
git branch -r --no-merged
echo " main"
它不是只列出未合并的分支,而是列出了我们曾经拥有的几乎每个分支。我做错了什么?
它不是只列出未合并的分支,而是列出了我们曾经拥有的几乎每个分支。
这很可能发生,因为 Git 实际上并不合并分支,而是合并提交。选取您认为不应该存在的任何分支,然后尝试以下命令:
git log main..<some-branch-name>
这将向您显示该分支“上”但不在“上”的所有提交
main
。如果该命令的输出为空,则根据定义该分支已完全合并。
大多数分支可能“不合并”的一些原因是:
main
分支被重写,但功能分支没有被重写。您可以轻松证明 #1 是否是罪魁祸首:当您运行上面的命令时,搜索列出的提交,看看它们是否也存在于
main
中,但具有不同的提交 ID。如果提交消息、作者和日期相同,但它们具有不同的提交日期和提交 ID,那么这指向 rebase 合并或 rebase 快进策略,该策略在进行合并之前也不会重写功能分支。