Как добавить файл в gitignore phpstorm

Обновлено: 04.07.2024

Я использую среду разработки PHPStorm. В процессе разработки я добавляю изображения для тестирования. Я хочу включать их в свои коммиты, чтобы другие члены команды могли видеть и извлекать их из репозитория. Как я могу это сделать? Могу ли я настроить PHPStorm для этого?

Исходный вопрос:

phpstorm vcs (GIT) не загружает изображения Прежде всего, извините за мой английский. Я постараюсь сделать все возможное. : D

Я хочу знать, как я могу настроить PHPStorm для загрузки изображений при каждой фиксации (git) . Как это делает Sourcetree.

Например, если у меня есть модуль галереи в моем приложении и я загружаю какое-то изображение для тестирования, когда я делаю коммит для своей команды, они не могут видеть изображение, потому что phpstorm не загружает его. Atlassian Sourcetree делает это, но я хочу использовать встроенный VCS от PHPStorm ..

2 ответа

Версия 9 поддерживает .. Проблема решена!

Почему мне кажется, что настройка не требуется.

PHPStorm и любая другая IDE - это просто инструмент для управления вашим репозиторием git. Вы можете работать с одним и тем же репозиторием из IDE, любого графического интерфейса пользователя и командной строки одновременно. Кажется, ваш вопрос касается Git, а не конфигурации IDE.

Что можно и что нельзя добавить в коммит.

Во-вторых, Git может работать только с файлами, которые находятся в каталоге, в котором вы инициировали репозиторий Git. Обычно это корневой каталог вашего проекта. Если вы добавляете свои изображения в каталог где-нибудь в вашем проекте - вы можете добавить их в коммит. Если они есть где-то еще, вам придется их скачать и поместить где-нибудь в проект. Я не мог понять этого ясно из вашего вопроса.

Просто скажите мне, как добавить мои файлы!

Теперь, когда файлы находятся где-то в папке вашего проекта, вы можете добавить их:

  1. Из PHPStorm. Выберите файл, меню [VCS] >> [Git] >> [Добавить]
  2. С консоли. Нажмите Alt + F12, чтобы открыть консоль. потом

git status , чтобы увидеть списки файлов (1), измененных и подготовленных для фиксации (2) измененных, но не поставленных, (3) еще не отслеживаемых. Любой список может быть пустым.

git add full/path/to/file.jpg , чтобы добавить файлы для следующего коммита

git commit -m'commit message' или ваш обычный способ фиксации файлов из меню IDE

When you clone an existing Git repository, or put an existing project under Git version control, PhpStorm automatically detects if Git is installed on your computer. If the IDE can't locate a Git executable, it suggests downloading it.

PhpStorm supports Git from the Windows Subsystem for Linux 2 (WSL2), which is available in Windows 10 version 2004.

If Git is not installed on Windows, PhpStorm searches for Git in WSL and uses it from there. Also, PhpStorm automatically switches to Git from WSL for projects that are opened when you use the \\wsl$ path.

If for some reason you need to manually configure PhpStorm to use Git from WSL, go to the Version Control | Git page of the IDE settings Ctrl+Alt+S , click the Browse icon in the Path to Git executable field and select Git from WSL via the \wsl$ path, for example, \\wsl$\debian\usr\bin\git .

Check out a project from a remote host (clone)

PhpStorm allows you to check out (in Git terms clone ) an existing repository and create a new project based on the data you've downloaded.

From the main menu, select Git | Clone , or, if no project is currently opened, click Get from VCS on the Welcome screen.

In the Get from Version Control dialog, specify the URL of the remote repository you want to clone, or select one of the VCS hosting services on the left.

If you are already logged in to the selected hosting service, completion will suggest the list of available repositories that you can clone.

Click Clone . If you want to create a project based on the sources you have cloned, click Yes in the confirmation dialog. Git root mapping will be automatically set to the project root directory.

If your project contains submodules, they will also be cloned and automatically registered as project roots.

Put an existing project under Git version control

You can create a local Git repository based on an existing project sources.

Associate the entire project with a single Git repository

Open the project that you want to put under Git.

