2012-03-20 128 views
18

我似乎通過跟蹤一個文件,後來忽略它,然後刪除它,讓我的git repo變得很糟糕。事情是,我希望該文件存在於遠程存儲庫(即時網站)中,但不想跟蹤。git跟蹤,忽略,刪除,untrack

現在我的主分支正在嘗試從存儲庫中刪除所有文件,我知道在我推送更改時,它們會在遠程分支上刪除它們...我只想解除它們,但不能這樣做,在master和git上已經刪除了rm -r --cached說'沒有匹配任何文件'。

如何在不從遠程存儲庫中刪除這些刪除的文件的情況下解除這些已刪除的文件?

回答

30

你只是不想跟蹤一個文件,但你想保留在遠程存儲庫(非裸露)的文件。

使用此git命令。這樣做後,git停止檢查文件以查找可能的修改。

git update-index --assume-unchanged <filename> 

在任何時候,你可以通過設置--no-假設 - unchaged標誌

git update-index --no-assume-unchanged <filename> 

這些命令不會影響到遠程倉庫再次跟蹤。

欲瞭解更多信息:http://kar-git.blogspot.in/2012/11/how-to-set-git-to-ignore-few-files-like.html

+1

嘿它的工作。你能解釋它是如何不同於添加到git忽略 – 2014-01-24 05:23:47

+1

@ Ajith:GIT不會忽略已被跟蹤的文件。查看答案中提供的鏈接以獲取詳細信息。 – 2014-01-27 06:55:12

4

git rm用於從存儲庫中刪除文件。

要停止跟蹤它們,可以在刪除之後將它們添加到存儲庫根目錄中的.gitignore文件中。

+3

我不認爲你可以停止追蹤已經被gitignoring它跟蹤的文件。有人可以確認嗎? – 2013-01-07 16:23:15

+0

確認。 !最小字符數限制! – heinrich5991 2013-01-07 18:26:53

+0

但刪除文件不會停止跟蹤它,對吧? – 2013-01-08 03:15:50

0

即使您使用git rm未跟蹤文件,仍然可以檢出該文件的先前版本,例如,

在您的本地回購: git的RM富 git的承諾-m '刪除富' 混帳推起源主

在遠程倉庫:

git pull origin master // foo will be removed 
git checkout abcd1234 -- foo // checkout foo from commit abcd1234 (foo is staged) 
git reset HEAD // unstage foo 
git status 

# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  foo 

然後添加到的.gitignore到untrack