.gitignore файл в Sourcetree не работает
Я работаю над проектом maven, и я хочу игнорировать файлы, созданные и сохраненные в папке / target моего корня проекта (оценки folder.In корень моего репозитория git у меня есть .gitignore файл со следующими записями (backend-это просто папка, которая содержит оценку проекта eclipse)
backend/Evaluation/logs/
backend/Evaluation/target/
по какой-то причине SourceTree не игнорирует файлы, хранящиеся в этих двух папках, и когда я компилирую свой проект, есть некоторые незафиксированные изменения, которые некоторые.файлы классов внутри папки / target.
почему это происходит ? Я также попытался изменить .пример записи для
/ backend / Evaluation / logs/**
но это тоже не сработало.
какие идеи ?
7 ответов:
Допустим у нас есть файл, который был случайно добавлен в наш репозиторий:
stackoverflow$ echo this file is important > junkfile stackoverflow$ git add junkfile stackoverflow$ git ci -m 'added a file'
в какой-то момент мы понимаем, что файл не имеет значения, поэтому мы добавляем его в наш
.gitignore
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, чтобы игнорировать файл.
- изменить что-то в файле так, чтобы он показал вам, или выберите его на вкладке "Статус файла" в нижней части открытого репозитория.
- щелкните правой кнопкой мыши на файле и вы увидите "игнорировать...", но он неактивен, потому что, как сказано выше, он уже в пути.
- щелкните правой кнопкой мыши на файле и выберите "остановить отслеживание"
- файл будет показан с красной кнопкой, которая указывает, что он будет удален (из отслеживания)
- новая запись того же файла будет отображаться в "состояние файла" с синим вопросительным знаком указывает на новый файл (новый, потому что вы сказали удалить из отслеживания в 4)
- щелкните правой кнопкой мыши на файле из 5 и теперь вы видите " игнорировать..." умеющий выбирать. Нажмите на него, и Sourcetree поместит новую запись для файла .gitignore file
- вы можете видеть .файл gitignore если вы нажмете на кнопку " Настройка "в правом верхнем углу, выберите" дополнительно", а затем первая запись о файле ignore, нажмите на кнопку" Редактировать", и он будет открыт.
У меня была проблема с отслеживаемой папкой bin (вся папка).
Итак, вот быстрые шаги (более визуальные, поскольку я больше визуальный тип человека):
- только в целях безопасности, я сжал всю папку bin
- переместить его на рабочий стол
- движение (ток) .gitignore на рабочий стол, а также
- удалить всю папку BIN
- фиксация изменений (через любимый инструмент фиксации git)
- Commit, push, готово!
- вернитесь в папку основного проекта
- шаг назад .gitignore file
- необязательно-переместите назад (распакуйте) папку bin.
- в результате вы увидите, что инструмент git больше не отслеживает изменения из папки bin.
Я надеюсь, что это кому-то поможет.
если файлы уже добавлены в репозитории Git, вы должны сначала прекратить отслеживание их, прежде чем они будут проигнорированы .gitIgnore.
чтобы остановить отслеживание файлов в SourceTree:
Правой Кнопкой Мыши на файлах. Выберите "Остановить Отслеживание".
(это не будет удалять ваши файлы, он просто перестает отслеживать их)чтобы остановить отслеживание файлов из командной строки:
git rm --cached example.txt
В дополнение к ответам уже указано выше, Также обратите внимание, что
.gitignore
файл не будет работать, если он не находится в корневой папке.у меня был проект, где
.gitignore
здесь/projectname/.gitignore
и поэтому не читается. Поэтому я переместил его в/.gitignore
и все снова было хорошо.