Как игнорировать все файлы в папке с репозиторием Git в Sourcetree?


86

У меня есть репозиторий Bitbucket Git, управляемый с помощью Sourcetree.

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

Как я могу это сделать?

Ответы:


54

Добавьте это в .gitignore:

*
!.gitignore

13
Его следует добавить в каждую папку, которую вы хотите отслеживать. Само существование этого файла заставит git отслеживать папку (отслеживая этот файл). Эти *средства игнорировать все файлы, а !.gitignoreзначит не игнорировать сам файл
Billy Moon

2
Как объяснил Билли Мун, спасибо. Таким образом, вы можете создавать файлы .gitignore в каталогах. Этот файл сообщает Git, что игнорировать, а что нет.
Герго Эрдози,

21
Как это сделать в SourceTree?
1,21 гигаватт,

1
Для этого вам не нужен SourceTree, .gitginoreэто обычный файл, просто создайте его в каталоге, содержимое которого вы хотите игнорировать.
Герго Эрдоси

1
Как указано ниже в @ AD7six, не добавляйте! .Gitignore в файл, поскольку в этом нет необходимости.
Xcalibur

155

Для пользователей Sourcetree: если вы хотите игнорировать определенную папку, просто выберите файл из этой папки, щелкните его правой кнопкой мыши и выберите «Игнорировать ...». У вас появится всплывающее меню, в котором вы можете игнорировать «Игнорировать все ниже: <ВАША НЕЖЕЛАТЕЛЬНАЯ ПАПКА>»

Первое меню

Второе меню

Если у вас опция «Игнорировать» неактивна, вы должны выбрать опцию «Прекратить отслеживание». После этого файл будет добавлен в поэтапные файлы со знаком минус на красном значке фона, а значок файла в списке неустановленных файлов изменится на знак вопроса на фиолетовом фоне. Теперь в списке неустановленных файлов снова включена опция «Игнорировать». Просто сделайте так, как описано выше.


14
Если папка уже зафиксирована, сначала удалите ее, зафиксируйте изменения, а затем выполните указанные выше действия.
RMorrisey

16
У меня опция "Игнорировать" неактивна. Кто-нибудь знает почему?
Андрей Качевский 03

6
Игнорировать также неактивно.
Мика Золту,

игнорировать добавить в git ignore? если нет, то почему?
Джо Ллойд,

1
@JoeLloyd да, он добавляет в git ignore. Вы даже можете зафиксировать созданный / отредактированный файл git ignore, как и любой другой файл.
Kalzem

25

Щелкните правой кнопкой мыши файл → ИгнорироватьИгнорировать все, что ниже .

Если параметр Игнорировать неактивен, то:

  1. Сначала подготовьте файл
  2. Щелкните правой кнопкой мыши → Остановить отслеживание
  3. Этот файл появится на панели ниже со знаком вопроса → щелкните по нему правой кнопкой мыши → Игнорировать

Введите описание изображения здесь


7

Насколько мне известно, Git не отслеживает папки, а только файлы, поэтому пустые папки (или папки, в которых игнорируются все файлы) не могут быть зафиксированы. Если вам, например, требуется, чтобы папка присутствовала на каком-то этапе процесса сборки, возможно, вы можете использовать инструмент сборки для ее создания? Или вы можете поместить в папку один пустой, не проигнорированный файл и зафиксировать его.


1
Вы имеете в виду, что если я хочу отслеживать папку, я должен добавить "фиктивный" файл и игнорировать все остальное? : - /
rubdottocom

2
@rubdottocom: я так считаю; папки существуют в git только из-за файлов, которые в них находятся. Зачем вам нужно контролировать версию пустой папки?
Осмунд Эльдхусет,

2
Есть много причин для отслеживания пустых папок. Вы можете захотеть, чтобы в кассе была папка, готовая для использования людьми, без необходимости создавать их индивидуально. Ваш код может зависеть от существования определенной папки, например, папки, которая ожидает загрузки, и если папка не существует, ей не удается загрузить туда файлы и т. Д.
Билли Мун

По причине, объясненной @AasmundEldhuset, ответ Герго имеет правильное решение.
Билли Мун

