问题标签 [git-for-windows]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Git 身份验证仅无法通过 TFS 2018
我最近构建了一个 TFS 2018 服务器并将其设置为 git。几个月来,事情一直很好,直到上周我开始看到以下错误:
经过近一周的故障排除,我离找出问题的根本原因还差得远。我尝试过的一切都会导致相同的错误。我在网上和 SO 中找到的所有解决方案都不起作用,即删除 git 文件夹、卸载 git、重新安装 git、删除 .cache 文件等等……没有任何区别。
今天我发现我可以针对我们的旧 TFS 2015 实例和 github 使用 git for windows 客户端而不会出现任何错误,因此这似乎是 TFS 2018 唯一的问题。我已经搜索并搜索了任何可能已更改的安全设置,但找不到任何与我可以更改的安全相关的内容,这些设置会影响这个庄园的安全设置。我还检查了服务器证书,它似乎还有一年的有效期,所以我不认为是这样。
我还发现 Visual Studio 2015 可以克隆并与 TFS 2018 服务器同步 - 没有身份验证错误。显然,它有自己的内置 git 客户端,不受任何导致 Windows 的 git 客户端的身份验证问题的影响。Visual Studio 2017 抛出与 git for windows 客户端相同的错误,所以我猜它在后台使用该客户端,与 vs2015 不同。
目前,我正在使用最新的 git for windows 客户端,它是唯一安装的客户端(vs2015 除外) - 删除了所有其他 git 客户端,即 TortoiseGit。另请注意,我已删除 TFS 2018 服务器的所有 Windows 凭据,并且从未像 Microsoft 的文章所建议的那样提示我输入用户名或密码。也没有提示我输入 TFS 2015 服务器的凭据,但凭据管理器具有该服务器的有效凭据。
有没有人知道这里可能出了什么问题?我们的服务器此时完全没用,因为没有人可以同步更改。
git - 执行某些命令(如“修剪”)时,Wincred 无法与 Git Bash(Windows 版 Git)一起正常工作
我已经在我的 Windows 7 64Bit 中很好地设置了 GitforWindows,凭据管理器为“Wincred”。
然而,当我git remote prune origin
在 GitBash 中运行一些命令时,它会在控制台中出现以下错误,尽管运行命令:
这是为什么 ?如果需要对凭据管理器设置进行某些操作,那么我需要完整说明如何进行这些设置以及每个设置的含义。
注意:这个问题我只有一些命令,其他命令运行得很好,没有任何错误。
git - 适用于 Windows 的 Git 无法进行身份验证
一位同事通过安装的 Visual Studio 安装了适用于 Windows 的 git,而不是安装适用于 Windows 的独立 Git。我重新安装了 Visual Studio 社区版并从 Visual Studio 中删除了 Git 安装。
在运行 Visual Studio 后尝试进行身份验证时git clone *our repo*
出现登录提示。所以,它没有使用 Windows 登录。尝试使用 Visual Studio 提示登录时,他们的 Visual Studio 登录不起作用。此外,它会在我们也无法登录的 Visual Studio 登录失败后直接打开 OpenSSH 登录提示。我的 git 安装工作正常,我们尝试卸载并重新安装它。我已经检查了环境变量,set >> output.txt
看看它们是否有任何不同。他们不是。我检查了 git 的凭证助手,它在两台机器上都设置为“管理器”。
为什么他的机器的行为与我的如此不同?为什么会弹出 Visual Studio 和 OpenSSH 登录提示,而不是仅使用 Windows 登录?我什至尝试将日志凭据存储为纯文本并将其用于 git 登录,但这似乎无济于事。(它表现出相同的行为。)
对此有什么想法吗?理想情况下,我想将每个 git 设置重置为默认值,并让它使用 Windows 登录。
git - 为什么我的 git 突然神奇地能够显示 pdf 文件的文本差异?
2.17.0.windows.1
我的 Windows 10 计算机上有 git 版本。据我所知,git 不应该能够开箱即用地区分 pdf 文件。我一直希望差异消息只是说“二进制文件 a.pdf 和 b.pdf 不同”之类的内容。
所以我很惊讶有一天看到控制台在存储库中打印出这个,其中包含一个已更新的 pdf 文件:
我知道有一种方法可以使用 gitconfig 中的 textconv 设置和 gitattributes 中特定文件扩展名的 diff 属性来显示二进制文件的人类可读差异,但我当然没有为我的计算机做过类似的事情。我只是使用 exe 安装程序安装了 git,从那时起我并没有真正更改任何配置设置。
这是git config --list
在该文件夹中时显示的内容:
我最初认为这是最近添加到 git 中的一些新奇特功能,但是当我在具有 git version 的 Ubuntu 16.04 机器上尝试 diff 时2.19.0
,控制台打印出以下内容:
所以……好像不是?
那么这个神奇的独角兽 pdf diff 行为是从哪里来的呢?这是在哪里配置的?
git - Git for Windows 远程拒绝主 -> 主(解包器错误)
我在 git 存储库与我们的 LAN 网络上的团队合作时遇到了麻烦。
推送到我的裸存储库时出现此错误。
我们拥有的基础设施都是在 Windows 上的,我们无法更改为 linux。
我在 Windows 上使用 git,我设法在服务器上启动了一个裸存储库,然后从另外两台机器上提取存储库,进行更改,提交它们并推送到裸存储库。
此时一切都很好,但我们希望有一个命令来部署我们的开发。
我发现我需要一个接收后挂钩。
所以我做了并创建了 post-receive 钩子,看起来像这样:
我将完全控制权限添加到允许在 .git 一个目录和我想要在推送命令后部署代码的工作目录上向服务器推送的用户。
之后,我们可以制作我们想要的存储库的副本
添加文件并提交
但是当我们试图推动
我们收到下一个错误:
我被困在这一步,我找不到错误在哪里,我试图找到这个,但我发现的一切都是在 Linux 环境中,并且是权限错误或其他东西,而不是解包器错误。
知道我可以尝试什么吗?
git - Git 输出“为路径注册的子模块”与别名配置混合
(最初是在 Git 邮件列表和Git For Windows 邮件列表上询问的,到目前为止没有任何回应。)
问题
在运行命令时,我注意到子模块初始化期间命令git clone --recurse-submodules https://repo
的奇怪输出:git
该命令似乎运行良好并且成功完成。
部分诊断
我设法确定注入子模块打印路径的垃圾是什么。它来自我配置的 git 别名,例如,~/.gitconfig
其中包括:
里面~/alias_misc.gitconfig
有这个别名
它被插入到上面复制Binary/A
的输出中的路径中。git clone
(所有文件都可以在 GitHub 上找到)。
问题
谁能解释为什么git
在其输出中随机插入别名定义?
我的 Git 配置文件有什么问题吗?
git - 通过cmd更新git?
我最近将我的 Git 扩展更新为 3.0.2.5232,现在我的 git 不再受支持。当我运行时:
我明白了
但是,我不能只在线下载最新版本的 git,因为由于管理员权限,我无法运行 .exe 安装程序等等,所以有没有可以运行的命令直接从 admin cmd 升级?
git - 在 Windows 中使用 Git 的多个 Github 帐户
我最近遇到了一个问题,我无法将更改推送到我作为另一个用户从我在桌面上的 git 中推送的第一个用户克隆下来的存储库中。
基本上是这样的,
- 第一次使用 git,它在推送到存储库时会要求提供 github 凭据。然后,这些凭据将用于所有推送,无论 repo 是如何克隆的(哪个 ssh 密钥、用户等)
- 为两个 github 帐户生成 SSH 密钥,并将条目添加到 ssh 配置以定位这些身份文件。密钥也会添加到每个 github 帐户中。
- 使用 ssh 配置中相应的主机条目克隆 repo,用于原始帐户 git clone :/.git
- 尝试将更改推送到 repo 并成功克隆 repo 使用 ssh 配置中的相应主机条目为第二个帐户 git clone <2nd Host>:<2nd username>/.git
尝试将更改推送到 repo 并收到原始用户名没有权限的错误,即使这是使用第二个用户克隆的,更具体地说是 ssh 密钥。
清除 Windows 凭据管理器中的 git 条目并不能解决此问题。
清除全局用户名和电子邮件未解决此问题
我终于能够使用以下内容推送我的更改:
我为遇到此问题的其他人发布此信息并提出一些问题,
我了解此命令本质上是指定 ssh 连接在推送时使用的密钥,但是如果使用相同的身份文件克隆该密钥,为什么它还没有成为目标?
是否有任何替代方法或更好的方法而不是繁琐的工作,例如手动更改配置值或从 Windows 凭据管理器中删除条目?
因此,目标是将更改推送到多个 github 帐户,而无需执行临时指定要使用的 ssh 密钥之类的操作。
HTTP 路径
https://github.com/schwaggs/testssh
https://github.com/jjschweigert/testrepo
SSH 路径
git@github.com:schwaggs/testssh.git
git@github.com:jjschweigert/testrepo.git
SSH 配置文件
使用原始帐户克隆
推送到原始帐户 (jjschweigert)
从第二个帐户克隆 (schwaggs)
推送到辅助帐户
SSH -T 输出
git - 路径不存在的错误全局 gitconfig 文件
git config --global --edit
我使用手动编辑文件搞砸了我的 git 安装。我在 Notepad++ 中更改了一些东西,保存并关闭它。显然我拼错了一些东西,因为每个 git config --global ..
命令都给了我:
如果我只知道这个文件的位置但我似乎找不到它,我很容易解决这个问题。我尝试了在线提到的每个位置(userdir、Program Files AppData\Local 等),但无处可寻。
它H://.gitconfig
在错误中说,但我没有H:
驱动器。我还搜索了我的整个计算机,但在任何地方都找不到它,而 git 似乎每次使用git config
.
基本上我的问题是:
- 我可以通过 cli 以某种方式重置我的全局配置吗?
- 我还能在哪里找到我的全局配置文件?
- 我怎样才能找到文件?
我正在使用最新的 Windows 和最新的 git。
编辑:我尝试重新启动我的电脑并卸载并重新安装适用于 Windows 的 git,但问题仍然存在。有趣的是,我可以使用提升的命令行或 powershell 编辑全局配置,从而在我的用户目录中创建 gitconfig。但是如果我编辑或删除它,它不会影响我使用普通命令行或 powershell 时遇到的问题。
git - 如何在不将整个目录添加到环境 $PATH 的情况下授予对特定 EXE 的“git”访问权限?
我正在使用 MSYS2/git,并为 Windows SDK 正确安装了git 在 MSYS2 中正确安装 git
git.exe 位于/mingw64/bin
目录中(已添加到 $PATH),但 git 需要的其他包(特别是sh.exe
和less.exe
)位于/usr/bin
我不想放入 $PATH 的目录中,以避免其他可执行文件污染我的环境,例如mkdir
并且dir
,...
目前,一些 git 命令需要那些包,比如git config -l
which needsless
以及任何会打开EDITOR
will need的 git 命令sh.exe
。
我想要实现的是在不添加整个目录的情况下添加less
和到 PATH。sh
我尝试使用HERE和HERE方法添加它们。它们中的大多数都允许我直接从终端使用sh
,less
但它们都没有使依赖的 git 命令工作。
例如,在目录中创建and的符号链接将使命令提示符识别这些可执行文件,但 using将不会给出任何输出,除非将目录添加到.less
sh
/mingw64/bin
git config -l
less
$PATH
但是,其他方法(创建脚本和快捷方式,..)将使 git 抱怨"Unable to spawn sh/less",altgoughcmd
并且powershell
会识别less
and sh
。
为什么可执行文件可以从终端运行,但不能使用 git?特别是git 没有抱怨缺少 EXE 但仍然无法正常运行的符号链接案例?