【问题标题】:Clone works, remote push doesn't. Remote repository over copssh克隆有效,远程推送无效。 copssh 上的远程存储库
【发布时间】:2018-08-05 12:06:25
【问题描述】:

我已经“setup-a-msysgit-server-with-copssh-on-windows”,跟随 Tim Davis 的 guide,我现在正在学习如何使用 git 命令,跟随 Jason Meridth 的 guide,我已经设法让一切正常,但现在我无法通过推送命令。

我已经将服务器和客户端设置在同一台机器上(目前),win7-x64。

这里有一些关于如何设置的信息:

CopSSH Folder     : C:/SSH/
Local Home Folder : C:/Users/rvc/
Remote Home Folder: C:/SSH/home/rvc/          # aka /cygdrive/c/SSH/home/rvc/
git remote rep    : C:/SSH/home/rvc/myapp.git # empty rep

在'/SSH/home/rvc/.bashrc'和'Users/rvc/.bashrc':

export HOME=/cygdrive/c/SSH/home/rvc
gitpath='/cygdrive/c/Program Files (x86)/Git/bin'    
gitcorepath='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
PATH=${gitpath}:${gitcorepath}:${PATH}

所以,克隆是可行的(下面的一切都是通过“Git Bash here”完成的:P):

rvc@RVC-DESKTOP /c/code
$ git clone ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
Initialized empty Git repository in C:/code/myapp/.git/
warning: You appear to have cloned an empty repository.

rvc@RVC-DESKTOP /c/code
$ cd myapp

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git remote -v
origin  ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git (fetch)
origin  ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git (push)

然后我创建一个文件:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ touch test.file

rvc@RVC-DESKTOP /c/code/myapp (master)
$ ls
test.file

尝试推送它,得到这个错误:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git add test.file

rvc@RVC-DESKTOP /c/code/myapp (master)
$ GIT_TRACE=1 git push origin master
trace: built-in: git 'push' 'origin' 'master'
trace: run_command: 'C:\Users\rvc\bin\plink.exe' '-batch' '-P' '5858' 'rvc@192.1
68.1.65' 'git-receive-pack '\''/SSH/home/rvc/myapp.git'\'''
git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly

"git: '/SSH/home/rvc/myapp.git' 不是 git 命令。请参阅 'git --help'。" ..什么?!

编辑: 狂暴!!

我又遇到了同样的问题,但现在使用 ssh:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ GIT_TRACE=1 git push
trace: built-in: git 'push'
trace: run_command: 'ssh' '-p' '5858' 'rvc@192.168.1.65' 'git-receive-pack '\''/
SSH/home/rvc/myapp.git'\'''
git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly

我尝试过 GUI 推送,并显示相同的消息。

git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.
Pushing to ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
fatal: The remote end hung up unexpectedly

这是当前的 .bashrc:

C:\Users\rvc.bashrc(我认为这仅由 cygwin/git bash 使用):

export HOME=/c/SSH/home/rvc

gitpath='/c/Program Files (x86)/Git/bin'

gitcorepath='/c/Program Files (x86)/Git/libexec/git-core'
export GIT_EXEC_PATH=${gitcorepath}

PATH=${gitpath}:${gitcorepath}:${PATH}

C:\SSH\home\rvc.bashrc(.. 当 git 通过 ssh 连接到“远程”服务器时使用):

export HOME=/c/SSH/home/rvc

gitpath='/cygdrive/c/Program Files (x86)/Git/bin'

gitcorepath='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
export GIT_EXEC_PATH=${gitcorepath}

PATH=${gitpath}:${gitcorepath}:${PATH}

编辑 2: 一些附加信息:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ ssh -p 5858 rvc@192.168.1.65 git-receive-pack /SSH/home/rvc/myapp.git
git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.


编辑 3:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git push --receive-pack='git receive-pack' ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git --a
ll
Counting objects: 3, done.
Writing objects: 100% (3/3), 202 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
 * [new branch]      master -> master

这成功了吗??

git push 正在运行 'git-receive-pack',它应该是 'git receive-pack' 吗?

我的 git 版本是 'git version 1.7.0.2.msysgit.0'

【问题讨论】:

    标签: git ssh msysgit windows-7-x64 copssh


    【解决方案1】:

    愚蠢的修复(这改变了/SSH/home/rvc/.gitconfig):

    rvc@RVC-DESKTOP /c/code/myapp (master)
    $ git config --global remote.origin.receivepack "git receive-pack"
    
    rvc@RVC-DESKTOP /c/code/myapp (master)
    $ git push
    Counting objects: 3, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 246 bytes, done.
    Total 2 (delta 0), reused 0 (delta 0)
    To ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
       680f32e..2da0df1  master -> master
    

    【讨论】:

      【解决方案2】:

      找到answer...

      GIT_SSH

      If this environment variable is set then git fetch and git push will
      

      使用此命令代替 ssh 时 他们需要连接到遥控器 系统。 $GIT_SSH 命令将是 给出了两个参数: username@host(或只是主机)来自 URL 和要执行的 shell 命令 在那个远程系统上。

      To pass options to the program that you want to list in GIT_SSH you
      

      将需要包装程序并 选项到一个shell脚本,然后设置 GIT_SSH 引用 shell 脚本。

      Usually it is easier to configure any desired options through your
      

      个人 .ssh/config 文件。请 请查阅您的 ssh 文档以了解 更多细节。

      我只需要从 Windows 环境变量中删除 GIT_SSH 变量。

      我已经设置了它,因为我遵循 Tim Davis 的指南,但没有使用 TortoiseGit, 并且指南说将变量指向 TortoisePlink(步骤 4.4),所以我认为我必须 指向 plink.exe :P。哦,好吧..转到下一个问题...

      【讨论】:

        【解决方案3】:

        谢谢!我也遇到了错误

        git: '/pathToRepo/myRepoName.git' is not a git command See 'git --help'.
        fatal: The remote end hung up unexpectedly
        

        git config 命令对我有用。

        git config --global remote.origin.receivepack "git receive-pack"
        

        我正在运行 MSysGit-1.7.3.1

        【讨论】:

          【解决方案4】:

          1) 此问题的最常见原因 - 打开 Git Bash 窗口并输入 echo $HOME - 确保将其设置为 /c/SSH/Home/<user>/。如果不是——输入export HOME=/c/SSH/home/<user>

          2) 试试 GUI 界面 [同样的问题?]

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-03-02
            • 1970-01-01
            • 2020-01-02
            • 2021-04-16
            • 2019-08-03
            • 1970-01-01
            • 2019-06-29
            • 1970-01-01
            相关资源
            最近更新 更多