LoginSignup
5
0

More than 1 year has passed since last update.

RubyMineでgit操作(checkout、push、pull、commit、diff、merge、conflict)

Posted at

いままではSourceTreeというGUIツールでgitを操作していましたが、RubyMineの内臓機能を使ってみたらだいぶ快適でしたので、まとめます。勉強中、試行錯誤中のため、誤りや、より効率的な方法があれば教えてください🙏

環境、前提

RubyMine 2021.3.1
macOS Catalina
リモートリポジトリ:GitHub

GitHubアカウントが登録済みであり、リポジトリも登録済みの前提で記載します。
もしかすると他のJetBrain製品でも参考になるかもしれません。(未確認です)

RubyMineにGitHubアカウントを登録する

以下の画面からGitHubアカウントが登録できます。
Preferences > Versin Control > GitHub

方法は3つあります。

Log In via GitHub
OAuthでGitHubと連携する方法です。
Log In with Token
GitHubでパーソナルアクセストークンを生成し、RubyMineに登録する方法です。
Log In toGitHub Enterprise
企業向けの有料GitHub?これはわからないので説明していません。

「Log In via GitHub」の手順

「+」マーク→「Log In via GitHub」
ブラウザが開き、JetBrainのページが表示され、GitHubを許可しますか?のように聞かれるので、承認すればOKです。
詳しく覚えていないのですが、画面の指示通りに操作すれば大丈夫です^^;
ただ、私のGitHubアカウントの場合、organization側の承認も必要だったようで、面倒だったので下の方法でやりました。

「Log In with Token」の手順

「+」マーク→「Log In with Token」
このようなダイアログが表示されます。

連携に必要な権限が付与されたトークンをすでに持っていれば入力すればよいのですが、今回はトークンを生成するところから記載します。

「Generate」をクリック

ブラウザでGitHubの認証画面が表示されるのでパスワードを入力

パーソナルアクセストークンの作成画面が表示されます。
必要な権限がすでにチェックされています。
スクリーンショット 2022-01-19 22.54.39.png

そのまま「Generate token」クリック

トークンが生成され、画面に一度だけ表示されます。
トークンをコピーし、RubyMineに入力して「Add Account」します。

下がGitHubアカウントを追加できた状態です。

ステージングをONにする設定

RubyMineではデフォルトでステージングがありません。changelistsという変更ファイル群から選択してコミット、という操作を行います。個人的にはステージングがあった方が通常のgitと同じ感覚で操作できるので、設定を変更してステージングを出すようにします。

Preferences > Version Control > Commit > 「Use non-modal commit interface」 をON
Preferences > Version Control > Git > 「Enable staging area」をON

Git関連のウィンドウ

Gitウィンドウ

command + 9 で表示されます。
ブランチ一覧、変更履歴などが確認できます。
ドッキングさせていると狭くて使いにくいので、私はFloatで使っています。
スクリーンショット 2022-01-22 19.43.01.png

Commitウィンドウ

command + 0 で表示されます。
変更差分、diffを見て、ステージングし、コミットするためのウィンドウです。

Git操作

ブランチのcheckout

Gitウィンドウのブランチ一覧
ブランチ名の上で右クリック→Checkout

この方法でリモートブランチを落とすことも、ブランチを切り替えることもできます。

ちなみに、RubyMineの右下にあるブランチ名をクリックすると、ブランチ一覧がポップアップされ、ここからもブランチの切り替え操作ができます。

ブランチ一覧で矢印(↙↗)アイコンが表示されることがあります。
まだ取り込んでいない変更がある場合は青色下向きアイコン、
まだpushしていないcommitがある場合は緑色上向きアイコンが表示されます。

ブランチの削除

ローカルブランチを削除するには、ブランチ一覧から対象のブランチをクリックし、Delete

同時にリモートブランチも削除する場合は、上記の操作の直後に表示されるこちらのお知らせの「Delete Tracked Branch」をクリックします。

fetch、pull

Gitメニュー > Fetch
Gitメニュー > pull

commit

ファイルを修正後、Commitツールウィンドウで差分の確認ができます。

差分を確認するには、ファイルを選択してダブルクリック、もしくは command + d でdiffを表示します。
スクリーンショット 2022-01-27 14.23.41.png

問題なければ、ドラッグしてstagedに移動し、コミットメッセージを入力してcommitします。

commit前の変更を取り消し

間違った変更を行ごとに取り消したい場合は、diffウィンドウで「>>」をクリックするとリポジトリの状態に戻すことができます。
スクリーンショット 2022-01-27 14.23.41.png

ファイルごと変更を取り消したい場合は、ファイルを右クリック→Rollback

push

Gitメニュー > Push

merge

マージ先のブランチをcheckoutしておき、
Gitメニュー > Merge
こちらのダイアログが開きます。

マージ元のブランチを選択して実行すればOKです。
Modify optionsからマージ時のオプションを設定できます。
この図では--no-commitオプションをつけています。

競合の解決

マージ時に競合すると、このような競合解決画面が表示されます。

どちらか片方の変更で上書きする場合は「Accept Yours」or「Accept Theirs」をクリックすれば良いです。
コードの編集が必要な場合はダブルクリックして編集画面を開きます。

このような3ペイン画面が表示されます。
conflict_resolution_tool_legend.png

左:現在のブランチ(マージ先のブランチ)
中央:編集結果
右:リポジトリのブランチ(マージ元のブランチ)

左右のペインは読み取り専用ですが、中央のペインは編集可能であり、マージ元、マージ先を両方見ながら作業ができます。

色の意味
赤:競合が発生した箇所
緑:追加された箇所
グレー:削除された箇所

競合の解決方法は、変更を取り込む場合は「>>」をクリック、変更を破棄する場合は「☓」をクリックします。

すべて解決できたらAppleyをクリックします。
いままでは競合したとき自動で挿入される======みたいなのを手動で消していたのですが、消し忘れやマージミスがまぁまぁ発生していました。とくに削除行がマージミスにより復活してしまうことが多く…。
このRubyMineの競合解決画面はそのあたりの問題を解決してくれそうです。とてもお気に入りです。

参考サイト

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0