【问题标题】:Git push is finickyGit推送很挑剔
【发布时间】:2014-06-11 21:58:12
【问题描述】:

我在使用 git 时遇到了很多问题(另外,我是新手)。很多时候,当我尝试 git push 时都会遇到错误。见下文:

Counting objects: 8, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 6.03 KiB | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To /Volumes/batcave/sourceControl/x.git
 ! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '/Volumes/batcave/sourceControl/x.git'

奇怪的是,如果我输入:

git reset --hard origin/master

然后

emacs testfile.txt

然后在 testfile.txt 中输入文本,然后照常进行:

git add .
git commit -a -m"added testfile.txt"
git push

这种推动有效。所以我不买它是因为我没有适当的许可。此外,有时如果我只是打开在 emacs 中推送时遇到问题的文件并添加和删除一些返回,那么它就可以工作。

有关更多信息,我正在使用 git 存储库来保持我的台式电脑和 mac 笔记本电脑同步。

【问题讨论】:

  • 你能给出你用于失败推送的确切命令吗?以及(可能匿名的)输出形式git remove -v?
  • 你是在pc端还是mac端推送?还是双向的?
  • 两个存储库都满了吗?或者是一个裸存储库?

标签: git push


【解决方案1】:

您正在使用似乎已挂载的文件系统的系统之间交叉权限模型。当系统与 Mac OS 和 windows 不同时,这是不可取的。当您推送时,您正在编写新文件并修改索引。通过共享访问,您可能会以不同权限的用户身份尝试这些操作。相反,您应该在两个系统之间使用 network 协议,以便始终从相同的上下文执行文件操作。

如果代码是您不介意公开的东西,最快的方法是使用现有的免费 git 服务器,例如 github。两个系统都会从主机拉取和推送。这是我的建议。

否则,选择一个系统作为您的“服务器”,并在两个系统之间设置基于 SSH 密钥的身份验证,以便使用 git 协议 进行访问。本质上,这意味着客户端系统应该作为拥有 repo 文件的 user@server 访问服务器。 (也有可能,但可能没有必要将两者设置为彼此对称,以便两者都可以推送或拉取,在双方使用 SSH 授权密钥。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多