【问题标题】:Don't want to use double quotes when using git commit -a -m使用 git commit -a -m 时不想使用双引号
【发布时间】:2013-01-10 12:57:50
【问题描述】:

我有点厌倦了使用双引号,当我使用 git commit 时

git commit -a -m "fix xxx error"

当我这样设置别名时:

coam = "!f() { git commit -a -m $1; }; f"

当我输入时它工作

git coam fix

提交为

git commit -a -m "fix"

但是如何设置一个可以处理的命令

git commit -a -m "fix xxx error"

当我输入时

git coam fix xxx error

我测试

coam = "!f() { git commit -a -m $*; }; f"

但它不起作用!

谢谢!

【问题讨论】:

  • 你累得想写一个脚本来节省你每次提交时的两次击键?
  • @PaulR ;-) 字母很容易在键盘上找到
  • 尽管如此,单行提交消息通常没有帮助,除非很明显。如果您修复了一个错误,人们想知道它是什么,为什么会出现以及您是如何修复它的。
  • @HaveF,如果你坚持使用",你最终也会学会轻松找到它! ;)
  • @PaulR 您可以节省 16 次击键并将左手向上移动到数字行两次。 alias gitc="f() { git commit -a -m \"\$*\"; }; f"

标签: git bash shell


【解决方案1】:

“我有点厌倦使用双引号,”

这就是 shell 的工作方式:它有机制来实现,如果一个参数包含通常是输入字段分隔符的字符(提示:这就是为什么 IFS 环境变量被这样命名的原因),它仍然被将要执行的命令作为参数。

git commit-m 选项采用单个参数。这些双引号是必需的。

您可以扭转这一局面的唯一方法是拥有自己的小 shell 脚本,它将为您收集这些参数:

#!/bin/bash
exec git commit -a -m "$*"

如果上面的脚本被称为 mygitcm 并且在你的路径中,你可以这样做:

mygitcm my commit message here

引用你的例子,我想这会起作用:

coam = "!f() { git commit -a -m \"$*\"; }; f"

(当然,另一个好主意是制作解释性的提交消息;))

【讨论】:

  • 别名 coam="f() { git commit -a -m \"\$*\"; }; f"
  • 从技术上讲,引号不是只需要空格吗?
【解决方案2】:
function gc { git commit -a -m "$*"; }

【讨论】:

  • 虽然此代码可能会回答问题,但如果您解释代码的为什么如何工作,它对 OP 和未来的读者会更有用。
  • @mousetail 我知道这一点。当我有时间时,我会尝试给出更好的答案。本周不是这样的情况:)也许有人可以改进我提供的一点点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2011-08-31
  • 1970-01-01
  • 2014-06-27
  • 2019-12-29
  • 1970-01-01
相关资源
最近更新 更多