git - 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
解决方案
如果您想要服务器上存储库的远程副本,您可以将其设为裸机(以便您可以推送到它)并创建该存储库的非裸机克隆,您的 Web 服务器可以在其中找到它。在这种情况下,您需要两个步骤来部署:
- 从您的开发机器推送到裸仓库。
- 从裸仓库拉入 Web 服务器文件。
您可以使用裸仓库中的挂钩自动执行第二步;可能是post-update
钩子,但我不确定。
更简单的设置是根本不使用 git 进行部署,而只需使用 rsync 将文件复制到您的 Web 服务器。
推荐阅读
- android - 不确定 react-native start 命令是否正常工作
- django - Django:当令牌存储在 HttpOnly cookie 中时,如何更新 SimpleJWT 访问令牌?
- neo4j - Neo4j Cypher 从同一节点查询多个关系
- python - 如何保存上面标题的无花果?
- python - 如何用python中的特定值替换列的值?
- git - 如何检查确切的 Windows git 凭据管理器有效?
- python - 合并数据框并获得额外的行。(蟒蛇/熊猫)
- linux-kernel - 将 Linux DMA 分配限制在特定范围内
- javascript - 子菜单级别无法正常工作 Vanilla JS
- docker - 为什么 docker-compose 运行相同的命令并使用错误的 Dockerfile?