问题标签 [git-update-ref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
90 浏览

git - 为什么`git update-ref -d`不删除空的父目录?

git 中有多种类型的 ref,其中最常见的一些是分支(存储在 中.git/refs/heads)、远程跟踪分支(.git/refs/remotes)和标签(.git/refs/tags)。

但是也可以创建和使用任意的非标准 refs,这些 refs 存在于.git/refs. 这对于将自定义元数据存储在您不希望用户直接与之交互的存储库中很有用。例如,GitHub 使用这些类型的 refs 来公开对 pull request 分支的引用,并且 Emacs git 客户端Magit在启用适当的设置时使用它们定期保存未提交的更改。此类引用通常需要使用 git 的所谓“管道”命令进行操作,因为面向用户的“瓷器”命令不了解或不支持它们。

我正在使用管道命令玩非标准参考,git update-ref并发现了一些奇怪的行为:

当我创建 refrefs/foo/bar/baz时,git update-ref创建了必要的父目录。当我删除 ref 时,它很聪明地删除了 parent directory bar,该目录现在已变为空。但是,删除“祖父母”目录还不够聪明,删除后该目录foo现在也是空bar的。

这是一个错误吗?

0 投票
1 回答
164 浏览

git - 终端中的 Git 版本与 Visual Studio Code 中的不同

我尝试使用Homebrew ( brew) 在 Mac 终端上更新 Git,除了终端中的目录不同外,一切看起来都很好。命令“which git”给了我/opt/homebrew/bin/git,版本是 2.34。

但是在 Visual Studio Code 中它说/usr/bin/git。这里的版本是 2.30。

我该如何解决这个问题?