@BillyMoon: Я согласен, что могут быть причины; Мне было интересно, в чем заключаются его конкретные потребности, чтобы мы могли предложить наиболее подходящее решение. :-) Уловка Герго была изящной, хотя она сводилась к добавлению (более или менее) фиктивного файла в папку, как я предлагал. Его решение было более мерзким, поэтому +1 к нему.
Осмунд Эльдхусет,

5

После того, как я бился по этому поводу в течение как минимум часа, я предлагаю этот ответ, чтобы попытаться расширить комментарии, сделанные другими. Чтобы игнорировать папку / каталог, сделайте следующее: если у вас нет файла .gitignore в корне вашего проекта (это имя точно «.gitignore»), создайте фиктивный текстовый файл в папке, которую вы хотите исключить. Внутри дерева источников щелкните его правой кнопкой мыши и выберите «Игнорировать». Вы получите всплывающее окно, похожее на это.

введите описание изображения здесь

Выберите «Все внизу» и выберите папку, которую вы хотите игнорировать, из раскрывающегося списка. Это создаст файл .gitignore в вашем корневом каталоге и поместит в него спецификацию папки.

Если у вас уже есть папка .gitignore в вашей корневой папке, вы можете использовать тот же подход, что и выше, или вы можете просто отредактировать файл .gitignore и добавить папку, которую вы хотите исключить. Это просто текстовый файл. Обратите внимание, что он использует косую черту в именах путей, а не обратную косую черту, как мы, пользователи Windows, привыкли. Я попытался создать текстовый файл .gitignore вручную в проводнике Windows, но это не позволило мне создать файл без имени (то есть только с расширением).

Обратите внимание, что добавление .gitignore и спецификации файла не повлияет на файлы, которые уже отслеживаются. Если вы уже отслеживаете их, вам придется прекратить их отслеживать. (Щелкните правой кнопкой мыши папку или файл и выберите «Остановить отслеживание».) Вы увидите, что они меняются с зеленого / чистого или желтого / измененного значка на красный / удаленный значок. При следующей фиксации файлы будут удалены из репозитория и после этого будут отображаться с синим / игнорируемым значком. Другой участник спросил, почему игнорирование было отключено для определенных файлов, и я считаю, что это произошло потому, что он пытался игнорировать файл, который уже отслеживался. Вы можете игнорировать только файл с синим значком вопросительного знака.


Чтобы создать файл .gitignore в Widnows, используйте команду Git bash 'touch .gitignore'
Майк,

4

Как упоминалось другими: git не отслеживает папки, а только файлы.

Вы можете убедиться, что папка существует с помощью этих команд (или аналогичной логики):

echo "*" > keepthisfolder/.gitignore
git add --force keepthisfolder/.gitignore
git commit -m "adding git ignore file to keepthisfolder"

Наличие файла будет означать, что у любого, кто проверяет репозиторий, будет папка.

Содержимое файла gitignore будет означать, что все в нем игнорируется

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

ИЛИ

если вы предпочитаете хранить все определения игнорирования в одном месте, вы можете создать .gitignore в корне вашего проекта с таким содержимым:

*.tmp # example, ignore all .tmp files in any folder
path/to/keepthisfolder
path/to/keepthatfolder

и убедиться, что папки существуют

touch path/to/keepthisfolder/anything
git add --force path/to/keepthisfolder/anything
git commit -m "ensure keepthisfolder exists when checked out"

"что угодно" буквально может быть чем угодно. Часто используемые имена: .gitignore, .gitkeep, пусто.


3

Если ваш параметр « Игнорировать» неактивен, вам необходимо прекратить отслеживание файла, прежде чем вы сможете его игнорировать. Вы можете просто щелкнуть файл правой кнопкой мыши и нажать «Остановить отслеживание».

Рядом с ним должен появиться синий значок. Щелкните правой кнопкой мыши еще раз и выберите игнорировать.


2

Игнорировать всю папку в исходном дереве.

   Just Open Repository >Repository setting > Edit git ignore File and 
   you can rite some thing like this :

 *.pdb 
*.bak 
*.dll
*.lib 
.gitignore
packages/ 
*/bin/
*/obj/ 

Для папки bin и папки obj просто напишите: * / bin / * / obj /



-2

В Sourcetree: просто игнорируйте файл в указанной папке. Sourcetree спросит, хотите ли вы игнорировать все файлы в этой папке. Это идеально!


14
-1 Бессмысленный ответ. Поскольку вы не объясняете, как сделать игнорирование (в исходном дереве)!
Engineer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.