20200119のGitに関する記事は3件です。

S○urceTreeやG○tKrakenなんて目じゃない!?JetBrains製品(IntelliJ IDEA等)のGit機能の使い方

はじめに

一部タイトル詐欺が含まれます
(SourceTreeの行ごとにコミット機能がない(ブロック単位は可))

JetBrainsの製品はSVNやGit向けのバージョン管理機能を持っています。
その中でもGitに着目し、使い方を紹介します。

スクリーンショットはWindows 10 & IntelliJ IDEA 2019.3.1 (Ultimate Edition)を利用しています
(紹介しているものはIntelliJ IDEA Communityをはじめ、他のJetBrains製品でも利用できます)

なにか詰まったことがあればトラブルシューティングの章を参照してください
それでも解決できない場合はコメントをください

本記事内ではダイアログとモーダルをまとめて「ダイアログ」と表記します

Git機能を有効にする方法

既存プロジェクトで有効にする

ローカルリポジトリを作成するだけの場合

  1. IDEで既存のプロジェクトを開きます。

  2. メインメニュー内の「VCS -> Enable Version Control Integration」をクリックします
    image.png

  3. Enable Version Control Integrationダイアログが開くので、

  4. 「Select a version control system to...」が「Git」になっていることを確認し「OK」をクリックします
    image.png

  5. 画面左下に「Version Control」タブが挿入され、Gitが有効になります。
    image.png

GitHubでリポジトリを作りつつGitを有効にする場合

  1. IDEで既存のプロジェクトを開きます。

  2. 「VCS -> Import into Version Control -> Share Project on GitHub」をクリック

  3. (GitHubへのログインがある場合もあり)

  4. 「Share Project On GitHub」ダイアログにリポジトリ名やプライベートか否かなどの設定を行い、「Share」をクリック
    image.png

  5. 画面左下に「Version Control」タブが挿入され、Gitが有効になります。

git(GitHub, GitLab, GitBucket等)からクローンする

  1. IDEを開いた際に表示される「Welcome to <IDE名>」ウィンドウから「Get from Version Control」をクリックをします
    image.png

  2. 「Get from Version Control」ダイアログ内の左メニュー「Repository URL」を選択するとGitからクローンを行うことができます
    image.png

  3. ダイアログ内の「Version control」が「Git」であることを確認し、「URL」にURLを入力、「Directory」に保存先を選択し「Clone」をクリックします。

URLはGitサービス等から取得してください。
GitHubでは各レポジトリページ内の右上にある「Clone or download」をクリックすることで表示されるメニュー内から取得できます。
例)
GitHub

  1. Clone終了後、プロジェクトの構成を尋ねられ(ることが多い)プロジェクトが開かれます

  2. 画面左下に「Version Control」タブが表示されていればGitが有効になっています

パネル解説

Version Control

Version Controlパネルは画面左下の「Version Control」タブをクリックすることで表示されます
image.png

開いた直後に表示される「Local Changes」タブでは追加/変更/削除されたファイルや、まだバージョン管理に入っていないファイルを確認できます。
また、ファイル名をクリックすることでファイルの内容確認/変更や変更点の確認ができます。

他にもChangelist作成やコミットなども行えますが後ほど解説します。

image.png
「Log」タブではブランチの状態やコミットの状態が確認できます。
コミットを右クリックすることでReset, Revert, Cherry-pickなどの操作ができます。

プロジェクトビュー

image.png

プロジェクトビューはIDEウィンドウの左上にあるProjectタブから開くことができる。
Gitが有効になっていると、ファイルの状態によって色が変わります。

状態
Gitで管理されていない
Gitで管理されている新規作成のファイル
Gitで管理されている変更を加えたファイル
Gitで管理されている変更のないファイル
.gitignoreで指定されている無視するファイル

エディタ

エディタは画面中央に表示されるファイルを編集するパネルです

変更点

image.png

エディタ内ではファイルの変更を確認できます。
変更がある行は行番号の横に色やアイコンが表示されます。

色 or アイコン 状態
新規追加された行
編集された行
削除された行

