首页 > 解决方案 > Git 裸仓库和非裸仓库

问题描述

我是 git 新手,我正在尝试将我的网站推送到网上。

在本地主机上:

git init
git add .
git commit -a
git remote add blabla ssh://blabla/project.git
git push babla master

在服务器端:

git init 
git pull blabla master

所以问题是,如果我在服务器上的 git 是裸露的,我就无法推送。如果我的 git 服务器不是裸机,我不能拉...

remote: error: refusing to update checked out branch: refs/heads/master
remote: error: Par défaut, mettre à jour la branche actuelle dans un dépôt non-nu
remote: est réfusé parce que cela rendrait l'index et la copie de travail
remote: inconsistants avec ce que vous avez poussé et nécessiterait
remote: 'git reset --hard' pour réaligner la copie de travail avec HEAD.

在服务器上:

fatal : this operation must be run on a work tree

标签: git

解决方案


如果您想要服务器上存储库的远程副本,您可以将其设为裸机(以便您可以推送到它)并创建该存储库的非裸机克隆您的 Web 服务器可以在其中找到它。在这种情况下,您需要两个步骤来部署:

  1. 从您的开发机器推送到裸仓库。
  2. 从裸仓库拉入 Web 服务器文件。

您可以使用裸仓库中的挂钩自动执行第二步;可能是post-update钩子,但我不确定。

更简单的设置是根本不使用 git 进行部署,而只需使用 rsync 将文件复制到您的 Web 服务器。


推荐阅读