git reset --hard HEAD
如何使文件结构实际更新?
需要做什么?
git reset --hard HEAD
如何使文件结构实际更新?
需要做什么?
很高兴的是,现在git直接支持此功能!您可以在我刚刚点赞的这个答案中找到详细信息:
https://dev59.com/mGw05IYBdhLWcg3wmCwo#38363683
它建议使用以下命令配置远程:
git config receive.denyCurrentBranch updateInstead
这样推送会导致工作副本更新!
git最佳实践。根据Git文档,如果不遵循它,可能会得到“意外结果”。任何有一定编程经验的人都知道,“意外结果”意味着“可能会吞噬你的孩子,应该尽量避免。”
更好的安全性,如果您计划从Web服务器访问服务器上检出的文件。
在您检出的代码上进行本地修改,并能够快速更改现场检出的代码。您可以尝试直接在仓库上进行此操作,但会比较混乱且容易出错。
独立更新服务器仓库的能力,而无需更新您的现场服务代码。如果您远程工作并需要将某些内容发送到服务器,然后进行进一步的工作,以使其准备好用于现场服务,或者如果您的现场服务代码发生更改(例如,不同的配置设置),并需要将这些更改与仓库中的更改合并,但现在还不能这样做,这一点非常重要。
Git版本1.9.1
Ubuntu Server 14.04 LTS
LAMP服务器
我将我的LAMP服务器设置为在Web开发人员推送更改到服务器时更新Git repo的工作目录。我注意到日志会记录新的提交,但不会更新工作目录。为了避免每次更新都手动执行(git checkout -f),可以在接收到推送后自动设置。
在"hooks"文件夹中创建名为"post-receive"的文件,并添加以下内容:
#!/bin/sh
# 接收到远程客户端的推送后更新工作目录。
# 这应该指向git的工作目录。
GIT_WORK_TREE=/var/www/dev_site git checkout -f
在"hooks"文件夹中输入"chmod +x post-receive"以启用执行文件权限。
现在,当提交被推送到Git repo时,它将自动更新工作目录。当我在浏览器中访问网站时,网站已经显示了更改。
我的工作目录是/var/www/dev_site