gpt4 book ai didi

git - 不一致的 git rev-list 计数

转载 作者:行者123 更新时间:2023-12-03 08:25:24 27 4
gpt4 key购买 nike

我正在使用 zsh 自定义提示符,我试图显示我的分支前后有多少提交。为此,我使用以下命令

git rev-list --left-right --count main...origin/main

返回a b,其中a是本地提交在远程之前,b是远程提交在本地之前。

我发现了一个我无法正确理解的不一致之处。复制代码如下

git clone https://github.com/numpy/numpy
cd numpy
git rev-list --left-right --count main...origin/main
# 0 0 # As expected

git reset --hard HEAD~10
git rev-list --left-right --count main...origin/main
# 0 31 # Whaaaaaaat?

有人可以帮助我理解我错过了什么吗?

谢谢

最佳答案

phd noted in comments ,通过某个分支名称从可达性中删除一个 merge 提交通常会从可达性中删除多个提交。鉴于 numpy 存储库在其主分支上有大量 merge ,您看到的结果并不令人惊讶。

这是一个示例(并非特定于 numpy 存储库),其中删除一个 merge 提交会从可达性中删除四个提交:

...--G--H------L--M   <-- main (HEAD), origin/main
\ /
I--J--K <-- feature

分支 feature 刚刚 merge 到分支 main (然后推送),因此提交 ML - 和 -KJIHG 等on 都是可访问的,从提交 Mmain 指向。

使main直接指向L,就像我们使用git reset --hard HEAD~1那样,删除提交M 来自 main,但也删除了提交 I-J-K。因此,重置后,您将处于“领先零”和“落后四”origin/main

关于git - 不一致的 git rev-list 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66843244/

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