2016-01-18 1 views
2

Я пытался добавить журнал ошибок в мой файл .gitignore, и где-то по пути прочитал, что мне пришлось специально разобрать файл после добавления его в .gitignore. Так или иначе, я завелся, используя это сделать так:git - вернуть индекс обновления/проигнорированный файл, чтобы я мог изменить ветвь?

git update-index --assume-unchanged Logs/Err.log

Все выглядело хорошо, пока я не пошел, чтобы перейти к моему развития отрасли слиться. Я не могу менять ветви. Я получаю следующее сообщение об ошибке:

Your local changes to the following files would be overwritten by checkout: Logs/Err.log

Но когда я бегу git status --s от моей текущей ветви, я не получаю «ничего совершить, рабочий каталог чистой»

я облажался где-то. Как я могу «фактически» игнорировать этот журнал ошибок? Как вернуться к моей предыдущей команде без обновления?

+1

Вы пытались http://stackoverflow.com/a/17195901/1657076? – venkatKA

+0

Не видел, что в моем поиске ... должен иметь это сейчас, извлеченный урок. – jleach

ответ

0

Я не уверен, это «правильный» ответ, но вот как я его разрешил (полезно, что это был журнал ошибок, который был едва критичным ...)

  1. Удален файл из .gitignore
  2. удалить файл
  3. запустить git update-index --add Logs/Err.log
  4. зафиксировать ветку
  5. извлечете развивать и объединять
  6. назад к предыдущему ответвления новой функции

Looks Что ж. Я могу добавить Err.log сейчас, и он подберет изменения, поэтому ветка снова отслеживает его. Я удалю файл, а затем снова добавлю в .gitignore, и все будет хорошо.

Мораль:

  1. Не связывайтесь с вещами, когда вы не понимаете, что именно они делают (update-index)
  2. Не пытайтесь игнорировать файл, который уже прослежена.
0

Основываясь на моем собственном опыте, выполнение git update-index --assume-unchanged работает только с веткой, в которой вы ее выполняете. На самом деле это не влияет на внешний вид базового индекса, он только маскирует его для операций, происходящих на этой ветке. Поэтому, когда вы переключаете ветви, Git все еще «видит» грязный файл. Если вы хотите, чтобы переключить ветви, вы можете попробовать следующее:

git stash 

или

git reset --hard HEAD 

Конечно, вы должны сначала отменить update-index:

git update-index --no-assume-unchanged Logs/Err.log 
+0

Хм, - нет-предположить-без изменений ... Интересно, как это отличается от --add ... Я буду RTFM (как я должен был сделать в первую очередь ...) – jleach

+0

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

+0

Это делает нас двоих (я работал над этим, пока вы отправили свой ответ, иначе я бы сделал это по вашему предложению). В любом случае ветка правильно сливается с dev и теперь удаляется, поскольку она больше не нужна. Надеюсь, нет никаких скрытых проблем в будущем ... – jleach

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