gpt4 book ai didi

Git状态与不同的远程比较

转载 作者:太空狗 更新时间:2023-10-29 14:05:35 25 4
gpt4 key购买 nike

已经有人问过类似的问题here ,但我认为它被误解了(或者我误解了这个问题)。所以让我在这里问清楚。当我执行 git status 时,我得到(除其他外)一行告诉我我是否落后于(或从)我正在跟踪的远程分支。这很棒。但是,我有不止一个 Remote 。我有一个“官方” Remote (来源),它是共享的(只有当东西“准备好”时我才会推送),还有一个“个人” Remote (工作),我用它从家里/工作中推送东西,所以当我切换计算机时我可以继续工作。现在,当我执行 git status 时,会将本地分支与 origin/branch_name(或我正在跟踪的任何远程分支)进行比较。但是,我也想将它与其他 Remote /分支机构进行比较,但不 pull ,只是比较。理想情况下,我想做这样的事情:

git fetch work
git status work/branch_name

并获取我的本地分支机构与 work/branch_name 的状态比较。

请注意,我不想做 diff,也就是说,我对哪些文件/路径不同不感兴趣。我只想看看这两个分支是否/何时 fork ,或者一个是否领先于另一个。

另请注意,我可以使用 gitk --all 以图形方式获取此信息,查看两个分支在树中的位置,但我想从命令行执行此操作。此外,如果有多个分支,用 gitk --all 显示的树可能会很乱。

谢谢

最佳答案

不幸的是,git status始终使用当前配置的上游,即查看当前分支(我们称之为 $branch ),然后检查 branch.<em>$branch</em>.remote 的配置值和 branch.<em>$branch</em>.merge .

除了修改 git status采取--pretend-upstream flag 或类似的,这让你只有两个选择:重新配置上游(可能是暂时的),或模拟 git status .由于您只需要提交计数,事实证明这相对容易:我们只需要知道所需上游的名称即可。

为了使其完全通用,您可以发明类似 branch.<em>$branch</em>.extstatus 的东西或其他,然后遍历 git config --get-all输出,但只是硬连接一个特定的 work/branch_name你可以这样做:

git rev-list --count work/branch_name..HEAD

和:

git rev-list --count HEAD..work/branch_name

.. notation 选择在 1 右侧分支上的提交,2 排除左侧分支上的任何提交,以及 --count使 git rev-list仅打印选择中提交的计数;所以第一个命令让你“ promise 你有而他们没有”(你的“领先”计数),第二个命令让你“ promise 他们有但你没有”(你的“落后”计数)。

将两者与shell结合起来:

echo "vs work/branch_name: ahead $(git rev-list ...), behind $(git rev-list ...)"

(填写 ... 部分,我遗漏了这些部分以使线条适合)。将其设置为 git 或 shell 别名就可以了。


1更准确地说,“可访问自”:即提交本身或其任何 parent 、祖 parent 等。

2更准确地说,任何标识提交或可用于定位提交的内容(例如,带注释的标签)。

关于Git状态与不同的远程比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696557/

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