2012-03-20 3 views
18

Кажется, что у меня есть gat repo, отслеживая файл, позже игнорируя его, а затем удаляя его. Дело в том, что я хочу, чтобы файл присутствовал в удаленном репозитории (живой сайт), но просто не хочу отслеживать.git track, ignore, delete, untrack

Теперь моя главная ветка пытается удалить все файлы из репозитория, которые, как я знаю, будут удалять их на удаленной ветке, когда я нажимаю изменения ... Я просто хочу их разобрать, но не могу этого сделать, re уже удален на 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

Hei его работы. Не могли бы вы объяснить, как это отличается от добавления в git ignore? –

+1

@ Ajith: GIT не будет игнорировать файл, который уже отслеживался. Для получения подробной информации см. Ссылку, содержащуюся в ответе. –

4

git rm Используется для удаления файлов из репозитория.

Чтобы прекратить отслеживать их, вы можете, после удаления, добавить их в файл .gitignore в корень репозитория.

+3

Я не думаю, что вы можете прекратить отслеживание файл, который уже отслеживаемых gitignoring его. Может ли кто-нибудь подтвердить? –

+0

Подтверждено. ! min char limit! – heinrich5991

+0

Но удаление файла не перестает отслеживать его, не так ли? –

0

Даже если вы не просмотрели файл с git rm, вы все равно можете проверить предыдущую версию этого файла, например.

В вашем местном репо: мерзавец ет Foo мерзавца совершить -m 'удалить Foo' мерзавца нажимного мастер происхождения

В удаленном хранилище:

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