我在远程服务器上有一个git存储库。它已经设置好,所以我可以使用https推送和拉到存储库。我有一台使用用户名和密码可以正常运行的机器。在类似的机器上(两者都运行相同的Mac OS版本),拉动有效(但这是正常的,拉动可以是匿名的),但是将结果压入:
% git push
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 1024 bytes | 1024.00 KiB/s, done.
Total 6 (delta 1), reused 6 (delta 1)
Password for 'https://ejetzer@ejetzer.ca':
error: RPC failed; HTTP 401 curl 22 The requested URL returned error: 401
fatal: the remote end hung up unexpectedly
fatal: the remote end hung up unexpectedly
Everything up-to-date
服务器的git版本是2.27.0。可以在其中进行推拉操作的计算机具有git 2.24.0,而不能在其上运行的计算机具有git 2.23.0或2.24.3(取决于环境,我尝试了这两种方法)。
两个客户端上的.gitconfig
相同:
[user]
name = "Émile Jetzer"
email = ...
[credential "..."]
username = ejetzer
[credential]
helper = cache
和相同的存储库.git/config
文件:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = .../git/mesastar.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
我检查了服务器上的.htaccess
和.htpasswd
文件,并且用户名和密码在无法使用的计算机上正常。根据主机documentation上的信息,服务器.gitconfig
如下所示:
[user]
name = Émile Jetzer
email = ...
[http]
postBuffer = 157286400
receivepack = true
sslVerify = false
我正在克隆的存储库中有以下.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = true
我不知道为什么推送不适用于新机器,特别是当它适用于旧机器时。