GIT 问题

2014-06-20 12:36:18 +08:00
 yueyoum
内网部署的gitlab

一直用的也没问题,
今天同事windows机器 无法 push

git push origin master
报错为

git fatal sha1 file ' stdout ' write error invalid argument

google了半天都说是 远端git仓库 没有写入权限,要把仓库 chown git:git DIR

但 :

1. 仓库确实是属于 git:git的
2. 一直好好的, 突然就出问题了。


求解?
4525 次点击
所在节点    程序员
8 条回复
maxiujun
2014-06-20 12:40:12 +08:00
看样子使用的是 http 吧, http 问题比较多.
yueyoum
2014-06-20 12:53:19 +08:00
@maxiujun

不是, 用的 sshkey
TankyWoo
2014-06-20 14:19:27 +08:00
确认下 .git/objects/ 以及里面的权限

本地用strace跟踪下

gitlab服务端没日志吗?
yueyoum
2014-06-20 14:51:47 +08:00
@TankyWoo

.git/objects 都是 git:git


同事那儿是 windows 机器

gitlab 日志完全正常,看不出任何异常
maxiujun
2014-06-20 15:04:08 +08:00
是不是 push 的东西太大了?
yueyoum
2014-06-20 15:21:51 +08:00
@maxiujun

可能是,

那个仓库有很多 二进制文件,

但是我也添加了 这些配置


[core]
autocrlf = input
packedGitLimit = 128m
packedGitWindowsSize = 128m
[pack]
windowMemory = 128m
packSizeLimit = 128m
deltaCacheSize = 128m
threads = 1


依然不行

git gc
git repack remote/origin/master
git fsck

都做过了
standin000
2014-06-20 16:32:33 +08:00
先用户ssh过去,看权限。
JeffenCheung
2016-03-30 16:53:34 +08:00
以下 Stack Overflow 的 Winfield 方案可行:
http://stackoverflow.com/questions/20310718/git-push-results-in-fatal-sha1-file-stdout-write-error-invalid-argument

upd. via.
if the latest commit has already been pushed, create a NOOP commit and force-deploy it:
touch foo.txt
git add foo.txt
git commit -m 'NOOP'
git push -u origin master --force
...and if that works, you can remove the NOOP commit you made locally:
git reset --hard master

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/118602

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX