2015-07-20 107 views
0

Git-scm.org在其網站上非常清楚,git rm不能用於僅從工作樹中刪除文件。從git-scm.orgrm僅適用於工作樹,僅適用於git中的文件

沒有選項只從工作樹中刪除一個文件,但 保持它的指標;如果你想這樣做,請使用/ bin/rm。

我的問題是:有沒有辦法可以做到這一點?本身不嚴格與git rm

我想這樣做的原因是我在我的(C#)開發工作流程中有兩個文件夾 - web根目錄和我的開發根目錄。當我構建我的項目時,所有項目文件都從開發根目錄複製到Web根目錄。作爲這些項目文件的兄弟姐妹,我在web根目錄中有一個大的CMS框架。這些安裝一次,並與我的項目文件並排生活。

此工作流程的問題是,如果我更改文件的位置,或者我重命名文件,則不會刪除舊文件。該過程是批量複製,並且我將在Web根目錄中管理一個文件的兩個版本。這會導致混淆錯誤。

我的想法是在我的web根目錄中使用本地git存儲庫,併爲所有CMS框架文件使用.gitignore。我想建立執行三個操作的腳本:

  1. 刪除所有的git控制文件從開發根到網站根
  2. 添加任何改變指數
  3. 複製文件,提交它們。

這樣我保證我的網站根本不會被陳舊的文件污染。這也爲我想探索的更多機會打開了大門。

+0

我在這裏回答了類似的問題:http://stackoverflow.com/questions/ 31241850/get-deleted-files-list-from-git-commits/31242006#31242006 - 也許有什麼可以幫助你。 'rsync'應該照顧你要找的東西...... – nwinkler

回答

0

不管這是一個很好的做法是值得商榷的,但我沒有黑客的東西在一起的作品:

for /f "tokens=4" %a in ('git ls-tree --full-name -r HEAD') DO rm %a