git lfs:路径中的通配符在 git 别名中不起作用

发布于 2025-01-13 17:49:23 字数 1273 浏览 0 评论 0 原文

在Windows系统上,我想锁定特定文件夹中具有扩展名的所有文件。

这些命令按预期工作:

git lfs lock $(git rev-parse --show-toplevel)/lockdata/*.txt
git lfs unlock $(git rev-parse --show-toplevel)/lockdata/*.txt
git add $(git rev-parse --show-toplevel)/lockdata/*.txt"

现在我定义别名:

git config --local alias.libsadd      "add $(git rev-parse --show-toplevel)/lockdata/*.txt"
git config --local alias.libslock     "lfs lock $(git rev-parse --show-toplevel)/lockdata/*.txt"
git config --local alias.libsunlock   "lfs unlock $(git rev-parse --show-toplevel)/lockdata/*.txt"

然后 .git/config 文件包含:

[alias]
    libslock = lfs lock E:/TEMP/test_lfs/lockdata/*.txt
    libsunlock = lfs unlock E:/TEMP/test_lfs/lockdata/*.txt
    test = add E:/TEMP/test_lfs/lockdata/*.log

“git libsadd”按预期工作。 “git libslock”不会:

$ git libslock
lfs: unable to canonicalize path "E:/TEMP/test_lfs/lockdata/*.txt": The filename, directory name, or volume label syntax is incorrect.

直接在 git bash 中执行按预期工作

$ git lfs lock E:/TEMP/test_lfs/lockdata/*.txt
Locked lockdata/aaa.txt
Locked lockdata/bbb.txt

在命令行中执行会执行其他操作(锁定不存在的“*.txt”文件),因此批处理文件不是解决方法

别名中出现不同行为的任何想法来自(以及如何修复)?

on a windows system, I want to lock all files with a Extension in a specific folder.

These commands work as expected:

git lfs lock $(git rev-parse --show-toplevel)/lockdata/*.txt
git lfs unlock $(git rev-parse --show-toplevel)/lockdata/*.txt
git add $(git rev-parse --show-toplevel)/lockdata/*.txt"

Now i define aliases:

git config --local alias.libsadd      "add $(git rev-parse --show-toplevel)/lockdata/*.txt"
git config --local alias.libslock     "lfs lock $(git rev-parse --show-toplevel)/lockdata/*.txt"
git config --local alias.libsunlock   "lfs unlock $(git rev-parse --show-toplevel)/lockdata/*.txt"

Then the .git/config file holds:

[alias]
    libslock = lfs lock E:/TEMP/test_lfs/lockdata/*.txt
    libsunlock = lfs unlock E:/TEMP/test_lfs/lockdata/*.txt
    test = add E:/TEMP/test_lfs/lockdata/*.log

"git libsadd" works as expected. "git libslock" does not:

$ git libslock
lfs: unable to canonicalize path "E:/TEMP/test_lfs/lockdata/*.txt": The filename, directory name, or volume label syntax is incorrect.

Executing directly in git bash works as expected

$ git lfs lock E:/TEMP/test_lfs/lockdata/*.txt
Locked lockdata/aaa.txt
Locked lockdata/bbb.txt

Executing in commandline does something else (locking a nonexisting "*.txt" file), so a batch file is no workaround

Any ideas where the different behaviour in the alias comes from (and how to fix)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文