背景
我是新來的git,和我測試它作爲一個版本控制未在GitHub上託管的網站。我已將public_html
作爲git回購,並在public_html
之外創建了一個裸回購,我將所有提交和標籤推送到該回購。我的目標是能夠標記我對網站所做的更改,並且可以根據需要快速恢復到以前的版本。到目前爲止,在我的測試中,我通過使用reset
或checkout
後跟標記名稱可以完成此操作,以返回到以前的版本。麻煩恢復到以前的標籤GIT
的問題
我遇到問題時,我作出這樣的涉及從以前的標籤移除文件的新版本的標籤。如果我嘗試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,我得到「內部服務器錯誤或配置錯誤」頁面加載。
謝謝你回答我的問題。不幸的是,這沒有奏效。 – joe5
@ joe5在服務器上鍵入後再試一次,git config --global core.autocrlf false。 (作爲運行Web服務器的帳戶完成)。在客戶端也這樣做(因爲您的帳戶在這些文件上)。再次嘗試刪除所有git,將它們添加回去。然後查看問題是否在將來結賬時仍然存在。 – VonC
@ joe5是否奏效? – VonC