使用-a的路径对bash函数没有意义

时间:2017-01-01 14:29:46

标签: git

这是我的bash功能。

push() {
> cd /var/www/html/wp
> git init
> git add *
> git commit -am  $1
> git push -f origin master
> }

我想执行它。

debian8@hwy:$push 'to delete file test'       
Reinitialized existing Git repository in /var/www/html/wp/.git/        
fatal: Paths with -a does not make sense.     

如何解决我的bash函数推送?

rm / var / www / html / wp / test

之后,可以成功执行以下命令
 cd /var/www/html/wp
 git init
 git add *
 git commit -am  'to delete file test'
 git push -f origin master

我只想写一个bash函数push来添加参数,运行它如

push  'to delete file test'

让推送功能为

 push(){
 cd /var/www/html/wp
 git init
 git add *
 git commit -am $1
 git push -f origin master
 }

2 个答案:

答案 0 :(得分:5)

看起来$1正在扩展为多个参数,Git将第一个作为提交消息,其余作为文件。保护"$1"成引号。

但我必须补充说,该脚本存在一些问题。这是非常不安全的。您正在执行多个命令而不检查一次成功或输入是否合适。这样做并强制执行Git推送可能会让您在以后遇到大麻烦。

答案 1 :(得分:0)

注意:在Git 2.22(2019年第二季度)中,您实际上会看到其中“路径(在您的情况下为$1值)没有意义。
错误消息“ git commit -a <paths>出错误时给出的消息已更新。

请参见commit 5a1dbd4Nguyễn Thái Ngọc Duy (pclouds)(2019年3月20日)。
(由Junio C Hamano -- gitster --commit e313c76中合并,2019年4月25日)

  

commit:改进“ -a <paths>”中的错误消息

     

我今天做了一些愚蠢的事情,得到了

$ git commit -a --fixup= @^
fatal: Paths with -a does not make sense.
     

这没有任何意义(至少在最初的几秒钟之内)。

     

在错误消息中包括第一个路径(规范),以帮助发现   问题更快。现在显示

fatal: paths '@^ ...' with -a does not make sense
     

应该敲响警钟,因为显然不应考虑@ ^   路径。