2016-01-25 61 views
1

我有一個版本化的目錄,其中包含一些pdf資源,這些資源不太適合版本控制,但仍然需要在那裏一些我實際上想要版本化的html文件。測試服務器和生產服務器上都存在相同的文件夾,我使用git將更改從一臺服務器部署到另一臺服務器。我想從版本中刪除pdf,而不從任一服務器上的工作目錄中刪除它們。如何刪除Git版本中的文件,而不刪除它們,在本地和開放REMOTE存儲庫

我用git rm -r --cached,從混帳回購協議中刪除它們沒有從我的工作目錄中刪除它們,我已經將它們添加到.gitignore這樣的Git不會看到它們作爲未跟蹤文件,但是當我提交更改並將更改拉到我的其他服務器上,所有這些pdf將從其他服務器上的工作目錄中刪除。我希望他們留下來。有什麼建議?

注意,這不是涉及從緩存中刪除,而不從本地文件系統刪除的問題重複。這是關於分佈式情況。

+0

您是否將.gitignore更改作爲單獨提交進行提交,或者在刪除pdf時進行同樣的提交? – AdmSteck

+0

我在同一個提交中添加了.gitignore作爲從緩存中刪除pdf的方法 – Jibbyj

回答

1

做服務器上執行以下操作:

  • git pull得到改變,PDF文件會暫時消失。
  • git reset HEAD~1 --hard這應該會讓你回到提交pdf之前的提交。 HEAD〜1是當前提交之前提交的簡寫。如果這些文件在之前提交了一些提交,那麼在刪除pdf之前,可以用提交的SHA替換HEAD〜1。
  • git reset ORIG_HEAD --mixed這會將您的分支指向正確的提交併重置暫存區域,但不會重置工作目錄中的文件。
  • 如果.gitignore在刪除pdf的同一提交中被修改,則需要git checkout -- .gitignore才能將其恢復。

完成這些步驟後,pdfs仍然存在,您的回購應該是最新的。

+0

哦,那個人太漂亮了。 – Jibbyj

0

按照以下步驟..

  1. 添加的所有PDF文件
  2. 按壓的編碼
  3. 更新的.gitignore
  4. 做一個承諾一推再次

這樣的git服務器上的文件不會被刪除。但是因爲它們在.gitignore中,所以它們不會被版本化。意思是當你拉一下,你也會得到pdf。例如,看看this repo。它有兩個文件,asd.txtqwe.txt,其中asd.txt使用.gitignore被忽略。但是,當你拉動代碼時,你會得到這兩個文件。

+1

已經添加的.pdf文件仍將被跟蹤; '.gitignore'只會阻止添加新的* .pdf文件。 – mipadi

相關問題