还原到GIT中以前的标记时出现问题 背景
我是git新手,我正在测试它作为一个不在github上托管的网站的版本控制。我已经将还原到GIT中以前的标记时出现问题 背景,git,Git,我是git新手,我正在测试它作为一个不在github上托管的网站的版本控制。我已经将public\u html作为git回购,并在public\u html之外创建了一个裸回购,我将所有提交和标记都推送到该回购。我的目标是能够标记我对网站所做的更改,并在需要时可以选择快速恢复到以前的版本。到目前为止,我已经能够通过使用reset或checkout以及标记名返回到以前的版本来完成测试 问题 当我创建涉及从以前的标记中删除文件的新版本标记时,我会遇到问题。如果我尝试重置到或签出文件曾经存在且正常工作
public\u html
作为git回购,并在public\u html
之外创建了一个裸回购,我将所有提交和标记都推送到该回购。我的目标是能够标记我对网站所做的更改,并在需要时可以选择快速恢复到以前的版本。到目前为止,我已经能够通过使用reset
或checkout
以及标记名返回到以前的版本来完成测试
问题
当我创建涉及从以前的标记中删除文件的新版本标记时,我会遇到问题。如果我尝试重置
到或签出
文件曾经存在且正常工作的上一个标记,这些页面的访问请求将返回“内部服务器错误”。我知道文件在那里,因为我看到它们重新出现在public\u html
文件夹中(刷新cpanel或filezilla时看到的)。如果我下载这些文件,从我的网站上删除git,然后将它们添加回public_html
文件夹,它们工作正常,表明文件没有被修改或损坏。此外,当在文件确实被删除的标记处,我会得到一个“未找到页面”的结果
这是一个普遍的问题吗?任何提示、建议或解决方法都将不胜感激
更新1
基于@VonC的善意建议,我尝试了
core.autocrlf
设置为FALSE
来防止不必要的EOL更改
$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
index.html返回到原始状态,没有链接,phpinfo.php从public\u html
文件夹中消失
现在,签出v002
:
$git checkout v002
index.html重新获得链接,phpinfo.php重新出现在public\u html
中
但是,当我尝试转到phpinfo.php时,我会看到“内部服务器错误或配置错误”页面加载。尝试更严格的方式重置或签出:
git reset --hard anOldTag
git clean -fd
添加将确保生成的工作树只包含来自SHA1(此处为标记)重置或签出的文件。一定要在一个单独的站点上对它进行测试,以验证它不会远程发送太多的文件 我发现问题与GIT在签出或重置操作后修改权限有关。它将文件从664更改为644,从而启用组写入。虽然我考虑过权限变更,但我没有意识到这一点。HTML和PHP文件都会出现这种情况,但这只是PHP文件的一个问题。快速搜索表明这个问题存在解决方案,所以这只是选择最佳方法的问题。谢谢VonC花时间考虑我的问题。 谢谢你回答我的问题。很遗憾,这不起作用。@joe5在服务器上键入git config--global core.autocrlf false后重试。(作为运行web服务器的帐户完成)。在客户端也这样做(你的账户在这些文件上也会被打上标记)。再次尝试删除全部git,然后将其添加回。然后在以后结账时查看问题是否仍然存在。感谢您的跟进。我试过这个,但不幸的是我仍然有同样的问题。有趣的是,我发现它是特定于php文件的,但不会出现在HTML文件中+1.或者可能有帮助。
git reset --hard anOldTag
git clean -fd