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

问题描述 投票:8回答:4

这里有一点背景:

  1. 我运行Win7
  2. 我有私人git repo并为Windows安装了Github
  3. 我不喜欢Github for Windows客户端(缺乏功能)。我安装了TortoiseGit for Windows(仍然保留Github for Windows)
  4. 我跟着这里的步骤完全是http://dancingmonkeysaccelerated.blogspot.com/2012/03/git-for-windows-with-tortoisegit-and.html
  5. 我可以获取日志并提交本地

  1. 然后我推

  1. 但它给了git did not exit cleanly (exit code 128)错误

我读了这个帖子:

How to resolve "git did not exit cleanly (exit code 128)" error on TortoiseGit?

实际上已经通过运行Puttygen三次更改了SSH密钥。我还在文件夹中设置了用户的完全权限。什么都行不通!!

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

PATH =(其他); C:\ Users \用户名为myUsername \应用程序数据\本地\ GitHub的\ PortableGit_93e8418133eb85e81a81e5e19c272776524496c6 \的libexec \ GIT-芯;

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 github tortoisegit github-for-windows
4个回答
2
投票

Generic answer

每次执行git.exe时,它都会返回退出代码(参见Does git return specific return error codes?)。

0的退出代码表示成功。

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

(exit code 128)是某种“意外错误”(参见https://stackoverflow.com/a/8059956/3906760)。这意味着高度依赖于执行的git命令及其发出的输出。因此,对于如何解决这个问题,不可能有一个简单而简单的答案。

以下帖子包含一个特定的答案,它与推案有关,最后是一个更通用的答案(如果这没有帮助部分)。


Answer for the case of the initial Stackoverflow post

以下答案基于以下事实:git.exe被执行以进行推动。

使用TortoiseGit和SSH

这里需要区分OpenSSH和PuTTY。 (See here

OpenSSH

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

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

PuTTY

PuTTY,在Windows上首选,要求使用PuTTYGen(随TortoiseGit一起提供)创建公钥/私钥。 需要在TortoiseGit设置 - >网络上选择TortoiseGitPlink.exe作为ssh客户端 - 这应该是默认设置。但是,公钥/私钥没有默认位置,因此必须配置这些位置。有(至少有两种方法):

  1. 将密钥配置为基于PuTTY的应用程序中的默认密钥。为此,打开PuTTY(不与TortoiseGit一起提供,必须单独为downloaded)。然后转到Connection-> SSH - > Auth配置页面并选择您的.ppk文件作为“用于身份验证的私钥”,返回“会话”配置页面,选择“默认设置”并点击保存。 - >从现在开始,PuTTY和PLink将使用此密钥进行身份验证。
  2. 为了使TortoiseGit加载私钥以便与PuTTY一起使用,必须对其进行配置。 对于现有存储库:选择存储库,打开TortoiseGit设置 - >远程并在那里选择远程存储库配置(通常为“origin”)。然后选择您的私人.ppk键并点击“添加新/保存”。 对于新的存储库,可以在克隆时选择密钥。推/拉时确保选中“Autoload putty key”。

More tips/tricks for using PuTTY.


If this doesn't help

首先,我们需要确保调用正确的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 Path文本框中输入)以便执行git.exe(否则需要.dll文件)。 (见TortoiseGit docs

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


1
投票

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

我安装了NVIDIA“Tegra Android开发包”,它似乎也有一个版本的mysysgit.exe。 TortoiseGit自动找到安装位置(而不是标准的git安装)并在设置菜单中自动填充它。

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


0
投票

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

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


0
投票

在我的情况下,我从Git Bash那里做了那个提交(没有彻底退出的受害者)。并尝试了Tortoise的下一个提交,它有效!

© www.soinside.com 2019 - 2024. All rights reserved.