Choose Enable Version Control Integration from the VCS Operations Popup Alt+` or from the main VCS menu.

Choose Git as the version control system and click OK .

After VCS integration is enabled, PhpStorm will ask you whether you want to share project settings files via VCS. You can choose Always Add to synchronize project settings with other repository users who work with PhpStorm.

Notification prompting to select how to treat configuration files

Associate different directories within the project with different Git repositories

Open the project that you want to put under Git.

From the main menu, choose VCS | Create Git Repository .

In the dialog that opens, specify the directory where a new Git repository will be created.

Git does not support external paths, so if you choose a directory that is outside your project root, make sure that the folder where the repository is going to be created also contains the project root.

If you are creating multiple Git repositories inside the project structure, repeat the previous steps for each directory.

After you have initialized a Git repository for your project, you need to add project files to the repository.

Add files to the local repository

In the Commit tool window Alt+0 , expand the Unversioned Files node.

Select the files you want to add to Git or the entire changelist and press Ctrl+Alt+A or choose Add to VCS from the context menu.

You can also add files to your local Git repository from the Project tool window: select the files you want to add, and press Ctrl+Alt+A or choose Git | Add from the context menu.

When Git integration is enabled in your project, PhpStorm suggests adding each newly created file under Git, even if it was added from outside PhpStorm. You can change this behavior in the Version Control | Confirmation page of the IDE settings Ctrl+Alt+S . If you want certain files to always remain unversioned, you can ignore them.

If you attempt to add a file that's on the .gitignore list, PhpStorm will suggest force adding it. Clicking Cancel in the confirmation dialog only cancels force adding ignored files - all other files will be added to the Git repository.

Exclude files from version control (ignore)

Sometimes you may need to leave certain files unversioned. These can be VCS administration files, artifacts of utilities, backup copies, and so on. You can ignore files through PhpStorm, and the IDE will not suggest adding them to Git and will highlight them as ignored.

You can only ignore unversioned files, that is files that you see in the Unversioned Files changelist. If a file is added to Git but not committed, you can right-click it in the Local Changes view and choose Rollback .

Git lets you list ignored file patterns in two kinds of configuration files:

Patterns listed in this file only apply to the local copy of the repository.

This file is created automatically when you initialize or check out a Git repository.

One or more .gitignore files in the VCS root directory and its subdirectories.

These files are checked into the repository so that the ignore patterns in them are available to the entire team. Therefore, it is a most common place to store the ignored file patterns.

If there is no .gitignore file in the VCS root directory, you can right-click anywhere in the Project window, choose New | File and type .gitignore in the New File dialog.

To create a .gitignore file in Windows Explorer, create a file named .gitignore. and Windows will rename it automatically to .gitignore .

Add files to .gitignore or .git/info/exclude

Decide what kind of Git configuration file you are going to use to ignore files. If in doubt, use .gitignore .

Locate the unversioned file or folder you want to ignore in the Local Changes view or in Project tool window. File colors in these views help you identify the status of the file.

Right click the selection and choose Git | Add to .gitignore or Git | Add to .git/info/exclude .

File colors in these views help you identify the status of the file.

If you need to exclude files by a certain pattern, or files of a certain type, you can edit the .gitignore or .git/info/exclude file directly. See .gitignore patterns format

If you want ignored files to be also displayed in the Local Changes view, click on the toolbar and select Show Ignored Files .

Check project status

PhpStorm allows you to check the status of your local working copy compared to the repository version of the project. It uses specific colors to let 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 Local Changes view.

The Default 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 customize the default colors for line statuses on the Editor | Color Scheme | VCS page of the IDE settings Ctrl+Alt+S .

To disable VCS markers in the gutter, deselect the Highlight modified lines in the gutter option on the Editor | General page of the IDE settings Ctrl+Alt+S .

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:

the modified line marker

You can roll back changes by clicking and explore the differences between the current and the repository version of the current line by clicking .

Instead of reverting the whole file, you can copy any part of the contents of this popup and paste it into the editor.

Add a remote repository

If you created a Git repository based on local sources, you need to add a remote repository to be able to collaborate on your Git project, as well as to eliminate the risks of storing all of your codebase locally. You push changes to a remote repository when you need to share your work and pull data from it to integrate changes made by other contributors into your local repository version.

If you have cloned a remote Git repository, for example from GitHub, the remote is configured automatically and you do not have to specify it when you want to sync with it. The default name Git gives to the remote you've cloned from is origin .

For information on how to share project settings for different project formats, see Share project settings through VCS.

Define a remote

Create an empty repository on any Git hosting, such as Bitbucket or GitHub. You can create a repository on GitHub without leaving PhpStorm: see Share a project on GitHub.

Invoke the Push dialog when you are ready to push your commits by selecting Git | Push from the main menu, or press Ctrl+Shift+K .

If you haven't added any remotes so far, the Define remote link will appear instead of a remote name. Click it to add a remote.

In the dialog that opens, specify the remote name and the URL where it will be hosted, and click OK .

Add a second remote

In some cases, you also need to add a second remote repository. This may be useful, for example, if you have cloned a repository that you do not have write access to, and you are going to push changes to your own fork of the original project. Another common scenario is that you have cloned your own repository that is somebody else's project fork, and you need to synchronize with the original project and fetch changes from it.

From the main menu, choose Git | Manage Remotes . The Git Remotes dialog will open.

Click the Add button on the toolbar or press Alt+Insert .

In the dialog that opens, specify the remote name and URL and click OK .

To edit a remote (for example, to change the name of the original project that you have cloned), right-click the remote branch in the Branches pane of the Git Log tool window, and select Edit Remote from the context menu.

You can also edit a remote from the Push Dialog by clicking its name.

To remove a repository that is no longer valid, right-click it in the Branches pane of the Git Log tool window, and select Remove Remote from the context menu.

Всем привет! Замотался с игнорированием файлов. Уже не вспомню, сколько выходных я убил на разбор. В общем. такая система:
Возникла необходимость создать тестовый подсайт и работать на нем. Я создал голый репозиторий на BitBucket и склонировал его в проект PHPStorm. В папку с проектом залил архив действующего сайта. Прежде чем делать первый коммит со всеми файлами я берусь настраивать .gitignore. После настройки я прописываю команду:
git add .
И, о чудо! GIT игнорирует добавление игнорируемых файлов. На радостях делаю первый коммит. Теперь вроде осталась самая малость - удалить счетчики и коды онлайн-чата, чтобы не напрягать яндекс и call-центр, а также подключить к серверу по SFTP и изменить конфиги. Однако, при редактировании файлов, которые я предварительно записал в игнор (и они даже не залиты в репозиторий), они помечаются как измененные и улетают при коммите в репозиторий.
И я заметил, что так со всеми файлами. Элементарно: в .gitignore имеется строчка:
.htaccess
И он не был залит при первом коммите. Однако, если я берусь его изменять, он помечается как измененный и улетает в репозиторий.
В чем беда? Неужели не имеется метода, чтобы в папке сайта были файлы, о которых не приходилось бы никогда париться, что они улетят в репозиторий? У меня проект подключен по SFTP к серверу, мне было бы удобно посылать через него даже картинки, но единственный выход, чтобы все это не попадало в репозиторий - это хранить в проекте исключительно те файлы, которые есть в репозитории и которые не влияют на работу основного сайта.

  • Вопрос задан более трёх лет назад
  • 9682 просмотра

DevMan

Если файл уже под контролем (был ранее добавлен в репозиторий), то .gitignore на нем работать не будет. Что, собственно, и логично.
Есть два варианта:
- удалить файл -> закомитить -> добавить в .gitignore -> вернуть файл
- удалить из индекса ( git update-index --assume-unchanged your-file ) -> добавить в .gitignore

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

Запись «Игнорировать . » отключена:

enter image description here

1-й вопрос: почему он отключен?

2-й: Как потом добавить файлы в git ignore?

Редактировать

PhpStorm говорит: «Этот параметр доступен только в том случае, если выбран файл в узле« Неверсионные файлы ». Используйте этот параметр, чтобы игнорировать выбранный файл, если вы хотите оставить его неверсированным».

Но иногда у вас могут быть файлы для первоначальной фиксации, а затем добавьте их в git ignore, чтобы разрешить локальные изменения (для локальной разработки), при этом больше не фиксируя / отправляя этот файл в какое-либо хранилище.

Редактировать 2

enter image description here

3 ответа

После прочтения ваших комментариев я думаю, что вам действительно нужна функция блокировки файлов, которая существует (насколько мне известно) only на gitlab. Но . это требует центрального сервера, так что это на самом деле против основной идеи git.

В большинстве случаев, как сказал Стони, вы должны создать файл шаблона, например config.template.php или config.dev.php , добавить config.php в .gitignore и заставить каждого разработчика переименовывать / воссоздавать config.php.

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

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

По первому вопросу, как вы нашли по ссылке.

Что касается второго вопроса, если вы хотите игнорировать файл, который уже имеет версию, контролируемую git, вы должны использовать команду git для этого:

  1. В локальном репо добавьте имя файла в файл .gitignore . Если у вас нет .gitignore , вы можете использовать touch .gitignore .
  2. git rm --cached filename .

Нет смысла игнорировать файлы, которые уже находятся в вашем контроле версий. Поэтому вы должны сначала удалить их с помощью:

Тогда эти файлы существуют локально, но удаляются из вашего хранилища. Тогда вы можете игнорировать эти файлы.


Многие приходят ко мне на сайт в поисках информации о phpstorm. И этим постом я хочу начать новый цикл статей о phpstorm, который будет раскрывать наиболее полезные фичи этого наикрутейшего инструмента. В этой статье поговорим об интеграции с git.

Дисклеймер

Еще я пишу все это на Maс, поэтому может возникнуть путаница с расположением пунктов меню и хоткеями. Но я постараюсь отдельно прописать это и для Windows, главное не забыть.

Для кого эта статья.

  • для начинающих разработчиков, которые сели за phpstorm и не знают с какой стороны к нему подступиться
  • для прожжёных старпёров, которые пользуются Notepad++/Sublime Text/Atom/Coda и иже с ними, а также используют git через cli на постоянной основе
  • для любителей Tortoise Git или SourceTree, или каких-то иных GUI; материал позволит вам сравнить ваш инструментарий с возможностями, предлагаемыми PhpStorm
  • для всех тех, кто хочет перейти на PhpStorm и кому еще недостаточно поводов это сделать
  • для меня, чтобы систематизировать и упорядочить, а также приумножить знания об этой замечательной IDE

Начало

Подключение репозитория к проекту

Мне встречалось, как минимум, 3 способа подключения репозитория к проекту. Я разделяю их на основной и вспомогательные. Я считаю, надо описать основной, чтобы иметь возможность создать репозиторий всегда, а про вспомогательные я напишу мельком.

По-дефолту, PhpStorm ассоциирует корень репозитория с корнем проекта. Если ваш проект еще не содержит репозитория, то нужно зайти в меню VCS | Enable Version Control Integration, из него вывалится всплывашка, предлагающая выбрать систему контроля версий. Выбираем git и жмем Ok.


Подтверждение этого диалога равносильно команде git init. После выполнения этих действий в меню VCS появятся дополнительные действия, доступные при работе с системами контроля версий, а также специфичные именно для git операции.

Если у вас уже есть репозиторий, то нужно его подключить к проекту. Для этого нужно проследовать в настройки проекта PhpStorm | Preferences | Version Control. При входе в это меню можно будет увидеть окно, которое показывает список соответствий между директориями проекта и репозиториями. PhpStorm использует модель версионирования на основе директорий, поэтому каждый репозиторий должен быть связан с какой-то директорией.

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


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

Есть и другие способы прилепить репозиторий к проекту. Например, вы можете создать новый проект сразу же из репозитория, который у вас уже хранится где-нибудь на гитхабе. Для этого идем в VCS | Checkout from Version Control | Git (или Github). На стартовом экране PhpStorm тоже есть кнопка, которая вызывает аналогичное диалоговое окно.

Тут достаточно указать путь до репозитория, директорию для нового проекта и его имя. Запустится процесс создания проекта и репозиторий будет автоматом прицеплен к нему.
Еще бывает при входе в проект phpstorm может найти репозиторий, который находится внутри проекта, и может предложить сразу же его ассоциировать с проектом.

В общем, способов масса, нужно лишь выбрать наиболее удобный. В целом, phpstorm так и норовит сам все за вас сделать, поэтому просто не стоит ему сопротивляться.

Инструменты работы с Git.

Чем чаще всего пользуются разработчики? git status/add/rm/commit/checkout/branch/merge/rebase/log/fetch/pull/push и т.д. Для всех этих консольных команд в PhpStorm есть отдельные инструменты, которые делают их работу более наглядной, а значит, и более эффективной.

Основная панель инструментов. Состояние файлов, git status

Local changes

Если вспоминать теорию по git, то каждый файл может находиться в одном из нескольких состояний: untracked, unstaged, staged или commited. Узнать о том, в каком состоянии какой файл находится в данный момент, можно с помощью команды git status. Она покажет все те файлы, которые не являются commited. Для примера я взял три файла из тестового репозитория и ввел каждый из них в разное состояние, а на скрине ниже показал разницу между выводом cli и gui интерфейсов:


Слева в cli мы видим следующую картину:

  • файл app/basic.html находится в состоянии staged и если выполнить git commit, то он попадет в коммит
  • файл app/index.html находится в состоянии unstaged, на нем нужно сделать git add, чтобы перевести в состояние staged
  • файл inner.html находится в состоянии untracked, и нужно использовать команду git add, чтобы перевести его в состояние staged

Так вот PhpStorm старается по-умолчанию разделять файлы на те, которые есть в репозитории и те, которых нет в репозитории. А те файлы, которые есть в репозитории он делит только на измененные и не измененные. Если вы изменили какой-то файл, находящийся под контролем версий, он просто показывается в чейнжлисте Default (или в том чейнжлисте, с которым вы этот файл ассоциировали) и он же автоматически будет готов к коммиту. На уровне git все файлы, которые вы меняете с помощью phpstorm, будут находиться в состоянии unstaged. Этого достаточно, чтобы понять, что файл изменен. А уже когда вы фиксируете правки, phpstorm сам добавляет их в индекс (git add).

Основные возможности вкладки Local Changes


Помимо просмотра статуса репозитория и работы с change-листами, панель имеет ряд дополнительных возможностей. Стоит обратить внимание на панельку инструментов с иконками слева от списка измененных файлов.

Фиксация правок, git commit

По-дефолту, в коммит попадают только те правки, которые находятся в листе Default. Когда вы запускаете операцию коммита, PhpStorm показывает вам большущее диалоговое окно, в котором можно очень много всего сделать.


Просмотр истории репозитория, git log



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


После сохранения этих настроек в логе коммитов гита (а на самом деле не только там, а много где) все подходящие под регулярку строки будут преобразованы в ссылки.


Просмотр изменений, git diff

В phpstorm ну очень много функциональности по части интеграции с гитом. Наверно самой удобной и нужной его частью является diff-viewer, который встроен в текстовый редактор phpstorm. Кстати, если у вас на примете уже есть какой-то другой diff-viewer, и вы им давно успешно пользуетесь, phpstorm дает возможность использовать его прямо в IDE (правда эта тема выходит за рамки статьи).

Сам по себе diff-viewer не является частью интеграции git в phpstorm. Это вполне обособленный инструмент, который можно использовать и в других сценариях. Например, можно сравнить содержимое двух файлов между собой (выделяем в дереве оба файла и жмем Ctrl+D или Command + D).

Этот инструмент разработчики JetBrains используют во всех своих IDE, поэтому он вылизан до безупречности, и его стараются использовать везде. Я уже писал выше, что при просмотре списка измененных файлов доступен предпросмотр diff, но полные его возможности раскрываются тогда, когда мы раскрываем полную его версию, либо занимаемся слиянием конфликтующих правок.


Нажав на эту кнопку вы увидите те правки, которые были сделаны в рамках этого коммита.


Ветки и состояние, git branch и снова git status



Откроется уже знакомый нам diff-viewer, который позволит просмотреть всю разницу между коммитами.

Слияние веток, git merge

Как известно, слияние может производиться с помощью разных стратегий и в разных ситуациях оно будет работать по разному. В случае слияния с fast-forward phpstorm ничего не предложит (вполне ожидаемо). А вот если назревает какой-то конфликт, то phpstorm любезно покажет вам диалоговое окно со всеми конфликтующими файлами:



С помощью стрелок между окнами можно перемещать код из разных вариантов кода в результирующий вариант.

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

Перебазирование, git rebase


Выбираем репозиторий, ветку для перебазирования, новую базу и жмем Rebase. Если был выбран интерактивный режим, то откроется окошко со списком всех перебазируемых коммитов и всеми опциями изменения истории. В общем все так же, как в cli, только в одном месте





Если же был выбран не интерактивный rebase, то он будет произведен точно так же, как и в cli.

Работа с удаленными репозиториями, git fetch, pull, push & clone



Прочее

Конечно же, это не все. Причем далеко не все. Я описал тут только те функции, которые наиболее часто востребованы, и немного коснулся менее используемых вещей. В phpstorm продуманы очень многие мелочи, которые в повседневной жизни упрощают работу с репозиторием многократно. Конечно же тут есть и cherry pick, и revert, и разные стратегии слияния веток, и много чего еще. Статья и без них уже получилась огромной, а если вы разберетесь с материалом этой статьи, то использовать все остальные фишки шторма не составит никакого труда.

Читайте также: