.файл gitignore в Sourcetree не работает
Я работаю над проектом maven, и я хочу игнорировать файлы, созданные и сохраненные в /целевой папке моей корневой папки проекта (оценки).В корне моего репозитория git у меня есть.файл gitignore со следующими записями (бэкэнд-это просто папка, содержащая оценку проекта eclipse)
backend/Evaluation/logs/
backend/Evaluation/target/
по какой-то причине SourceTree не игнорирует файлы, хранящиеся в этих двух папках, и когда я компилирую свой проект, есть некоторые незафиксированные изменения, которые некоторые.файлы классов внутри папки / target.
почему это происходит ? Я также попытался изменить .пример записи для
/ бэкэнд / оценка / журналы/**
но это тоже не сработало.
какие идеи ?
7 ответов
Допустим у нас есть файл, который был случайно добавлен в наш репозиторий:
stackoverflow$ echo this file is important > junkfile
stackoverflow$ git add junkfile
stackoverflow$ git ci -m 'added a file'
в какой-то момент мы понимаем, что файл неважен, поэтому мы добавляем его в наш :
stackoverflow$ echo junkfile >> .gitignore
stackoverflow$ git ci -m 'ignore junkfile' .gitignore
позже, мы внесем некоторые изменения в этот файл:
stackoverflow$ sed -i 's/ is / is not/' junkfile
и, конечно, хотя файл указан в .gitignore
, мы уже сказали git, что мы хотим отслеживать его, так что git status
показывает:
stackoverflow$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: junkfile
#
no changes added to commit (use "git add" and/or "git commit -a")
нужно удалить этот файл из репозиторий (без удаления файла из нашего рабочего дерева). Мы можем сделать это с помощью --cached
флаг git rm
:
stackoverflow$ git rm --cached junkfile
rm 'junkfile'
этого этапа delete
операции...
stackoverflow$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: junkfile
#
...поэтому нам нужно совершить это:
stackoverflow$ git commit -m 'removed junkfile from repository'
[master 19f082a] removed junkfile from repository
1 file changed, 1 deletion(-)
delete mode 100644 junkfile
теперь если мы запустим git status
git проигнорирует этот файл:
stackoverflow$ git status
# On branch master
nothing to commit, working directory clean
хотя он все еще здесь, в нашем рабочем дереве:
stackoverflow$ cat junkfile
this file is not important
потому что в вопросе есть тег Sourcetree, я отвечу вам как это сделать с Sourcetree, это очень просто.
Как уже было сказано, сначала вы должны удалить файл из отслеживания, а затем сделать Sourcetree игнорировать файл.
- измените что-то в файле, чтобы он был показан вам, или выберите его на вкладке "Состояние файла" в нижней части открытого репозитория.
- щелкните правой кнопкой мыши на файле и вы увидите "Ignore...", но он серый, потому что, как сказано выше, он уже в пути.
- щелкните правой кнопкой мыши на файле и выберите "остановить отслеживание"
- файл будет показан с красной кнопкой, которая указывает, что он будет удален (из отслеживания)
- новая запись того же файла будет отображаться в "состояние файла" с синим вопросительным знаком указывает на новый файл (новый, потому что вы сказали удалить из отслеживания в 4)
- щелкните правой кнопкой мыши на файле от 5 и теперь вы видите " игнорировать..." умеющий выбирать. Нажмите на него, и Sourcetree поместит новую запись для файла в.файл gitignore
- вы можете видеть .файл gitignore если вы нажмете " настройка "в правом верхнем углу, выберите" дополнительно", а затем первая запись о файле ignore, нажмите" Изменить", и он будет открыт.
У меня была проблема с отслеживаемой папкой bin (вся папка).
Итак, вот быстрые шаги (более визуальные, поскольку я больше визуальный тип человека):
- просто в целях безопасности я сжал всю папку bin
- переместить его на рабочий стол
- движение (ток) .gitignore на рабочий стол, а также
- удалить всю папку BIN
- фиксация изменений (через любимый инструмент фиксации git)
- Commit, push, готово!
- вернитесь в папку базового проекта
- шаг назад .файл gitignore
- необязательно-переместите назад (распакуйте) папку bin.
- в результате вы увидите, что инструмент git больше не отслеживает изменения из папки bin.
надеюсь, это кому-то поможет.
если файлы уже добавлены в репозитории Git, вы должны сначала прекратить отслеживание их, прежде чем они будут проигнорированы .gitIgnore.
чтобы остановить отслеживание файлов в SourceTree:
щелкните правой кнопкой мыши по файлам. Выберите "Остановить Отслеживание".
(это не удалит ваши файлы, он просто перестанет отслеживать их)
чтобы остановить отслеживание файлов из командной строки:
git rm --cached example.txt
В дополнение к ответам уже указано выше, Также обратите внимание, что .gitignore
файл не будет работать, если он не находится в корневой папке.
у меня был проект, где .gitignore
здесь /projectname/.gitignore
и поэтому не читается. Поэтому я переместил его в /.gitignore
и все снова было хорошо.
Я нашел это, удалив репозиторий, а затем имея .файл gitignore в папке при воссоздании репозитория файл ignore соблюдается.