Nodejs环境下git pull报错“/usr/libexec/git-core/git-sh-setup: line 81: /usr/bin/sed: Bad file number”

Nodejs环境下git pull报错“/usr/libexec/git-core/git-sh-setup: line 81: /usr/bin/sed: Bad file number”

git.exe pull -v --progress “origin”

/usr/libexec/git-core/git-sh-setup: line 81: /usr/bin/sed: Bad file number From http://gitlab.tools.xxxxxxx.com/xxxxxxx/mstats-monitor = [up to date] master -> origin/master C:\Program Files (x86)\Git/libexec/git-core\git-pull: line 268: /usr/bin/tr: Bad file number You asked to pull from the remote ‘origin’, but did not specify a branch. Because this is not the default configured remote for your current branch, you must specify a branch on the command line.

git did not exit cleanly (exit code 1) (2184 ms @ 2014/11/28 11:40:43)

有人知道原因嘛?


2 回复

这个问题通常发生在使用Windows环境下的Git Bash来执行Git命令时,但错误信息却指向了Linux/Unix路径(如/usr/bin/sed)。这种不匹配通常是由于环境配置问题或脚本执行路径问题引起的。具体来说,错误提示中的Bad file number表明系统尝试打开一个文件失败,这可能是由于路径错误或权限问题。

解决方案

1. 检查环境变量

确保你的环境变量正确配置,特别是PATH环境变量。确保它包含正确的Git可执行文件路径,而不是指向Linux系统的路径(如/usr/bin/sed)。

# 在Git Bash中检查PATH
echo $PATH

如果PATH包含了不正确的路径,你可以临时修改它:

export PATH="/c/Program Files/Git/usr/bin:$PATH"

或者永久修改.bashrc.bash_profile文件:

echo 'export PATH="/c/Program Files/Git/usr/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

2. 使用绝对路径

另一种方法是直接使用绝对路径调用sed命令,确保你使用的版本与系统兼容。

sed -i 's/old/new/g' filename

如果你不确定路径,可以先检查sed的位置:

which sed

3. 指定分支

根据错误信息的最后部分,你可能还需要指定分支名:

git pull origin <branch-name>

例如:

git pull origin master

通过以上步骤,你应该能够解决Bad file number错误,并成功执行git pull命令。


这个错误通常发生在Windows系统中使用Git Bash或类似的Unix环境模拟器时。错误提示表明在执行git pull命令时,尝试调用/usr/bin/sed/usr/bin/tr时出现了问题。这些工具是为Linux或Unix系统设计的,在Windows环境下可能无法正确运行。

解决方案

  1. 确保使用正确的命令行工具: 确保你在正确的命令行环境中执行git pull命令。对于Windows用户,推荐使用Git Bash、WSL(Windows Subsystem for Linux)或PowerShell来执行Git命令,而不是使用Windows的CMD。

  2. 配置Git使用正确的路径: 如果你是通过Node.js脚本调用git pull,请确保使用正确的路径或环境变量设置。例如:

    const { exec } = require('child_process');
    
    exec(`git pull`, { cwd: 'path/to/your/repo' }, (error, stdout, stderr) => {
        if (error) {
            console.error(`执行出错: ${error}`);
            return;
        }
        console.log(`stdout: ${stdout}`);
        console.error(`stderr: ${stderr}`);
    });
    
  3. 安装适用于Windows的工具: 在某些情况下,安装适用于Windows的版本的sedtr工具,如GnuWin32包,可以解决问题。

  4. 检查Git配置: 确认你的本地仓库配置正确指向了远程仓库。你可以使用以下命令检查和设置:

    git config branch.<branch-name>.remote
    git config branch.<branch-name>.merge
    

    如果没有正确配置,可以通过以下命令设置:

    git config branch.<branch-name>.remote origin
    git config branch.<branch-name>.merge refs/heads/master
    
  5. 确保Git更新到最新版本: 更新Git到最新版本可以解决一些兼容性问题。

希望这些建议能帮助你解决这个问题。

回到顶部