Игнорирование файлов в Git
Два способа игнорирования файлов — локальный и глобальный. Шаблоны для игнорирования файлов в для различных операционных систем, языков программирования, CMS и т. д. Игнорирование уже отслеживаемого файла в Git. Отслеживание пустых директорий.
Шаблоны правил для .gitignore
Два ресурса на GitHub, в которых собраны шаблоны файла для разных случаев — разных операционных систем, разных языков программирования и т. д.
Общий список правил
По ссылке ниже представлен набор общих правил и рекомендаций при создании файла . Помимо этого, в данном разделе показан шаблон для самого общего случая использования :
Детализированный список правил
По ссылке ниже представлен более детальный и полезный список правил, по которым создается файл . В этом списке можно найти рекомендации для разных операционных систем (Linux, Mac OS X, Windows, Android), разных языков программирования (Java, Perl и т. д.), различных CMS (к примеру — Joomla, Magento, Jekyll). Даже для README есть свой набор правил!
Помимо списка языков программирования, в котором для каждого пункта этого списка представлены рекомендованные правила для файла , имеется еще дополнительная директория “Global”.
Как раз в этой директории располагается список рекомендаций применительно к операционным системам. Достаточно найти нужную систему, перейти по ссылке и воспользоваться набором правил.
Глобальное игнорирование
В Git возможно игнорирование файлов двумя способами:
- локально
- глобально
В последнем случае (глобально) имеется ввиду, что Git будет игнорировать указанные файлы всегда, в любом из проектов.
Ярким примером такого глобального игнорирования являются служебные файлы операционной системы — они должны игнорироваться всегда и в любом проекте Git.
Файл конфигурации с глобальным игнорированием может быть назван как угодно (в отличие от файла ). Главное — он должен располагаться в домашней директории пользователя, а не в директории с проектом. И это его главное отличие от файла .
После того, как файл глобального игнорирования создан, необходимо добавить его в конфигурационный файл Git. То есть, “сказать” Git, что “у тебя есть список файлов, которые ты должен игнорировать; этот список называется так и расположен он здесь”.
Выполняется это командой:
Если теперь взглянуть на конфигурационный файл Git, то увидим следующее:
Игнорирование отслеживаемого файла
Может возникнуть ситуация, когда файл был создан и помещен в репозиторий Git. То есть, теперь он является отслеживаемым.
Но это была ошибка — этот файл не нужно было отслеживать! Как сказать Git, чтобы он не отслеживал этот файл?
Для этого нужно выполнить два шага.
Первый — это внести имя нужного файла в список игнорируемых файлов — отредактировать файл .
Однако, этот шаг еще ничего не даст — Git все также будет его отслеживать, так как он уже внесен в буфера обмена.
Для этого нужно “вынуть” данный файл из буфера обмена. Это выполняется командой:
Данная команда удалит указанный файл из буфера обмена, однако оставит в рабочей директории и в репозитории. Последующий коммит произведет удаление этого файла и из репозитория.
Осталось только выполнить коммит обоих изменений — добавление файла в игнорируемые и удаление его из репозитория.
Все последующие изменения в этом файле отслеживаться не будут.
Отслеживание пустых директорий
У Git имеется одна очень не очевидная особенность, которая сбивает с толку прозелитов и в один прекрасный момент может их подвести, если они не знают о данном факте.
Заключается он в том, что Git — это система контроля версий для файлов! Другими словами — Git умеет отслеживать только файлы!
Поэтому, если в проекте имеется пустая директория, то Git ее просто “выкинет”. По той простой причине, что точки зрения Git директория — всего лишь путь к файлу, способ найти отслеживаемый файл. А раз файла нет, то путь ведет вникуда, так как отслеживать нечего.
Кстати сказать, я сам когда-то был таким новичком и столкнулся с этим непонятным для меня фактом. Интуитивно догадался, в чем дело и поступал таким “корявым” (как я считал) способом.
К примеру, для директории psd я создавал файл-заглушку размером 1px*1px. Главное — чтобы в директории psd что-то лежало — тогда Git не удалит ее! )
Как оказалось, я был прав! И это единственный правильный способ заставить Git отслеживать пустые директории.
Одна только маленькая поправка — в мире Unix такой файл-заглушку можно создать с помощью команды и выглядеть такой файл будет так (общепринятое соглашение):
Что же — этот способ более аккуратный и грамотный!
Красивая функция trackBy
Пример красивой функции trackBy для Angular. Функция понравилась своей лаконичностью:<% highlight typescript %>public trackByNumber = (_. … Continue reading
How to Stop Tracking and Start Ignoring in Git
In Git, the ignored files are tracked in a file, called .gitignore. You have an opportunity to add file paths and directory paths that you don’t wish to be tracked by Git in this file. Almost all programmers, working with Git, are eager to learn how to stop tracking files, which were already inserted into a git repository. This snippet is aimed at explaining the process of stopping to track and ignoring changes to a file in Git. The .gitignore will prevent untracked files from being added to the set of files tracked by Git, however, Git will continue to track the files that are already being tracked even when they are added to .gitignore .
Ignoring changes to a file
If you have a tracked file and want to ignore it, you need to add the path of that file or directory into the .gitignore file. Afterwards, you need to tell Git not to track it. For that purpose, you should run the command below:
If you want to do that for the folders instead of files, you should add the -r option to the command above like so:
Suppose, you have a folder containing a lot of files. The following command instructs Git to stop checking that folder every time for changes, as it won’t have any. The —assume-unchanged index will be reset, and files will be overwritten if there are upstream changes to the file or folder when you pull. As the idea is ignoring the local changes, you can delete all of them by running the git reset —hard command.
For getting a list of directories or files that are —assume-unchanged , you should run the command below:
The following command will instruct Git that you need your own independent version of the file or folder. After that, any changes made to that file(s) will not be flagged as a change in Git.
What is Git Repository
Git repository serves as special storage for the files of your project. With git repository , it is possible to save the versions of your code, as well as, to have access to them. If you want to create a new git repository , you need to run the git init command. It is used once to initialize a new repository. Another one-time operation is the git clone command, with the help of which you can create a clone of an existing repository.
What is the git rm Command
The git rm command can remove particular files or a group of files from a git repository . You can also use it to remove files from the working directory and the staging index. But it is not possible to remove a file only from the working directory. The git rm command doesn’t remove branches either.
What is a .gitignore File
Generally, Git classifies the files of the working copy as 3 things:
- A tracked file — the one that has been committed or staged before;
- An untracked file- the one that has not been committed or staged before;
- An ignored file- the one that has been commanded to be ignored.
In your working copy, the files are visible for git as untracked, tracked or ignored. Ignored files are those you told Git to ignore. In case you want to commit this kind of files, you should derive them from the repository source. The ignored files are stored in the file called .gitignore. There is no git ignore command, hence you should edit and commit these files by hand.
Как перестать отслеживать файл в локальном Git?
Подскажите новичку в Git:
есть локальный репозиторий (для изучения гит). Есть некие файлы, и один из файлов ‘two.txt’ (уже проиндексированный), нужно оставить на диске, но исключить из области отслеживания.
В книге «GIT для профессионального программиста» прописана команда, которой я и воспользовался:
git rm —cached two.txt
Статус показал следующую картину:
Вопрос: как избавиться от отображения информации, что файл не отслеживается?
Я закоммитил это изменение:
Однако строка с информацией о наличии неотслеживаемого файла все равно присутствует:
В чем моя ошибка или непонимание?
В книге этот момент вообще не освещён.
На Тостере есть три сообщения по этому вопросу, но они лишь повторяют те команды, которые я вводил и безрезультатно.
Спасибо.
Git Stop Tracking File
![]()
In this tutorial, we will learn how to stop the tracking of files and folders in a repository in Git.
In a development repository, we often encounter a situation where we no longer want some files to be tracked for changes in Git.
Say we have a file that we feel is redundant now and no longer relevant to the project. In such cases, we want to remove the file from tracking in the repository in Git.
We will now illustrate this with an example.
Using git rm to Stop Tracking Files in Git
Suppose we have a file named file1 in the repository in Git, which we no longer wish to track.
We can remove the file from tracking in Git by using the git rm command with the —cached option.
We can also remove a folder from tracking in the Git repository using the following command.
This will remove the file or folder, as specified, from tracking (i.e.) remove it from the index; but will not delete the file from the filesystem.
Also, note that we need to commit the file removal to update this change in the remote repository.
Using git update-index to Stop Tracking Files in Git
Sometimes, we may wish to keep a file in the repository but no longer want to track its changes. We can use the git update-index command with the —skip-worktree option to achieve this.
The —skip-worktree option to command git update-index causes Git to pretend that the file’s version is up to date and instead read from the index version. This is especially useful for config files.
We may have some config files in the repository with default or production values, and we may make some changes to it as per our needs but don’t want to commit these changes. The —skip-worktree option to command git update-index is very handy for such purposes.
Thus, we have elaborated on stopping tracking files and folders in a Git repository.