我正在尝试从bash脚本更新git repo,但我遇到了一些麻烦。如果git pull之后没有其他行或字符,我可以运行git pull
并让它工作但如果我说有
#!/bin/bash
git pull
echo "test"
然后我得到
' is not a git command. See 'git --help'.
Did you mean this?
pull
在终端中而不是实际执行git pull
。
答案 0 :(得分:2)
你必须首先像Etan所提到的那样 dos2unix 。如果我做相反的话,我可以重新生成相同的错误(即unix2dos)
$ cat 1.sh
#!/bin/bash
git pull
echo ----
$ ./1.sh
fatal: Not a git repository (or any parent up to mount parent /cygdrive)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
----
参见上文,git pull命令工作但有一个有效的错误消息,在第一次执行时,没有提到repo。这意味着git存在(如果你哪个git 你会看到有效的git可执行位置)。
$ unix2dos.exe ./1.sh
unix2dos: converting file ./1.sh to DOS format ...
现在,我的文件是DOS格式(我在Linux机器上运行脚本)。你在用Cygwin吗?
$ ./1.sh
./1.sh: line 2: $'\r': command not found
' is not a git command. See 'git --help'.
Did you mean this?
pull
----
好的,使用dos2unix将其转换回Unix行结束字符
$ dos2unix.exe ./1.sh
dos2unix: converting file ./1.sh to Unix format ...
$ ./1.sh
fatal: Not a git repository (or any parent up to mount parent /cygdrive)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
----
它按预期工作。
或尝试使用 bash -x
运行