Getting Started with GitHub and IntelliJ
This document explains about using GitHub with IntelliJ to clone Git projects and Rise PR using IntelliJ IDEA.
Version Control:
Version Control refers to a system that records changes to a file or set of files over time, called the ‘versions’. In other words, these versions help you in tracking the changes in your codes/project and if necessary, undo those changes as well. There are three types of version control:
GIT and GitHub:
Git is a distributed version control software which you need to install on your local system in order to use it. For an individual working on a project alone, Git proves to be excellent software.
Git File Workflow:
Workspace Copy:
Users’ active directory simply creates new files in this space, and this will be tracked by the Git.
Stage Area:
It is a place where all the modified files marked to be committed are placed.
Local Repository: User’s copy of the version database or file and access all the files through local repos and push the change made to remote
Remote Repository: It is a server where all the collaborators upload changes made to files.
Clone Command: Creates a copy of an existing remote repository inside the local repository.
Importing Project from GitHub: (Install Git Plugin in IntelliJ)
Step 1: Open IntelliJ IDEA, Head on to Get from Version Control
Step 2: Open GitHub, navigate to project which you want to clone. Create your fork and Copy Fork Link not the Main Master Link
Step 3: Paste link in URL filed and Select the directory you want to store project in local. Click on Clone
Git in IntelliJ:
You will be directed to Workspace.
Git Branches: You can find your Local and remote branches here.
Create New Branch in IntelliJ: Click on +New Branch to create a new local Branch, name your branch and click on CREATE
Now, Local Branch is created, and you will be Checked out to Newly Created Local Branch
View Local and Global Changes in IntelliJ:
After making Code development / required modifications, you can view local changes in Version Control → Local Changes Tab
All Global/Remote Changes are displayed in Version Control à Log Tab
Commit Changes and Rise Pull Changes:
Step 1: Go to VCS →Git → Commit File
Compare Changes with original file, you have two options,
1. Commit — Commit changes from current branch
2. Commit and Push — Push changes to Remote
Step 2: If you have Selected Commit and Push Option, you will get Window to push Changes
Done! Once you open GitHub, you will get option to rise Pull Request.
Update your Fork with Master Fork:
Step 1: Go to Terminal, run
Step 2: Now go to Master Repository, and Copy Link
Step 3: Now, run
Available remote is listed by git running
Step 4: The first thing is to fetch all the changes from the original repository. Note that commits to the original repository will be stored in a local branch called, upstream/master.
Step 5: Make sure that you are on your fork’s master branch.
Step 6: Merge the changes from the upstream/master into your local master branch. This will bring your fork’s master branch into sync with the upstream repository without losing your local changes. If you have made any changes that create a conflict, you will obviously have to resolve those before you can complete the merge.
Step 7: At this point your local branch is synced to the original repositories master branch. If you want to update the GitHub repository, you need to push your changes.
Clone a Project from GitHub
In this blog, we’re going to look at how to create an IntelliJ IDEA project from existing code in a GitHub repository.
This blog post covers the same material as the video with some additional tips and tricks. This provides an easy way for people to skim the content quickly if they prefer reading to watching, and to give the reader/watcher code samples and links to additional information.
Clone a GitHub Repository to Our Local Machine
The first thing we need to do is to clone the git repository to our local machine. In the video, we used this IntelliJ samples repository, but it could be one of your repositories if you prefer.
There are several ways to clone a Git repository to your local machine. You can use HTTPS or SSH, amongst other options. Let’s use HTTPS as it can be the simplest option. When we click the clipboard icon, the URL will be copied to our clipboard.
If you don’t have any projects open when you first start IntelliJ IDEA, you’ll see a welcome screen. The welcome screen varies from version to version, the video uses the welcome screen in IntelliJ IDEA 2020.3. Regardless of your version, you’ll have an option to get a project from version control. Clicking on this gives us the Get from Version Control dialog. You can paste the repository URL into the URL input box that we copied from the repository earlier. You can also change the directory that this project is created in on your machine if required.
You can then press Enter, or click Clone, and IntelliJ IDEA will clone the GitHub repository to the directory we selected. IntelliJ IDEA will also pick up common build tools like Gradle or Maven, and automatically download the required dependencies before building the project for you. IntelliJ IDEA will also detect the modules in the project, and correctly set up the test, main and resources folders in a Maven project like the one in the video. You an see the result in the Project window.
There’s more than one way to clone a GitHub project from inside IntelliJ IDEA. If we already have a project like this one open, we can choose to get a new project from GitHub using the VCS menu and selecting Get from Version Control… in version 2020.2, or Clone in version 2020.3. This gives you the same dialog we saw earlier allowing you to enter a URL and project directory.
Tip: You can also use the JetBrains Toolbox extension to clone a GitHub project to IntelliJ IDEA.
Git Tool Window
One of the most useful tools when we’re working with a Git project in IntelliJ IDEA is the Git Tool Window. This gives us visibility over the version control status of our project. One way to open the Git Tool window is to hover over the quick access button in the bottom left of the IntelliJ IDEA window, and select Git. This will open the Git log window.
Alternatively, we can use ⌘9 on macOS, or Alt and 9, on Windows and Linux, to open the Git Tool window. This window shows us all the commits for the project. It also shows us a list of local branches, which in our case is just the “main” branch since we just cloned this repository, as well as remote branches. If you find a visual representation of the commit history useful, this window can help you to understand the status of commits, branches, and remotes for your project.
Tip: The Git tool window means you don’t need a third-party application to manage your Git workflow. The Git Tool window means can perform a variety of tasks including merging, creating a new branch, checking out a branch, and undoing changes.
Adding and Updating Remotes
When we’re working with open source projects on GitHub, it’s common to have more than one remote associated with a repository. If we go back to the intellij-samples project that we cloned from GitHub, we can see that this is actually a fork of another repository hosted by JetBrains.
This upstream repository is in the JetBrains organisation, and is likely to be updated by multiple people at a different rate to the fork we cloned. Ideally we want visibility of the upstream repository as well as our own fork in order to get a better idea of what changes have gone in to the upstream repository, and to update our own fork with these changes. To add this upstream repository remote, we first need to copy the URL like we did before.
We can manage our remotes in IntelliJ IDEA in a couple of different ways. One way is to use Shift+Shift to bring up the Search Everywhere dialog and type Remotes. One of the search results is the ‘Manage Remotes’ option from Git. Selecting this brings up the Git Remotes dialog. This dialog shows the remote we originally cloned this project from, which is our fork of the intellij-samples repository. We want to add a new repository for the upstream repository, in this case, the original JetBrains repository.
When we press the plus button, we can paste in the path to the JetBrains repository that we copied earlier, and give it a name. There are a number of different conventions that you could use to decide on the name for your remote, for example you could call it “upstream”. I like to use the organisation or profile name to remove any ambiguity. You can also use this dialog to make changes to our existing remotes, for example, we can rename the “origin” remote to “trishagee”, because that makes it clearer to me where this remote is pointing. Now when we look at the Git Tool window, it’s clearer which remote the remote branches belong to.
Like most features in IntelliJ IDEA, there’s more than one way to open the Manage Remotes dialog. You can also right-click on the Remote node in the Branches tree of the Git Log, and select Manage Remotes.
Git Fetch
The last thing we’re going to look at is why and how to invoke a Git fetch in IntelliJ IDEA. We just added a new remote to this project, but it’s not showing in the Git Tool window. This also means that none of its branches or commits are visible because we haven’t fetched the status of the new remote to our local project.
We can select VCS > Git > Fetch in version 2020.2 and Git > Fetch in version 2020.3. When we select this, IntelliJ IDEA will fetch all the relevant details from all the git remotes we have configured for the project, and update our Git Tool log window with these details.
Now we can see a new remote in the Git Tool log window, and we can see all this remote’s branches. We will also be able to see the remote’s branches in the commit list. This gives us a clear idea of which commits are on which branches, and if any branches need updating. Another way of performing a Git fetch is to click the Fetch All Remotes button on the Branches tree toolbar in the Git Log window. This will also update the project.
Now we have a fully configured IntelliJ IDEA project from a GitHub repository, with all the relevant remotes added, and a Git Tool log window that shows the current status of the remote repositories. We’re ready to start making changes to this project and to commit, push, and create pull requests.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
License
EvgenKuz/Intellij-IDEA-GitHub-SetUp
Name already in use
- Local
- Codespaces
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Настройка Git и GitHub в Intellij IDEA
1. Добавить аккаунт GitHub в Intellij IDEA
1.1 Создать access token
Перейди в настройки GitHub -> Developer Settings -> Personal access token -> Generate new token
Оставьте только scope’ы: repo, workflow, read:org и gist.
Появится токен. Обязательно скопируйте его, потому что после того, как вы закроете страницу, он пропадёт!
1.2 Добавить аккаунт в Intellij IDEA
Зайдите в Intellij IDEA. Там File->Settings->Version Control->GitHub.
Там уже нажмите Ctrl+N(на Mac Cmd+N)->Login with token. И просто вставьте ваш скопированный токен в поле. Add account. Поздравляю, вы добавили GitHub аккаунт!
2.1 Скачать проект с GitHub
Для того чтобы клонировать проект, достаточно зайти в File->New->Project from Version Control.
Теперь достаточно выбрать проект и нажать Clone.
2.2 Сделать Commit
Достаточно нажать Git->Commit. Откроется вкладка Commit.
В Unversioned Files находятся файлы не добавленные в staging area. Там можно их добавить, чтобы они попали в следующий коммит. В Changes можно убрать файлы, которые не должны попасть в следующий коммит.
Когда файлы выбранный, можно написать сообщение для коммита и сделать его, нажав кнопку Commit.
2.3 Сделать Push
Это можно сделать из той же вкладки, нажав Commit and Push, после чего файлы загрузятся на удалённый репозиторий.
Так же это можно сделать перейдя Git->Push
В открывшемся окне можно выбрать необходимые коммиты и запушить их на удалённый репозиторий.
2.4 Загрузить через Fetch
Fetch безопасен всегда, поэтому его можно использовать когда угодно. Он просто загружает все изменения с удалённого репозитория, не делая merge с локальным репозиторием. Т.е. загруженные изменения не применятся, а останутся в отдельных ветках, расходящихся с вашими на последнем запушеном коммите.
Подходить, если вам нужно сделать Merge с изменениями из-вне вручную.
2.5 Загрузить через Pull
Pull работает только, если можно сделать fast-forward merge для веток с одинаковыми названиями в удалённом репозитории и в локальном.
В окне можно выбрать ветку, которую надо обновить из удалённого репозитория. Если удалённых репозиториев несколько, то их тоже можно выбрать.
Так же там можно добавить специальные опции, но они требуют отдельного объяснения.
Подружим Git с Intellij IDEA
По сложившейся традиции, приветствую вас, будущие Senior Software Engineers. Сегодня поговорим о логическом продолжении моей статьи про Гит. Также я советую прочесть материал о стратегиях ветвления, который я опубликовал ранее. В статье про Гит я описал, как работать с ним в командной строке, а сегодня покажу, как сделать все это в Intellij IDEA. В начале своего пути как разработчика я пользовался именно командной строкой и думал, что мне незачем использовать UI для этого дела. Ведь все понятно и так… Но это было ровно до того момента, пока я не начал использовать Гит в Intellij IDEA… Хочу сказать сразу, что я буду описывать личный опыт работы. Есть несколько вариантов решения одних и тех же задач через Intellij IDEA, и если вы знаете, как сделать лучше то, что я опишу в статье — пишите в комментарии, обсудим.
Необходимые вводные:
- Прочесть, повторить и понять статью про гит. Это поможет быть уверенным, что все уже настроено и готово к работе
- Установить Intellij IDEA.
- Выделить часик личного времени для полного усвоения.
Клонируем проект локально
- Если есть уже гитхаб аккаунт и хочется что-то потом запушить, лучше сделать форк проекта к себе и клонировать свою копию. Как сделать форк — я описывал в этой статье в главе пример the forking workflow.
- Клонировать с моего репозитория и проделать все локально без возможности все это дело запушить на сервер. Ведь это же будет мой репозиторий))
Копируем адрес проекта:
Открываем Intellij IDEA и выбираем Get from Version Control:
Копируем вставляем адрес на проект:
Вам предложат создать Intellij IDEA проект. Принимаем предложение:
Так как нет системы сборки, и это не входит в задачу статьи, выбираем Create project from existing sources:
Далее будет такая картина маслом: С клонированием разобрались, теперь-то можно и оглянуться по сторонам.
Первый взгляд на Intellij IDEA как на гит UI
Присмотритесь еще раз внимательно на клонированный проект: уже там можно получить много информации о системе контроля версий. Первое — это Version Control панель в нижнем левом углу. В ней можно найти все локальные изменения и получить список коммитов (аналог git log). Перейдем в лекцию Log. Присутствует некая визуальная составляющая, которая помогает понять, как именно шел процесс разработки. Например, видно, что создавалась новая ветка с коммитом added header to txt, который после влился в мастер-ветку. Если нажать на коммит, в правом углу можно увидеть всю информацию о коммите: всех изменениях и его метаданных. Более того, можно посмотреть, какие были сделаны изменения. Тем более что там же был разрезолвлен конфликт. Это IDEA тоже отлично показывает. Если нажать два раза на файл, который был изменен за этот коммит, увидим, как резолвили кофликт: Заметно, что справа и слева были два варианта одного файла, который нужно было смержить в один. А посредине — результат, который в итоге получился. Когда в проекте множество веток, коммитов и пользователей, которые работают в проекте, необходимо поискать отдельно по ветке (branch), пользователю (user) и дате (date): И последнее, что я хочу объяснить перед началом работы — это то, как же понять, в какой ветке мы находимся. Даю минуту на поиск… нашли? Сдаетесь? 😀 В правом нижнем углу есть кнопка Git: master, где после Git: показано, на какой ветке находится сейчас проект. Если нажать на кнопку, можно проделать множество полезных вещей: перейти на другую ветку, создать новую, переименовать существующую, и так далее.
Работа с репозиторием
Полезные горячие клавиши
- ctrl + t — получить последние изменения с удаленного репозитория (git pull).
- ctrl + k — сделать коммит/посмотреть все изменения, которые есть на данный момент. Сюда входят и untracked, и modified файлы (смотри мою статью про гит, там это описано) (git commit).
- ctrl + shift + k — это команда для создания пуша изменений на удаленный репозиторий. Все коммиты, которые были созданы локально и еще не находятся на удаленном, будут предложены для пуша (git push).
- alt + ctrl + z — откатить в конкретном файле изменения до состояния последнего созданного коммита в локальном репозитории. Если в левом верхнем углу выделить весь проект, то можно будет откатить изменения всех файлов.
Что мы хотим?
Получить все изменения на текущий момент в основной ветке (master, например).
На базе этой основной создать отдельную для своей работы.
Реализовать новую функциональность.
Перейти на основную ветку и проверить, не было ли новых изменений за время, пока работали. Если не было, то все хорошо, а если было, то делаем следующее: переходим на работающую ветку и делаем ребейз изменений из основной ветки в нашу. Если все прошло успешно, то отлично. Но вполне могут быть и конфликты. И их как раз можно будет заранее решить, не тратя время на удаленном репозитории.
Казалось бы, зачем это делать? Это правило хорошего тона, которое предотвращает возникновение конфликтов уже после пуша своей ветки на локальный репозиторий (есть, конечно, вероятность,что все равно они будут, но она становится значительно меньше).
Получить изменения с удаленного сервера?
Я добавил описание в README новым коммитом и хочу эти изменения получить. Предлагается выбор между мерджем и ребейзом в случае, если были сделаны изменения и в локальном репозитории и на удаленном. Выбираем мерж. Вводим ctrl + t: В результате, видно как изменился README, т.е. изменения из удаленного репозитория подтянулись, и в правом нижнем углу можно посмотреть все детали тех изменений, которые пришли с сервера. alt=»Подружим Git с Intellij IDEA — 14″ width=»1024″ />
Создать новую ветку на основе master
Переходим в правый нижний угол и нажимаем на Git: master, выбираем + New Branch.
Оставляем галочку Checkout branch и пишем имя новой ветки. Для меня это будет readme-improver.
После этого Git: master сменится на Git: readme-improver.
Имитируем параллельную работу
Реализовать свою функциональность
Задача стоит в том, чтобы поменять README и добавить описание к новой статье, то есть то, что работа в гите идет через Intellij IDEA. Добавляем это: Изменения выполнены, теперь можно создать коммит. Нажимаем горячую клавишу ctrl + k, получим: Прежде чем создать коммит, нужно внимательно посмотреть на то, что предлагается в этом окне. Я специально добавил стрелочек, куда посмотреть. Там много интересных вещей. В секции Commit Message пишем текст коммита, и чтобы он создался, нужно нажать кнопку Commit. Я так и не нашел, как бы так сделать это горячей клавишей, так что если кто-то найдет — пишите, я буду очень рад. Пишем, что README изменился и создаем коммит. В результате в левом нижнем углу всплывает оповещение, в котором будет имя коммита:
Проверить, не изменилась ли основная ветка
- accept yours — принять только изменения из readme-improver.
- accept theirs — принять только изменения из master.
- merge — самому выбрать, что нужно оставить, а что убрать.
- Это изменения из readme-improver.
- Результат. Пока что там так, как было до изменений.
- Изменения из master ветки.
Запушить изменения на удаленный сервер
Следующий шаг — запушить изменения на удаленный сервер и создавать пул-реквест. Для этого просто нажимаем ctrl + shift + k, после чего получим: Слева будет список коммитов, которые не запушены на удаленный репозиторий, а справа будут все файлы, которые изменены. И все: нажимаем Push, и будет вам счастье 🙂 При успешном пуше будет вот такое уведомление в нижнем правом углу:
Бонусная часть
Не хотел изначально добавлять создание пул-реквеста в статью, но получается не очень законченной из-за этого. Поэтому переходим на гитхаб репозиторий (если он ваш, конечно))) ) и видим, что гитхаб уже знает, что нам предложить: Нажимаем на Compare & pull request, после чего нажимаем Create pull request. Из-за того, что мы заблаговременно порешали конфликты, теперь при создании пул-реквеста, его сразу можно мержить: alt=»Подружим Git с Intellij IDEA — 29″ width=»1024″ />Вот и все, что я хотел вам рассказать в этот раз. Разумеется, я только открыл вам дверь и показал малую часть. Остальное уже по мере необходимости сами найдете. Традиционно приглашаю подписаться на мой GitHub аккаунт, где я выставляю проекты-наработки на разные технологии, которые использую на работе. У меня недавно было личное достижение — мой проект был оценен уже более чем сотней разработчиков. Это невероятное чувство радости, что то, что ты сделал, кто-то использует. И использует для пользы.