Подтвердить что ты не робот

Git отслеживать, игнорировать, удалять, не отслеживать

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

Теперь моя главная ветка пытается удалить все файлы из репозитория, которые, как я знаю, будут удалять их на удаленной ветке, когда я нажимаю изменения... Я просто хочу их разобрать, но не могу этого сделать, поскольку они уже удален на master и git rm -r --cached говорит, что "не соответствует никаким файлам".

Как я могу отследить эти удаленные файлы, не удаляя их из удаленного репозитория?

4b9b3361

Ответ 1

Вы просто не хотите отслеживать файл, но хотите сохранить файл в удаленном репозитории (не голый).

Используйте эту команду git. После этого git перестает проверять файл на предмет возможных изменений.

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

В любое время вы можете отслеживать снова, установив флаг -no-accept-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

Ответ 2

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

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

Ответ 3

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

В вашем местном репо: git rm foo git commit -m 'удален foo' git нажмите начало оригинала

В удаленном репозитории:

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, чтобы отменить