【发布时间】:2017-09-26 15:23:26
【问题描述】:
背景
我是 git 的新手,我正在测试它作为不在 github 上托管的网站的版本控制。我已将public_html 设为 git 存储库,并在 public_html 之外创建了一个裸存储库,我将所有提交和标签推送到该存储库。我的目标是能够标记我对网站所做的更改,并可以在需要时快速恢复到以前的版本。到目前为止,通过我的测试,我已经能够通过使用reset 或checkout 后跟标签名称返回到以前的版本来完成此操作。
问题
我在制作涉及从以前的标签中删除文件的新版本标签时遇到问题。如果我尝试将 reset 或 checkout 转到文件曾经存在且正常运行的前一个标签,则访问这些页面的请求会返回“内部服务器错误”。我知道这些文件在那里,因为我看到它们重新出现在 public_html 文件夹中(如刷新 cpanel 或 filezilla 时所见)。如果我下载这些文件,从我的网站上完全删除 git,然后将它们添加回 public_html 文件夹,它们可以正常工作,表明文件没有被修改或损坏。此外,当位于文件确实被删除的标签时,我会得到“找不到页面”的结果。
这是一个常见问题吗?任何提示、建议或解决方法将不胜感激。
更新 1
基于@VonC 的善意建议,我已经尝试过
- 通过将
core.autocrlf设置为FALSE来防止不必要的 EOL 更改。 - 正在运行
git clean。
很遗憾,这些建议并未解决问题。我还确定这个问题发生在 PHP 文件而不是 HTML 上。我继续自己阅读,但我还没有发现任何关于类似问题的报告。我希望尽快解决这个问题。目前,如果我最终删除文件并后悔,我将无法恢复到以前的版本,这本质上是我希望从 git 获得的主要好处之一。
另外,我很好奇 git 是否修改了权限,但我检查过,它们没有改变。
更新 2
我认为如果我指定了我尝试过的所有内容,以防有人想尝试重现问题,这可能会有所帮助。
$git init --bare bare_repo.git
$cd public_html
$git init
$git remote add origin ../bare_repo.git
$git add index.html # simple testing only "hello world"
$git add commit -m "index.html"
$git tag -a v001 -m "v001"
$git push origin master --tags
现在添加一个 PHP 文件:
$git add phpinfo.php # again for testing only, includes <?php phpinfo(); ?>
$git add index.html #file changed to include link to phpinfo.php
$git commit -m "phpinfo.php"
$git tag -a v002 -m "v002"
$git push origin master --tags
现在,结帐v001:
$git checkout v001
index.html 在没有链接的情况下返回原始状态,phpinfo.php 从 public_html 文件夹中消失。
现在,结帐v002:
$git checkout v002
index.html 重新获得链接,phpinfo.php 重新出现在public_html。
但是,当我尝试访问 phpinfo.php 时,我收到“内部服务器错误或配置错误”页面加载。
【问题讨论】:
标签: git