色やアイコンをクリックすることで過去の状態を確認できます。
image.png
Rollbackアイコン(image.png)をクリックすることで過去の状態に行を戻すこともできます。

annotate

行番号と編集部分との間を右クリックし、「Annotate」をクリックすると、Annotateが表示されます。
image.png

Annotateは誰がいつ変更したのかを表示し、行をクリックすることでどのコミットで変更されたのかを確認できます。
image.png

history

エディタを右クリックし、「Git -> Show History」をクリックすることで、ファイルの変更を確認できるパネルが開きます。

image.png

パネルではいつどんな内容が変更されたのか、どのコミットで変更されたのかを確認できます。

image.png

エディタで範囲選択を行い、「Git -> Show History for Selection」をクリックすることで、選択範囲のみの変更を確認できます。

基本機能

コミット

コミットは「VCS -> Commit...」、または(設定次第で)様々な場所にあるimage.pngアイコンをクリックすることで行えます。
image.png

「Commit Changes」ダイアログでは

  • コミットを行うファイルの選択
  • コミットメッセージの編集
  • Commit Authorの変更
  • Amend Commitの有効化
  • Sign-off Commitの有効化
  • コミット前にコードの分析を行うか(エラーチェックを行うか)
  • コミット後にデプロイを行うか

などの設定が行えます
image.png
ダイアログ下部の「Commit」をクリックすることでコミットが行えます
「Commit」ボタン内のメニュー、「Commit and Push」はコミット後にプッシュダイアログを表示します。
また「Create Patch」ではコミット予定のファイルのpatchを作成できます

リモート

リモートの設定は「VCS -> Git -> Remotes...」から行えます
「Git Remotes」ダイアログではリモートの追加, 削除, 編集が行えます

image.png

プッシュ

プッシュは「VCS -> Git -> Push」から行えます
「Push commits to <ProjectName>」ダイアログではプッシュされるブランチ、コミットの確認や、タグの同期も行うかを設定できます。

image.png

ダイアログ下部の「Push」をクリックすることでプッシュが行われます
また、フォースプッシュは「Push」ボタンのメニュー内「Force Push」をクリックすることで実行できます

reset

リセットは「VCS -> Git -> Reset HEAD...」から行えます。
しかしこの方法ではreset先のhashやtagが必要なため、あまり便利とは言えません

便利なresetの方法として、Version Controlパネル内Logタブより、戻りたいコミットを右クリックし
「Reset Current Branch to Here」をクリックする方法を紹介します
image.png

「Git Reset」ダイアログではreset後のファイルの扱いを変更できます。
image.png
下部の「Reset」をクリックすることでresetが行えます

revert

Version Controlパネル内Logタブより、戻りたいコミットを右クリックし
「Revert Commit」をクリックすることでrevertを行えます

「Conflicts」ダイアログはコンフリクトで解説しています

ブランチ

ブランチの操作は画面右下から行えます
image.png

「+ New Branch」をクリックするとブランチの新規作成
<branchName>」を右クリックするとrename, delete, checkoutなどが行えます。

マージ

マージを行う前にマージされる側のブランチにチェックアウトしてください。
(ex. developブランチをmasterブランチにマージする場合はmasterブランチにチェックアウト)
マージは「VCS -> Git -> Merge Changes...」から行えます。

image.png
「Merge Branches」ダイアログではマージ先のブランチの選択、squashやno fast forwardにするかなどの設定が行えます。
ダイアログ下部の「Merge」をクリックすることでマージが行えます。

コンフリクト

コンフリクトが発生すると「Conflicts」ダイアログが開きます
image.png
ダイアログにはコンフリクトしたファイルの一覧が表示されます
「Accept (Yours|Theirs)」ボタンをクリックするとすべてのファイルが選択したコミットのファイルになります
また、ファイルをダブルクリックすることで細かくどちらの差分を反映するのか指定できます

image.png

image.pngまたはimage.pngアイコンをクリックすると、マージに変更を加えることができます。
またimage.pngをクリックすると変更を破棄できます

すべてのコンフリクトを修正し、下部の「Apply」をクリックすることでマージが完了します

stash

作成

