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

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

57

голосов

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

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

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

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

/бэкенд/Оценка/журналы/**

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

Любые идеи?

задан SteveSt 07 февр. ’14 в 2:41

источник

6 ответов

85

голосов

Скажем, у нас есть файл, который был непреднамеренно добавлен в наш репозиторий:

stackoverflow$ echo this file is important > junkfile
stackoverflow$ git add junkfile
stackoverflow$ git ci -m 'added a file'

В какой-то момент мы понимаем, что файл неважен, поэтому мы добавляем его в наш .gitignore файл:

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

ответ дан larsks 07 февр. ’14 в 16:57

источник

109

голосов

Поскольку в вопросе есть тег Sourcetree, я отвечу вам , как это сделать с Sourcetree, это действительно просто.

Как уже говорилось, сначала нужно удалить файл из отслеживания, а затем заставить Sourcetree игнорировать файл.

  • Измените что-нибудь в файле так, чтобы оно было показано вам, или выберите его на вкладке «статус файла» внизу открытого репозитория.
  • Щелкните правой кнопкой мыши по файлу, и вы увидите «Игнорировать…», но он неактивен, потому что, как сказано выше, он уже находится в треке.
  • Щелкните правой кнопкой мыши файл и выберите «Остановить отслеживание»
  • Файл будет отображаться красной кнопкой, которая указывает, что он будет удален (от отслеживания).
  • Новая запись того же файла будет отображаться в «статусе файла» с голубым вопросительным знаком, указывающим новый файл (новый, потому что вы сказали удалить из отслеживания в 4)
  • Щелкните правой кнопкой мыши на файле с 5 и теперь вы видите, что «Игнорировать…» может выбрать. Нажмите на него, и Sourcetree поместит новую запись для файла в файл .gitignore
  • Вы можете увидеть файл .gitignore, если вы нажмете «Настройка» в верхнем правом углу, выберите «расширенный», а затем первая запись о файле игнорирования, нажмите «изменить» и он будет открыт.
ответ дан michaK 11 апр. ’14 в 17:01

источник

10

голосов

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

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

Щелкните правой кнопкой мыши файлы. Выберите «Остановить отслеживание».

(это не удалит ваши файлы, а просто перестанет отслеживать их)

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

git rm --cached example.txt

ответ дан tfmontague 05 нояб. ’14 в 0:16

источник

9

голосов

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

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

  • Только для целей безопасности я застегнул всю папку bin
  • Переместить его на рабочий стол
  • Переместить (текущий) .gitignore на рабочий стол, а также
  • Удалить всю папку BIN
  • Заблокировать изменения (с помощью любимого инструмента git commit)
  • Commit, push, done!
  • Вернитесь в базовую папку проекта
  • Верните файл .gitignore
  • Дополнительно — отмените (распакуйте) папку с бункером.
  • В результате вы увидите, что инструмент git больше не отслеживает изменения из папки bin.

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

ответ дан Hrvoje 13 апр. ’14 в 12:36

источник

2

голосов

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

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

ответ дан Ibrahim Dauda 27 дек. ’15 в 12:37

источник

0

голосов

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

ответ дан SingleStepper 04 дек. ’16 в 21:56

источник


Другие вопросы по меткам git
atlassian-sourcetree
sourcetree

http://qaru.site/questions/96219/gitignore-file-in-sourcetree-not-working

Губарь Маргарита Александровна