Git receive.denyCurrentBranch updateInstead失败

7

我对git完全不了解,也没有使用过任何版本控制系统。我在本地进行开发,并正在寻找一种比FTP更简单的方式来部署文件到(LAMP)Web服务器。我很难配置Git(Windows版2.5)以在推送更改时自动更新其当前工作目录。在创建本地存储库、进行第一个提交并在别名origin下添加远程位置后,我所做的如下:

  1. [remote] ssh user@domain
  2. [remote] cd testgit
  3. [remote] git init
  4. [remote] git config receive.denyCurrentBranch updateInstead
  5. [remote] git status: nothing to commit
  6. [remote] exit
  7. [local >> master] git status: nothing added but untracked files present
  8. [local >> master] git push origin master

第8步生成一个通知和两个错误:

  • stdin: is not a tty
  • fatal: bad config value for 'receive.denycurrentbranch' in config
  • fatal: Could not read from remote repository

我一直在寻找答案,但卡住了。我错在哪里了?


你创建过任何提交吗? - TheGeorgeous
是的,我在尝试推送之前本地进行了第一次提交。我在步骤列表之前在 OP 中写过了。 - BeetleJuice
1个回答

5
首先,在推送之前,您需要添加和提交:如果有未跟踪的文件,则在执行添加和提交之前不会被推送。
其次,“receive.denyCurrentBranch updateInstead”仅适用于git 2.3+(2015年2月):确保服务器端安装了正确版本的git。 引用:
“服务器上是否需要单独安装git?我在Windows计算机上有git 2.5。我没有在服务器上安装任何东西。”
是的,您也需要在服务器上安装git。

我在本地进行了第一次提交。我在操作步骤1的上方写了这个。我不能有任何未跟踪的文件吗?关于第二个问题:服务器上应该单独安装git吗?我的Windows机器上有git 2.5,但我没有在服务器上安装任何特定的东西。 - BeetleJuice
1
谢谢。我在服务器上运行了 git --version 命令。版本是 1.8.3。我会研究如何升级 git,然后再次测试我的初始步骤。 - BeetleJuice
@Patrick 我确认:1.8.3版本不支持receive.denyCurrentBranchupdateInstead - VonC
在服务器上将git升级到2.4后,一切都按预期运行。我的最初问题是我没有意识到git也在服务器上运行。我以为本地的git控制着一切。 - BeetleJuice
@Patrick git是一个纯本地文件系统管理器(能够管理文件的历史记录)。除非您通过共享路径访问服务器,否则您需要另一个git来在服务器端执行git命令。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接