stashの作成は「VCS -> Git -> Stash Changes...」から行えます
image.png
「Stash」ダイアログではメッセージを設定することができます。
「Create Stash」をクリックすることでstashを作成できます

復元, 削除

stashの復元, 削除は「VCS -> Git -> UnStash Changes...」から行えます
image.png
「UnStash Changes」ダイアログでは

  • 「View」をクリックすると含まれている変更を確認
  • 「Drop」をクリックするとstashを破棄
  • 「Clear」をクリックするとすべてのstashを破棄

ができます。
復元したいstashを選択し、「Apply Stash」をクリックするとstashをファイルに反映できます

Changelist

Changelistを使うと、変更をまとめてリストごとに管理することができます。
標準でDefault ChangelistUnversioned Filesというリストが存在しています。

Changelistの作成や削除はVersion Controlパネル内のimage.pngからできます。
image.png

ChangelistからChangelistへ変更をD&Dで移動することもできます
image.gif

また、エディタ内で変更点を選択することで、変更点ごとにチェンジリストに反映できます
image.gif

この機能, 変更点が1ブロックだと分割して別々のChangelistに登録のような操作ができません
公式のYouTrack(GitHubでいうissueを管理するツール)では上記の操作ができないというチケットがあるため、そのうち対応すると思われます
S〇urceTreeなんか目じゃないといいつつ。。。無念

Tasks機能 (issue連携)

Tasks機能とは、IntellIJ内で作業リストを整理できる機能です。
チケット駆動の場合、作業リスト = issueやticketといえます
そしてそれらを管理するJiraやRedmine, Trello, GitHubなどのサービスと連携する機能があります。

連携の設定は「File -> Settings -> Tools -> Tasks -> Servers」から行います

image.png
image.png」をクリックし、Serverの追加を行ったあと、「OK」をクリックし離脱すると画面右上のツールバーにTasksプルダウンが挿入されます。

「Default task -> Open Task...」をクリックするとTaskの作成が行えます
image.png
連携したサービスのticketやissueはここから選択します。
また「Create New Task <上のTextFieldの中身>」をクリックすると、IntelliJ上でのTaskを作成できます
(連携したサービスに新しいissueやticketができるわけではない)
image.png
Taskの作成を行うと、「Open Task」ダイアログが表示されます。
image.png
IntelliJ上ではContextという単位で開いているファイルの状態などを管理しています。
ContextをTaskごとに管理する場合には「Clear current context」のチェックを入れてください。
Task用にChangelistやbranchを作成することもでき、それらの設定もこのダイアログで行えます

この時にChangelistを作成しておくと、どの変更を管理しているのかわかりやすいので利用しましょう
image.png

ツールバー内のTasksメニューから他のTaskを選ぶとTaskを変更することができます。
またChangelistに変更がないときにTaskを変更すると、Taskを削除するか尋ねられます

Pull Request確認(GitHub)

IntelliJでGitHubのアカウントを追加しておくとPull Requestを確認できます
「File -> Settings -> Version Control -> GitHub」からアカウントの追加が行えます
GitHubのアカウントが登録されていて、かつGit RemotesにGitHubのリポジトリが登録されていると、Version Controlパネルに「Pull Requests」タブが表示されます。

トラブルシューティング

Version Controlタブが見当たらない

左下のアイコンをクリックすることでタブを表示することができます
image.png

おわりに

「この(機能|操作)よく(使う|する)のに紹介されてない!」、「ここ間違ってない?」という方はコメントください。

最後になりますが、JetBrains製品の本質はショートカットの充実だと思っているので、
よく使うものだけでもショートカットを覚えてあげてください

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Gitでコミット取り消す

Gitでコミット取り消す

cmd
git log --oneline
git reset --hard xxxxx

git reset.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

3本目:【eclipse】githubからプロジェクトを取得する

github上のソースを取得→実行にすこし手間取ったので手順を残しておく

  • メニューバーから「File -> Import」を選択
  • Select画面から、「Git -> Project from Git」を選択
  • Select Repository Source画面から、「Clone URI」を選択
  • 取得したいリポジトリのURLを設定した「Finish」で終了
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む