Unversioned files idea что это
Создание локального репозитория git
У вас есть проект и вы хотите сохранить его на GitHub. Рассмотрим как сделать это из среды разработки IntelliJ IDEA.
В открывшемся окошке выбираем путь где хотим инициализировать репозиторий (можно оставить по умолчанию) и нажимаем кнопку Ok:
После того как будет создан локальный репозиторий, внизу появится меню Version Control. Если меню не появилось, выбираем View->Tool Windows->Version Control:
Шаг 2: добавим файлы под версионный контроль. В окошке Version Control нас интересует вкладка Local Changes. В списке Unversioned Files находятся файлы, которые не отслеживаются git. Intellij IDEA выделяет их коричневым:
Выберем файлы, изменения в которых мы хотим отслеживать, вызываем контекстное меню и нажимаем кнопку Add to VCS:
Обычно это только java файлы. Конфигурационные и class файлы не следует добавлять в репозиторий.
Если проект уже находится под версионным контролем, то при добавлении нового файла, Intellij IDEA предлагает добавить его сразу же под версионный контроль:
Шаг 3: Коммит файлов. Наконец вы хотите сохранить состояние своего проекта в репозиторий git. Для этого делаем так называемый коммит, который создает снимок состояния (snapshot) проекта в данный момент. Выбираем Default Changelist, вызываем контекстное меню и жмем Commit:
Состояние всех файлов, находящихся в Default Changelist сохраняется в снимке.
При изменении файла, который уже был закомичен, он опять попадает в Default Changelist, но теперь будет синего цвета.
Для того чтобы просмотреть все коммиты, перейдите во вкладку Log. Здесь можно увидеть всю информацию о сделанных коммитах: кто и когда сделал коммит, какие файлы были изменены.
Шаг 5: Операция push. После публикации репозитория на Github вы сделали изменения в своем локальном репозитории, и хотите эти изменения добавить на GitHub. Для этого используется операция push: VCS->Git->Push.
Шаг 6: Операция pull. Если изменения в вашем локальном репозитории устарели и вы хотите подтянуть изменения с GitHub, используйте операцию pull: VCS->Git->Pull.
Manage files under version control
Add files to VCS
Open the Commit tool window Alt+0
Put any files in the Unversioned Files changelist under version control by pressing Ctrl+Alt+A or selecting Add to VCS from the context menu. You can either add the entire changelist, or select separate files.
If you have enabled VCS integration for your project, IntelliJ IDEA suggests to add each newly created file under version control (you can change this behavior in the Settings/Preferences dialog Ctrl+Alt+S under Version Control | Confirmation ). If you want certain files to always remain unversioned, you can configure your VCS to ignore them.
You can also add files to your local repository from the Project tool window. Select the files you want to add, and press Ctrl+Alt+A or choose VCS | | Add from the context menu.
Check project files status
IntelliJ IDEA allows you to check the status of your local working copy compared to the repository version of the project. It lets you see which files have been modified, which new files have been added to the VCS, and which files are not being tracked by Git.
Open the Commit tool window Alt+0
The Changes changelist shows all files that have been modified since you last synchronized with the remote repository (highlighted in blue), and all new files that have been added to the VCS but have not been committed yet (highlighted in green).
The Unversioned Files changelist shows all files that have been added to your project, but that are not being tracked by Git.
Track changes to a file in the editor
You can also track changes to a file as you modify it in the editor. All changes are highlighted with change markers that appear in the gutter next to the modified lines, and show the type of changes introduced since you last synchronized with the repository. When you commit changes to the repository, change markers disappear.
The changes you introduce to the text are color-coded:
line added.
line changed.
line deleted.
You can manage changes using a toolbar that appears when you hover the mouse cursor over a change marker and then click it. The toolbar is displayed together with a frame showing the previous contents of the modified line:
Instead of reverting the whole file, you can copy any part of the contents of this popup and paste it into the editor.
Delete files from the repository
If you delete a file that is under version control, it still exists in the repository until you’ve committed the changes. The deleted file is placed to the active changelist, and is highlighted with grey.
In the dialog that opens, you can choose whether you want to delete this file without searching for usages, or to perform safe delete to make sure that you are deleting an unused file by checking the Safe delete option.
If any usages have been found, the Usages Detected dialog will popup listing them. You can view these usages and remove references to this file before deleting it.
В старых снимках (commits) видны добавленные позже файлы и подаются Гитом как «Unversioned Files»
Позже заметил, что, откатившись к старым снимкам, я вижу в них как неотслеживаемые те файлы, которые были добавлены намного позже.
Использую ИСР «PHPStorm».
Как навести порядок, чтобы в старых снимках не отображались добавленные позже игнорируемые файлы? Или это нормальное поведение?
1 ответ 1
«Unversioned Files» означает «неотслеживаемые» или «неверсионируемые» файлы. Они принципиально не могут быть в коммите. В эту категорию Git (команда git status ) относит файлы, которые:
Откуда могли появиться эти файлы
Возможно несколько вариантов:
Демонстрация
Инициализируем репозиторий в новой папке
В первый коммит сохраним файл а
Во второй коммит сохраним файл b
Создадим ещё один файл, но добавлять не будем
Посмотрим на лог (у вас будут другие хеши)
Посмотрим на состояние
Видно, что файл c попал в категорию Untracked files. Он ещё ни разу не добавлялся в коммит.
Теперь переключим репозиторий на предыдущий коммит, а рабочую область (файлы) оставим неизменной
Как Git определяет untracked файлы
Небольшой экскурс в анатомию для тех, кому интересно.
Каждый коммит хранит информацию о дереве файлов и папок, которые в этом коммите сохранены. Для каждого файла есть ссылка на архив с его содержимым. Посмотреть можно так:
Возьмем хеш из tree, убедимся что этот объект действительно дерево:
Видно, что там тот же файл — значит новых файлов в индекс не добавляли. У файла тот же хеш — новых версий этого файла тоже не добавляли.
Руководство пользователя IntelliJ IDEA: основы работы с системами контроля версий
Что бы получить ваш проект из системы контроля версий, нужно в приветственном окне IDEA выбрать Check out from Version Control или в меню, в верху, VCS и там выюрать Git, Git Hub.
После подключения VCS на проекте вы можете видеть и управлять изменениями. Cmd + 9 для Mac для получения окна Changes.
Если вам нужно сделать какую-то операцию с VCS, то можно вызвать всплывающее меню операций Ctrl + V для Mac. Например если вы хотите закомитить изменения.
Во вкладке Log, с права внизу вы можете двойным щелчком открыть измененный файл и увидеть конкретные изменения в ним. Зелененьким отмечено, то что добавилось.
Аннотации позволяют видеть кто и когда поменял каждую конкретную строку кода. Аннотации доступны из тех же трех вариантов меню: всплывающее (Ctrl + V для Mac), контекстное (правой кнопкой) и основное меню VCS на панели.
Вы можете настроить список игнорируемых файлов. Например используя кнопку Show ignored files в Changes
В Git помощью IDEA вы можете создавать, переключаться, объединять, сравнивать и удалять ветви кода. Чтобы увидеть список существующих ветвей или создать новую, используйте либо Branches из главного или контекстного меню, или всплывающее меню VCS operations, или элемент управления на правой стороне панели статуса. (Пункт взят с ссылка )
Patche позволяет вам сохранить набор изменений в виде файла, который можно передать по электронной почте и потом применить к коду. Это полезно если вы работаете удаленно, без постоянного подключения к системе контроля версий, но все равно должны передавать ваши изменения другим членам проекта. (информация с ссылка )
Это можно сделать кликнув правой кнопкой мыши по измененному файлу в разделе Changes и выбрать Create Patch.
Затем вы можете поставить галочки напротив конкретных файлов, которые хотите сохранить в файл.
IntelliJ Show Diff Includes Unversioned Files
After upgrading to IntelliJ IDEA 2021.2.2 Ultimate Edition, I’ve noticed now that when I go to the Commit pane and select Show Diff on a file in the Default Changelist, that it includes the Unversioned Files in the set of files for the diff comparison.
Is this a new feature? It seems like a bug to me. I can’t seem to find any documentation for it. I can’t find any way to turn it off.
I see there is a «Show unversioned files» check box in the Version Control > Commit section of Preferences, but clicking it doesn’t seem to change anything.
1 Answer 1
New commit tool: don’t jump to other changelist’s changes
I always review all changes on the current changelist before commit. I focus the diff preview and use F7 to jump through all changes on all files. Previously, when I reached the last file F7 stopped jumping to other files. But after enabling the new tool, when I press F7 on the last changed file on the current changelist, it jumps to the first change on the next changelist. That’s a problem since I can begin reviewing changes which are not intended for commiting right now, loosing time, confusing me and even risking to mix files from different changesets.
I had failed to find that issue on https://youtrack.jetbrains.com because I hadn’t yet tried having files in source control with changes in a non-default change list. I was only searching YouTrack for the fact that Show Diff now includes un-versioned files.
So, it seems that if you choose Show Diff from a file in a change list, then the diff comparison tool will now include all files in the set of files, regardless which change list they are in and regardless whether they are in source control yet.
I think that this is a bug and have voted for the issue. I encourage others to do so as well.