关于github:TortoiseGit麻烦:git没有干净退出(退出代码128)

TortoiseGit trouble: git did not exit cleanly (exit code 128)

这里是一些背景:

  • 我运行Win7
  • 我有私人git repo并为Windows安装了Github
  • 我不喜欢Github for Windows客户端(缺少功能)。我安装了Windows版TortoiseGit(仍然保留Windows版Github)
  • 我完全按照这里的步骤操作http://dancingmonkeysaccelerated.blogspot.com/2012/03/git-for-windows-with-tortoisegit-and.html
  • 我可以获取日志并在本地提交
  • enter image description here

  • 然后我推
  • enter image description here

  • 但是它给出了错误git did not exit cleanly (exit code 128)
  • enter image description here

    我读了这个线程:

    如何解决TortoiseGit上的" git不能干净退出(退出代码128)"错误?

    并且实际上已经通过运行Puttygen 3次更改了SSH密钥。我还在文件夹中为"用户设置了完全权限"。没用!!

    这是我在环境路径中看到的

    PATH=(others);C:\\Users\\myusername\\AppData\\Local\\GitHub\\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\\libexec\\git-core;

    GIT_SSH=C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitPLink.exe

    SVN_SSH=C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitPLink.exe

    SSH_ASKPASS=C:\\Program Files\\TortoiseGit\\bin\\SshAskPass.exe

    GIT_ASKPASS=C:\\Program Files\\TortoiseGit\\bin\\SshAskPass.exe

    但是:如果使用Github for Windows,它可以正常工作。

    有人可以指出我要解决此TortoiseGit问题的方向吗?


    通用答案

    每次执行git.exe时,它都会返回一个退出代码(参见git是否返回特定的返回错误代码?)。

    An exit code of 0 indicates success.

    在StackOverflow帖子中,提到了退出代码128,它指示错误:

    The (exit code 128) is some kind of"unexpected error" (cf. https://stackoverflow.com/a/8059956/3906760).
    What it means is highly dependant on the git command executed and the output it issued. Therefore, there can't be a single easy and short answer on how to solve this.

    以下帖子包含与推式案例相关的特定答案,最后是更通用的答案(如果这对本节没有帮助)。

    回答最初的Stackoverflow帖子的情况

    以下答案基于以下事实:已执行git.exe来运行推送。

    通过SSH使用TortoiseGit

    这里需要区分OpenSSH和PuTTY。 (看这里)

    OpenSSH的

    为了使用OpenSSH,您必须在TortoiseGit设置->网络上将ssh.exe设置为" SSH客户端"。
    默认情况下,OpenSSH使用%HOME%/.ssh/id_rsa(.pub)文件作为其公钥/私钥,这些文件必须由OpenSSH ssh-keygen创建,而不是PuTTYGen创建(PuTTY密钥的格式不同,但是也可以使用PuTTYGen进行转换)。
    如果未设置%HOME%,TortoiseGit将自动设置它,如果您手动设置%HOME%,请确保它是有效的(您可能必须使用斜杠而不是反斜杠)。

    建议已拥有OpenSSH密钥的用户使用。

    油灰

    PuTTY是Windows上的首选,它要求使用PuTTYGen(TortoiseGit随附)创建公用/专用密钥。
    需要在TortoiseGit设置->网络上选择TortoiseGitPlink.exe作为ssh客户端,这应该是默认设置。但是,没有公用/专用密钥的默认位置,因此必须配置它们。有(至少两种方法可以做到):

  • 将您的密钥配置为基于PuTTY的应用程序中的默认密钥。
    为此,打开PuTTY(TortoiseGit不附带,必须单独下载)。然后转到"连接"->" SSH"->"身份验证"配置页面,然后将您的.ppk文件选择为"用于身份验证的私钥",返回到"会话"配置页面,在此处选择"默认设置",然后单击保存。 ->从现在开始,PuTTY和PLink将使用此密钥进行身份验证。

  • 为了使TortoiseGit加载用于PuTTY的私钥,必须对其进行配置。

    • 对于现有存储库:选择一个存储库,打开TortoiseGit设置->远程,然后在此处选择您的远程存储库配置(通常为"原始")。然后选择您的.ppk私钥,然后点击"添加新文件/保存"。
    • 对于新存储库,可以在克隆时选择密钥。推/拉时,请确保已选中"自动加载腻子键"。
  • 使用PuTTY的更多提示/技巧。

    如果这没有帮助

    首先,我们需要确保调用了正确的git.exe-通常是这样,因为TortoiseGit会在首次启动时尽力在系统上找到正确的git.exe。转到TortoiseGit设置->常规即可轻松完成。应该检查" git.exe路径"是否指向" Git for Windows"的正确文件夹(必须指向Git for Windows安装的bin文件夹,而不是cmd文件夹-但这应该自动发生)-如果使用msysgit(" Git for Windows"的开发版本),必须将[MSYSGIT-INSTALL-PATH]\\mingw\\bin-folder放在路径上(即在Extern DLL路径文本框中输入)才能执行git.exe(否则需要.dll-文件)。 (请参阅TortoiseGit文档)

    现在,单击"立即检查",并检查按钮旁边是否显示了正确的版本号(并非没有错误消息)。
    如果这有效,则应正确配置git.exe并使用https。


    我遇到了同样的问题,并通过以下方式解决了该问题...

    我已经安装了NVIDIA" Tegra Android开发包",并且似乎还带有mysysgit.exe版本。 TortoiseGit自动找到该安装位置(而不是标准git安装),并在设置菜单中自动填充该位置。

    要更正此问题,请转到:"设置->常规",并且存在mysysgit.exe路径的字段。 确保这指向正确的安装。


    就我而言,我从Git Bash提交了该承诺(未退出的受害者)。并尝试了Tortoise的下一次提交,该提交成功了!


    我想我找到了Windows的更好替代方案:http://www.syntevo.com/smartgithg/index.html

    到目前为止,它一直在工作。 但是,如果我可以使用它,我仍然更喜欢TortoiseGit。