推送到Bare git repo之后为什么我看不到文件

Kev*_* W. 5 git ssh github

我有我的本地dev repo(origin)和一个我使用git init创建的远程仓库 -就像这里推荐的那样.我也跑了git --bare update-server-info

git config --bool core.bare true
Run Code Online (Sandbox Code Playgroud)

Git remote -v显示

origin  http://staging.websitename.com (fetch)

origin  http://staging.websitename.com (push)

remote  ssh://user@xx.xx.xx/home/user/public_html/staging (fetch)

remote  ssh://user@xx.xx.xx/home/user/public_html/staging (push)
Run Code Online (Sandbox Code Playgroud)

在此之后并运行git push remote或git push -all remote,它会通过并且没有错误.为什么我看不到遥控器上的文件?

Compressing objects: 100% (4121/4121), done.
Writing objects: 100% (4242/4242), 18.70 MiB | 694 KiB/s, done.
Total 4242 (delta 495), reused 0 (delta 0)
Run Code Online (Sandbox Code Playgroud)

Nou*_*him 8

裸存储库没有工作副本,因此您不会"看到"任何文件.尝试做一个git日志,你可以看到提交.从裸仓库克隆,你会得到文件.


tor*_*rek 5

存储库的要点--bare是它没有工作副本(也没有索引),这意味着推送不会弄乱任何内容。

\n\n

如果您希望某些推送(到一个或多个特定分支)“自动部署”,实现这一点的方法是在存储库中使用 git hook --bare。钩子\xe2\x80\x94通常post-receive,尽管可以在此处使用pre-receiveupdate钩子\xe2\x80\x94在所有推送上运行,所以它应该检查有问题的推送是否“有趣”(影响自动)部署分支),如果是,则触发部署。

\n\n

该钩子代表执行推送的进程运行(通常作为某个用户进行 ssh,如git remote -v输出中所示),因此如果部署的文件应由另一个用户拥有,则必须以某种方式进行安排。一种简单、简单且合理的方法是写入设置为模式rw-rw-rw-(每个人都可写入)的文件,并让某些东西(例如 cron 作业)定期检查该文件。如果写入,则以部署用户\xe2\x80\x94 身份运行的 cron 作业\xe2\x80\x94 可以提取相应分支的最新版本。另一种方法是联系执行此操作的服务器(puppet 等)。

\n\n

如果执行推送 () 的用户可以拥有这些文件,则更简单的方法是在挂钩中user@xx.xx.xx运行,但使用与存储库没有其他连接的备用工作树git checkout--bare

\n