いままでは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の認証画面が表示されるのでパスワードを入力
↓
パーソナルアクセストークンの作成画面が表示されます。
必要な権限がすでにチェックされています。
そのまま「Generate token」クリック
↓
トークンが生成され、画面に一度だけ表示されます。
トークンをコピーし、RubyMineに入力して「Add Account」します。
ステージングを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で使っています。
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を表示します。
問題なければ、ドラッグしてstagedに移動し、コミットメッセージを入力してcommitします。
commit前の変更を取り消し
間違った変更を行ごとに取り消したい場合は、diffウィンドウで「>>」をクリックするとリポジトリの状態に戻すことができます。
ファイルごと変更を取り消したい場合は、ファイルを右クリック→Rollback
push
Gitメニュー > Push
merge
マージ先のブランチをcheckoutしておき、
Gitメニュー > Merge
こちらのダイアログが開きます。
マージ元のブランチを選択して実行すればOKです。
Modify optionsからマージ時のオプションを設定できます。
この図では--no-commit
オプションをつけています。
競合の解決
マージ時に競合すると、このような競合解決画面が表示されます。
どちらか片方の変更で上書きする場合は「Accept Yours」or「Accept Theirs」をクリックすれば良いです。
コードの編集が必要な場合はダブルクリックして編集画面を開きます。
左:現在のブランチ(マージ先のブランチ)
中央:編集結果
右:リポジトリのブランチ(マージ元のブランチ)
左右のペインは読み取り専用ですが、中央のペインは編集可能であり、マージ元、マージ先を両方見ながら作業ができます。
色の意味
赤:競合が発生した箇所
緑:追加された箇所
グレー:削除された箇所
競合の解決方法は、変更を取り込む場合は「>>」をクリック、変更を破棄する場合は「☓」をクリックします。
すべて解決できたらAppleyをクリックします。
いままでは競合したとき自動で挿入される======
みたいなのを手動で消していたのですが、消し忘れやマージミスがまぁまぁ発生していました。とくに削除行がマージミスにより復活してしまうことが多く…。
このRubyMineの競合解決画面はそのあたりの問題を解決してくれそうです。とてもお気に入りです。
参考サイト