Як я можу ігнорувати каталоги чи папки в Git за допомогою msysgit у Windows?
.gitkeep
) для позначення каталогу, який слід зберігати
/
в кінці, що дає йому знати, що його каталог він повинен ігнорувати?
Як я можу ігнорувати каталоги чи папки в Git за допомогою msysgit у Windows?
.gitkeep
) для позначення каталогу, який слід зберігати
/
в кінці, що дає йому знати, що його каталог він повинен ігнорувати?
Відповіді:
Створіть файл, названий .gitignore
у довіднику вашого проекту. Ігноруйте каталоги, ввівши ім’я каталогу у файл (з додаванням косої риски):
dir_to_ignore/
Більше інформації тут .
За замовчуванням Windows Explorer відобразить .gitignore
фактично ім'я файлу .gitignore.txt
.
Git використовувати не буде .gitignore.txt
І ви не можете перейменувати файл .gitignore
, оскільки Windows Explorer вважає, що це файл типу gitignore без імені.
Рішення без командного рядка:
Ви можете перейменувати файл на ".gitignore." , і це створить ".gitignore"
".gitignore"
воно зберігає його, не додаючи розширення автоматично.
".gitignore."
- Це чудова хитрість! У мене також завжди були проблеми .htaccess
...
Здається, що для ігнорування файлів і каталогів існують два основні способи:
.gitignore
.gitignore
файлу в корені вашого сховища, крім .git
папки (в Windows, переконайтеся, що ви побачите справжнє розширення файлу, а потім зробіть .gitignore.
(з крапкою в кінці зробити порожнє розширення файлу))~/.gitignore_global
та запуску git config --global core.excludesfile ~/.gitignore_global
для додавання цього до вашої конфігурації GitПримітка. Файли, відслідковані раніше, можна відстежувати, запустивши git rm --cached filename
Виключення сховища - для локальних файлів, які не потрібно ділитися, просто додайте до нього шаблон або каталог .git/info/exclude
. Правила тез не виконуються, тому їх не бачать інші користувачі . Більше інформації тут .
Щоб зробити винятки зі списку ігнорованих файлів, див. Це питання .
git rm --cached <filename>
. Абсолютно критично ставиться до репостів, які існували до того, як ви створили.gitignore
У мене виникли проблеми зі створенням файлу в Провіднику Windows з .
на початку.
Вирішення проблеми полягало в тому, щоб зайти в командну оболонку та створити новий файл за допомогою "редагувати".
.
в кінці, щоб дослідник перестав думати .gitignore
- це розширення. Потім при вступі ця крапка без розширення просто з’їдається, і вам залишається .gitignore
TL; DR: спробуйте назвати її .gitignore.
=> ви закінчите з.gitignore
Щоб доручити Git ігнорувати певні файли чи папки, вам потрібно створити .gitignore
файл.
Але в Windows Explorer потрібно вказати ім’я файлу. Ви просто не можете створити файл лише з розширенням. Хитрість полягає в тому, щоб створити порожній текстовий файл і перейти до командного рядка та змінити ім'я файлу на .gitignore
:
ren "New Text Document.txt" .gitignore
Тепер відкрийте файл улюбленим текстовим редактором та додайте імена файлів / папок, які ви хочете проігнорувати. Ви також можете використовувати такі символи:*.txt
.
type nul > .gitignore
створити порожній файл
.gitignore.
коли розширення файлу не заховані у вашому провіднику Windows
Якщо ви хочете підтримувати папку, а не файли всередині неї, просто покладіть у папку ".gitignore" файл із вмістом "*" як вміст. Цей файл змусить Git ігнорувати весь вміст із сховища. Але .gitignore
буде включено у ваше сховище.
$ git add path/to/folder/.gitignore
Якщо ви додасте порожню папку, ви отримаєте це повідомлення (.gitignore - прихований файл)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Отже, використовуйте "-f", щоб змусити додавати:
$ git add path/to/folder/.gitignore -f
У Windows є додатковий улов з косою рисою. Виключення одного каталогу в .gitignore за допомогою
dir_to_exclude /
можливо, працюватиме, але виключаючи всі каталоги з
/
викликає проблеми, коли my file.txt
у вашому каталозі є назви файлів з пробілами (наприклад ): Git Bash уникає цих пробілів за допомогою зворотної косої риси (як my\ file.txt
), а Git для Windows не розрізняє /
та \
.
Щоб виключити всі каталоги, краще скористайтеся:
** /
Два поспіль зірочки означають вміст каталогу.
Також у \.git\info
каталозі ваших проектів є файл виключення, який фактично те саме, що і .gitignore
(я думаю). Ви можете додати файли та каталоги, щоб проігнорувати це.
На випадок, якщо вам потрібно виключити підпапки, ви можете використовувати **
підстановку, щоб виключити будь-який рівень підкаталогу.
**/build/output/Debug/
Для ігнорування цілого каталогу в Git найпростішим способом є включення .gitignore-файлу в цільовий каталог, який просто містить "*".
Показовий приклад,
Приклад системи
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Мета
.Gitignore верхнього рівня (/root/.gitignore)
Ігнорований каталог .gitignore (/root/dirB.gitignore)
І це так просто :)
Коли все інше не вдається, спробуйте відредагувати файл
/.git/info/exclude
і додавання потрібних каталогів до кінця файлу, як це:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
Я додав папки "Активи" та "Скомпільовані" до списку файлів та каталогів, які потрібно ігнорувати.
У Unix:
touch .gitignore
У Windows:
echo > .gitignore
Ці команди, виконані в терміналі, створять .gitignore
файл у поточному місці.
Потім просто додайте до цього .gitignore
файлу інформацію (наприклад, використовуючи Notepad ++), які файли чи папки слід ігнорувати. Збережіть свої зміни. Це воно :)
Більше інформації: .gitignore
Ви можете створити файл ".gitignore" із вмістом:
*
!.gitignore
Це працює для мене.
У мене виникли деякі проблеми з тим, щоб Git забрав .gitignore
файл у Windows. $GIT_DIR/info/exclude
Файл завжди , здається, працює , хоча.
Мінусом цього підходу є те, що файли в $GIT_DIR
каталозі не включаються до реєстрації, і тому не надаються спільним доступом.
ps,
$GIT_DIR
як правило, називається прихована папка.git
Я припускаю, що проблема полягає в тому, що ваше робоче дерево виглядає так:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... з .gitignore
описаним вами. Це дасть git status
вихід:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... якщо ці index.html
файли ще не були додані в сховище. (Git бачить, що в каталогах кешу є невідомі файли, але він повідомляє лише про каталоги.) Щоб виправити це, переконайтеся, що ви додали та ввели index.html
файли:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... і ваша git status
воля тоді буде виглядати так:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(Очевидно, ви теж хочете взяти на себе зобов’язання .gitignore
. Я просто лінувався з цим тестовим випадком.)
У Windows та Mac, якщо ви хочете ігнорувати папку з назвою Flower_Data_Folder у поточному каталозі, ви можете зробити:
echo Flower_Data_Folder >> .gitignore
Якщо це файл з іменем data.txt
:
echo data.txt >> .gitignore
Якщо це шлях на зразок "Дані / passwords.txt"
echo "Data/passwords.txt" >> .gitignore.
У мене були подібні проблеми. Я працюю над ланцюжком інструментів Windows із спільним сховищем із хлопцями Linux, і вони із задоволенням створюють файли з однаковими (крім випадків) іменами у заданій папці.
Ефект полягає в тому, що я можу клонувати сховище і негайно мати десятки "модифікованих" файлів, які, якщо я зареєструвався, створили б хаос.
У мене Windows налаштована на регістр, і Git не ігнорує регістр, але він все ще не працює (мабуть, в Win32 API виклики).
Якщо я gitignore файли, я повинен пам'ятати, щоб не відслідковувати .gitignore файл.
Але я знайшов хорошу відповідь тут:
http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
Просто створіть .gitignore
файл у папці проекту. Потім додайте ім'я папки до нього, наприклад:
frontend/node_modules