git - TortoiseGit 麻烦 : git did not exit cleanly (exit code 128)

标签 git github tortoisegit github-for-windows

这里有一点背景:

  • 我运行 Win7
  • 我有私有(private) git repo 并安装了 Github for Windows
  • 我不喜欢 Github for Windows 客户端(缺乏功能)。我为 Windows 安装了 TortoiseGit(仍然保留 Github for Windows)
  • 我完全按照这里的步骤 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
    我读了这个线程:
    How to resolve "git did not exit cleanly (exit code 128)" error on TortoiseGit?
    实际上已经通过运行 Puttygen 三次来更改 SSH key 。我还在文件夹中为用户设置了完全权限。没有任何效果!!
    这是我在环境路径中看到的

    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执行它会返回一个退出代码(参见 Does git return specific return error codes? )。

    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。 (See here)

    开放SSH

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

    建议已经拥有 OpenSSH key 的人使用此方法。

    油灰

    在 Windows 上首选的 PuTTY 要求使用 PuTTYGen(随 TortoiseGit 提供)创建公钥/私钥。TortoiseGitPlink.exe需要在 TortoiseGit 设置 -> 网络上选择 ssh 客户端 - 这应该是默认设置。但是,公钥/私钥没有默认位置,因此必须对其进行配置。有(至少有两种方法可以做到这一点):
  • 将您的 key 配置为基于 PuTTY 的应用程序中的默认 key 。
    为此,请打开 PuTTY(TortoiseGit 未附带它,必须单独使用 downloaded)。然后转到 Connection-> SSH -> Auth 配置页面并选择您的 .ppk 文件作为“用于身份验证的私钥”,返回“ session ”配置页面,在那里选择“默认设置”并点击保存。 -> 从现在开始,PuTTY 和 PLink 将使用此 key 进行身份验证。
  • 为了让 TortoiseGit 加载一个用于 PuTTY 的私钥,必须对其进行配置。
  • 对于现有存储库:选择一个存储库,打开 TortoiseGit 设置 -> 远程并在此处选择您的远程存储库配置(通常为“源”)。然后选择您的私有(private) .ppk key 并点击“添加新/保存”。
  • 对于新存储库,可以在克隆时选择 key 。推/pull 时确保选中“Autoload putty key”。

  • More tips/tricks for using PuTTY.

    如果这没有帮助

    首先我们需要确保正确的git.exe被调用 - 通常情况下应该是 TortoiseGit 努力寻找正确的 git.exe在系统首次启动时。这可以通过转到 TortoiseGit 设置 -> 常规来轻松完成。应该检查“git.exe Path”是否指向“Git for Windows”的正确文件夹(必须指向 Git for Windows 安装的 bin 文件夹,而不是 cmd 文件夹 - 但这应该自动发生) - 如果使用msysgit(“Git for Windows”的开发版),需要[MSYSGIT-INSTALL-PATH]\mingw\bin-folder位于路径上(即在外部 DLL 路径文本框中输入)以执行 git.exe (否则需要的 .dll 文件)找不到。 (见 TortoiseGit docs)

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

    关于git - TortoiseGit 麻烦 : git did not exit cleanly (exit code 128),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14848263/

    相关文章:

    git - 与Grails和inPlace插件的持续集成(Jenkins)

    ios - Xcode、GitHub 和第三方框架

    android - Android studio 中的 git 与 TortoiseGit 不同

    javascript - 如何引用我网站的根目录?为什么 Jekyll 不渲染一些页面?

    git 尝试在已删除的推送上写入文件

    git - 使用 Git 部署更改的文件

    git - tortoisegit 和 gitlab 的区别

    node.js - 仅在发生更改时才构建项目

    git - "gcloud auth activate-service-account"和 "gcloud source repos clone"错误

    git - 为什么要将 .iml 文件添加到 gitignore?在常见情况下应该放在 gitignore 中什么?