首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于git提交的Shell脚本助手

用于git提交的Shell脚本助手
EN

Stack Overflow用户
提问于 2013-07-29 17:46:26
回答 6查看 15.1K关注 0票数 8

我正在尝试编写一个简单的shell脚本来简化git提交过程。

而不是

代码语言:javascript
运行
复制
git add . -A
git commit -m "message"
git push

我想做commit.sh "my commit message"

我现在拥有的是:

代码语言:javascript
运行
复制
#!/bin/bash
commit_message="$1"
git add . -A
git commit -m $commit_message
git push

这有两个问题:

  1. 当提交消息包含空格(如“我的提交消息”)时,我将得到以下输出: error: pathspec 'commit' did not match any file(s) known to git. error: pathspec 'message' did not match any file(s) known to git. 因此,它使用的提交消息的唯一部分是"my“,而其他”提交消息“则被排除在外。
  2. 我认为git add .引用的是shell脚本的位置,而不是当前的项目目录。如何使git add .引用我目前在终端中的位置?
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-07-29 17:52:39

您必须引用脚本中的变量。

代码语言:javascript
运行
复制
#!/bin/bash -e
commit_message="$1"
git add . -A
git commit -m "$commit_message"
git push

我还设置了"-e“,以便如果有任何错误,脚本将退出而无需处理后续命令。

至于您的第二个问题,脚本中的.应该按照您的意愿引用当前的工作目录。但是,-A导致它添加了在回购中修改过的所有文件。

票数 20
EN

Stack Overflow用户

发布于 2013-07-29 18:11:04

您可以创建带参数别名。类似于:

代码语言:javascript
运行
复制
[alias]
  cap = "!git add . && git commit -m '$1' && git push origin"
票数 12
EN

Stack Overflow用户

发布于 2014-02-19 01:26:45

使用和Alias,我不能将变量放在句子的中间,但是您可以创建一个函数并将其放在.bashrc上,如下所示

代码语言:javascript
运行
复制
commit(){
  git add --all . && git commit -m '$1' && git push origin master
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17930725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档