将参数传递给 git 别名不起作用
Passing an argument to git alias not working
我在 Windows 10 上创建了以下别名来发出 commit -am <commit message>
命令。我使用 </code> 标记来注册一个参数,但它不起作用。</p>
<p><code>git config --global alias.cam 'commit -am '
发出以下命令returns错误信息如下:
git cam "test commit"
错误信息:
fatal: paths 'test commit ...' with -a does not make sense
如何进行这项工作?我研究了如何在 git 别名中使用参数,但是 none 的资源为我的问题提供了一个简单的解决方案。谢谢。
这是 Git 初学者的规则:不要使用 git commit -a
。
这是高级 Git 用户的规则:不要使用 git commit -a
除非:
- 你会 运行
git add -u
在 git commit
之前
- 您知道存储库没有使用编写错误的预提交脚本,该脚本在
git commit -a
存在时会出现异常行为。
来自 :
@jthill That works, but now it just displays the untracked files when I issue git cam "test commit". Nothing is staged or committed. If I issue the add and commit commands separately, it works fine. Why is that?
这里的问题是 git commit -a
不像 git add
后面跟着 git commit
。它更像是 git add -u
后跟 git commit
(但即便如此,仍然 完全 相同)。具体来说,git add -u
只会更新 Git 已经知道 的文件。 -u
中的u
代表更新,即不添加任何未跟踪的文件,但适当更新所有跟踪的文件。
您有一个未跟踪的文件要添加。您必须使用git add
而不-u
选项来执行此操作。 (从技术上讲,还有其他几个命令可以让您到达那里,但 git add
是要使用的命令。)
一种解决方案是将带别名的 git 命令传递给 shell 命令。这样,</code> 参数将不会再次附加到命令的末尾,从而使其成功。</p>
<p><code>git config --global alias.cam '!sh -c "git commit -am "'
或者干脆省略 </code> 参数标记:</p>
<p><code>git config --global alias.cam '!git commit -am'
但是请记住,commit -a
仅适用于 跟踪的 需要暂存修改的文件。所以更好的方法是:
git config --global alias.cam '!git add . && git commit -m'
我在 Windows 10 上创建了以下别名来发出 commit -am <commit message>
命令。我使用 </code> 标记来注册一个参数,但它不起作用。</p>
<p><code>git config --global alias.cam 'commit -am '
发出以下命令returns错误信息如下:
git cam "test commit"
错误信息:
fatal: paths 'test commit ...' with -a does not make sense
如何进行这项工作?我研究了如何在 git 别名中使用参数,但是 none 的资源为我的问题提供了一个简单的解决方案。谢谢。
这是 Git 初学者的规则:不要使用 git commit -a
。
这是高级 Git 用户的规则:不要使用 git commit -a
除非:
- 你会 运行
git add -u
在git commit
之前 - 您知道存储库没有使用编写错误的预提交脚本,该脚本在
git commit -a
存在时会出现异常行为。
来自
@jthill That works, but now it just displays the untracked files when I issue git cam "test commit". Nothing is staged or committed. If I issue the add and commit commands separately, it works fine. Why is that?
这里的问题是 git commit -a
不像 git add
后面跟着 git commit
。它更像是 git add -u
后跟 git commit
(但即便如此,仍然 完全 相同)。具体来说,git add -u
只会更新 Git 已经知道 的文件。 -u
中的u
代表更新,即不添加任何未跟踪的文件,但适当更新所有跟踪的文件。
您有一个未跟踪的文件要添加。您必须使用git add
而不-u
选项来执行此操作。 (从技术上讲,还有其他几个命令可以让您到达那里,但 git add
是要使用的命令。)
一种解决方案是将带别名的 git 命令传递给 shell 命令。这样,</code> 参数将不会再次附加到命令的末尾,从而使其成功。</p>
<p><code>git config --global alias.cam '!sh -c "git commit -am "'
或者干脆省略 </code> 参数标记:</p>
<p><code>git config --global alias.cam '!git commit -am'
但是请记住,commit -a
仅适用于 跟踪的 需要暂存修改的文件。所以更好的方法是:
git config --global alias.cam '!git add . && git commit -m'