2016-12-09 3 views
2

Я использую git GUI (вместе с Git bash). Теперь, я знаю, хочу ли я игнорировать файлы для git, я должен поместить их в файл .gitignore.Как отключить файлы (git и git GUI)

1) Я узнал, что git в Windows не создает для вас файл .gitignore, и вы должны создать его самостоятельно. Также git GUI этого не сделает. Это верно?

Теперь моя особая ситуация:

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

Но я сделал это, и он был включен в коммиты (устроили, поручили и т.д.).

Теперь, я хочу untrack этот файл.

Я сделал это temporalily делая git checkout -- shouldnottrack.file, но это работает только один раз

2) Как я могу untrack этот файл? (GUI, команда, любой метод в порядке)

3) Если я включу этот файл в файл .gitignore, будет ли он автоматически проверять его?

благодарит

ответ

5

Вы должны добавить его в «.gitignore» и удалить его из мерзавца путем делать git rm (если вы хотите, чтобы удалить файлы в рабочем каталоге) или git rm --cached (если вы не хотите чтобы удалить их, но просто прекратите их отслеживать).

Затем зафиксируйте этот файл.

+0

не использует 'git rm' удалить файл? Я хочу сохранить файл (не удалять его), просто не отслеживая. – KansaiRobot

+0

Почему это проблема, потому что вы восстановите ее, если это результат сборки? Во всяком случае, это должно быть «git rm --cached» – Philippe

+0

Я вижу, поэтому в следующий раз, когда я создам (и получаю файл), это будет не проверено? (тогда я положу его в незнакомом) – KansaiRobot

0

Не уверен, что ваш первый вопрос, как я только использовать Git CLI, однако для вашего второго вопроса, попробуйте следующее:

git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE' \ --prune-empty --tag-name-filter cat -- --all

Замена PATH-TO-YOUR-FILE с реальным именем файла, который вы хотите скраб из истории. Вы должны увидеть что-то вдоль линий:

Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266) Ref refs/heads/master was rewritten

Если она была успешной - После этого, если вы уже толкнул на пульте дистанционного управления, вам нужно будет сделать git push --force перезаписать. Параметры безопасности на ветке могут отклонить нажатие.

Наконец, для вашего последнего вопроса, чтобы это не произошло, добавьте файл в ваш файл игнорирования, и git предотвратит появление какого-либо отслеживания.

Вышеприведенный ответ будет работать, однако я настоятельно рекомендую этот подход, если данные были чувствительными - то есть пароли, ключи ssh и т. Д., Поскольку файлы все равно будут в истории.

Здесь вы можете прочитать здесь https://help.github.com/articles/removing-files-from-a-repository-s-history/ и здесь https://help.github.com/articles/remove-sensitive-data/.

Надеюсь, это поможет!

Dylan

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