来自Shell脚本的Git Pull

时间:2014-07-08 16:37:42

标签: git bash shell

我正在尝试从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

1 个答案:

答案 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

运行