.gitignore файл в Sourcetree не работает


Я работаю над проектом maven, и я хочу игнорировать файлы, созданные и сохраненные в папке / target моего корня проекта (оценки folder.In корень моего репозитория git у меня есть .gitignore файл со следующими записями (backend-это просто папка, которая содержит оценку проекта eclipse)

backend/Evaluation/logs/
backend/Evaluation/target/

по какой-то причине SourceTree не игнорирует файлы, хранящиеся в этих двух папках, и когда я компилирую свой проект, есть некоторые незафиксированные изменения, которые некоторые.файлы классов внутри папки / target.

почему это происходит ? Я также попытался изменить .пример записи для

/ backend / Evaluation / logs/**

но это тоже не сработало.

какие идеи ?

7 60

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, чтобы игнорировать файл.

  1. изменить что-то в файле так, чтобы он показал вам, или выберите его на вкладке "Статус файла" в нижней части открытого репозитория.
  2. щелкните правой кнопкой мыши на файле и вы увидите "игнорировать...", но он неактивен, потому что, как сказано выше, он уже в пути.
  3. щелкните правой кнопкой мыши на файле и выберите "остановить отслеживание"
  4. файл будет показан с красной кнопкой, которая указывает, что он будет удален (из отслеживания)
  5. новая запись того же файла будет отображаться в "состояние файла" с синим вопросительным знаком указывает на новый файл (новый, потому что вы сказали удалить из отслеживания в 4)
  6. щелкните правой кнопкой мыши на файле из 5 и теперь вы видите " игнорировать..." умеющий выбирать. Нажмите на него, и Sourcetree поместит новую запись для файла .gitignore file
  7. вы можете видеть .файл gitignore если вы нажмете на кнопку " Настройка "в правом верхнем углу, выберите" дополнительно", а затем первая запись о файле ignore, нажмите на кнопку" Редактировать", и он будет открыт.

У меня была проблема с отслеживаемой папкой bin (вся папка).

Итак, вот быстрые шаги (более визуальные, поскольку я больше визуальный тип человека):

  1. только в целях безопасности, я сжал всю папку bin
  2. переместить его на рабочий стол
  3. движение (ток) .gitignore на рабочий стол, а также
  4. удалить всю папку BIN
  5. фиксация изменений (через любимый инструмент фиксации git)
  6. Commit, push, готово!
  7. вернитесь в папку основного проекта
  8. шаг назад .gitignore file
  9. необязательно-переместите назад (распакуйте) папку bin.
  10. в результате вы увидите, что инструмент git больше не отслеживает изменения из папки bin.

Я надеюсь, что это кому-то поможет.

если файлы уже добавлены в репозитории Git, вы должны сначала прекратить отслеживание их, прежде чем они будут проигнорированы .gitIgnore.

чтобы остановить отслеживание файлов в SourceTree:

Правой Кнопкой Мыши на файлах. Выберите "Остановить Отслеживание".
(это не будет удалять ваши файлы, он просто перестает отслеживать их)

чтобы остановить отслеживание файлов из командной строки:

git rm --cached example.txt

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

у меня был проект, где .gitignore здесь /projectname/.gitignore и поэтому не читается. Поэтому я переместил его в /.gitignore и все снова было хорошо.

Я нашел это, удалив репозиторий, а затем имея.файл gitignore в папке при повторном создании репозитория игнорируемый файл соблюдается.

это сработало для меня:

git update-index --assume-unchanged some.file