2014-09-27 2 views
1

Я неотслеживаемый файл, используя следующую команду:Git статус не чистят после untracking файла

git rm --cached source/html/weekend-message.html 

Это метод, описанный в this answer на переполнение стека. После этого мой статус мерзавца выглядит следующим образом:

enter image description here

Я не был уверен, что теперь делать (я хочу чистый статус), так что я продолжал смотреть и нашел this answer и выполнил эту команду:

git reset HEAD source/html/weekend-message.html 

Теперь мой статус мерзавец выглядит следующим образом:

enter image description here

Я очень смущен. Я просто хочу отменить этот файл и получить пустой статус git после этого. Как мне это сделать?


Update: После выполнения команды, предложенные в ответ VonC в поле ниже:

git rm --cached source/html/weekend-message.html 
git commit -m "delete source/html/weekend-message.html" 

мой статус мерзавца выглядит следующим образом:

enter image description here

Git статус до сих пор не clean :(

ответ

3

Вы должны иметь:

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

Поскольку у вас есть сброс файл (отмены удаления записанного в индексе), вы можете попробовать еще раз:

git rm --cached source/html/weekend-message.html 
git commit -m "delete source/html/weekend-message.html" 

Тогда:

  • добавить файл в файл .gitignore (вы увидите, что это немедленно исчезнет с выхода git status)
  • добавить и зафиксировать, что .gitignore модификация (вторая фиксация есть)

Примечание: как предложено ниже в комментариях, вы можете сделать только один совершить:

  • git rm --cached source/html/weekend-message.html
  • добавить файл в файл .gitignore (вы увидите, что это исчезает сразу от git status выход), git add .gitignore.Примечание: теперь вы получите надлежащее состояние GIT, готовы быть поручено: enter image description here
  • git commit -m "delete and ignore source/html/weekend-message.html"

Обратите внимание, что игнорировать файл локально (в отличие от записи о его исключении в истории репо), вы можете использовать:

git update-index --skip-worktree -- yourFile 

Не требуется там, и файл остается в истории.

Подробнее на "Git - Difference Between 'assume-unchanged' and 'skip-worktree'".

+0

Я выполнил эти команды, но статус git еще не чист. –

+0

Btw вы говорите, что для совершения этого свойства требуются 2 коммита? ('rm --cached', затем зафиксировать удаление, затем обновить .gitignore и, наконец, зафиксировать обновленный .gitignore) –

+0

@ ŠimeVidas да, но как только вы добавите этот файл в .gitignore, он должен исчезнуть из состояния , Я отредактировал ответ, чтобы сделать две фиксации более заметными. – VonC

Смежные вопросы