git - git 如何跟踪标记有 fixup/squash 标志的提交哈希?
问题描述
我知道git commit --fixup <commit A's hash>
在执行git rebase -i --autosquash
.
当我运行时git log
,我的提交日志看起来像
commit <commit B's hash>
Author: xxx
Date: xxx
fixup! commit A's comment
commit <commit A's hash>
Author: xxx
Date: xxx
commit A's comment
对我来说,修复提交看起来与普通提交没有什么不同,除了评论前面有一个“修复!”。
我想知道 git 如何以及在何处跟踪commit B
标记为 的修复提交<commit A's hash>
这一事实,如果有的话;如果是这样的话,是否有一个git log
等价物可以让我一起<commit A's hash>
访问commit B
?
谢谢!
解决方案
(免责声明:此答案基于观察)
它不会跟踪要修复的提交,它会在您执行变基时查找它并使用提交消息来找到正确的提交。
我尝试了以下方法:
- 创建了一个新的存储库
- 做了一些提交
- 进行了 2 次提交,均带有“初始”消息
然后我做了一个修复提交,修复了这两个中的最后一个
git commit --fixup bb4adbd
日志现在如下所示:
λ git lg
* 21e0572: (5 minutes ago) fixup! initial (HEAD -> master)
| Lasse Vågsæther Karlsen <lasse@vkarlsen.no> (Wed, 16 Jan 2019 17:32:51 +0100)
|
* bb4adbd: (5 minutes ago) initial
| Lasse Vågsæther Karlsen <lasse@vkarlsen.no> (Wed, 16 Jan 2019 17:32:38 +0100)
|
* e6549e4: (9 minutes ago) initial
| Lasse Vågsæther Karlsen <lasse@vkarlsen.no> (Wed, 16 Jan 2019 17:28:59 +0100)
|
* a311a82: (9 minutes ago) second
| Lasse Vågsæther Karlsen <lasse@vkarlsen.no> (Wed, 16 Jan 2019 17:28:12 +0100)
|
* 2a5ca27: (10 minutes ago) initial
Lasse Vågsæther Karlsen <lasse@vkarlsen.no> (Wed, 16 Jan 2019 17:27:12 +0100)
如果我这样做:
git rebase -i HEAD~3
然后 git 建议:
pick e6549e4 initial
fixup 21e0572 fixup! initial
pick bb4adbd initial
这里 git 正在尝试修复我的第一个“初始”提交,这不是我之前告诉它修复的那个。
但是,如果我只是这样做HEAD~2
,则表明:
pick bb4adbd initial
fixup 21e0572 fixup! initial
这意味着 git 根本不会跟踪这是关于哪个提交,它只是fixup! <commit message>
在修复提交的提交消息的末尾记录 a 。
关于它为什么这样做而不是记录 SHA 的猜测是,这将在 rebase、cherry-pick 等中幸存下来。此外,这可能是在没有真正的方式以适当的方式记录此 sha 的情况下添加的方式,因为如果它确实记录了它修复的提交的 sha,那么该记录将阻止变基,或者也必须进行修改。
推荐阅读
- python - 复杂的 SQL 查询适用于 Postgresql pgAdmin 4 但不适用于 Python
- android - 适用于 Android 的 Video.js CDN(响应式)
- android-studio - 如何在 Flutter 应用程序的 Android Studio 运行窗口中禁用“相同行”消息
- java - Spring & Docker:本地主机没有发送任何数据
- javascript - 在姿势估计模型上绘制关键点
- java - 尝试创建 IBM websphere SIBus 时出现 NullPointerException
- java - 用整数隐藏类型泛型函数类型参数
- android - net::ERR_CACHE_MISS Android webview 与
- javascript - 逻辑 - 为比赛制定时间表
- c++ - 混合 cuda 和 cpp 模板和 lambda