IntelliJシリーズ上でのGit操作。
検索でgit checkout
~などのコマンドはわかっても、IntelliJのGUI上でなるべく操作したい場合のメモ。
といいつつ、Git自体初心者なので、やってることはごく基本的。
一通りの操作は画像付きで以下が詳しい。Gitを有効にした上で「Version Control」ツールウィンドウ上での操作になる。
本当に一時的で、戻したことやそこから加えた変更も消えていい(むしろ残らない方がいい)のであれば、detached HEAD 状態になる方法を採る。
過去のバージョンからちょっと変更し、それを残したいなら、新規ブランチにチェックアウトする。
両者の違いは以下が詳しい。要は現在の状態を示すHEADが、前者はコミットを参照、後者はブランチを参照している状態。
「Log」タブから、戻りたいコミットを右クリック。[Checkout Revision]で、コミットのチェックアウトになる。Consoleには以下のようなメッセージが出る。
Note: checking out 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name>
「Log」タブから、戻りたいコミットを右クリック。[New Branch..]を選び、ブランチ名を入力すると、新規ブランチにチェックアウトする。
masterに戻したい場合は、そのタグのあるコミットを右クリック。
タグのあるコミットでは、[Branch '<branch_name>']という項目が増えている。そこを展開し[Checkout]することで、ブランチへのチェックアウトとなる。
ここで[Checkout Revision]を選んでしまうと、detached HEAD状態となり、次のコミットがmasterとは別の一時的なブランチに対するものと扱われ、よくわからなくなるので注意。
コミット単位の取得なら、[Log]タブからコミットを右クリック→[Cherry-pick]でできる。取得と同時に現在ブランチにコミットすることになる。
そうではなく、コミット中の1ファイルのみの取得方法。
[Log]タブでコミットを選択すると、右欄にコミットしたファイルの一覧がツリー表示される。
そこから目的のファイルを右クリック→[Show History for Revision]を選択。
そのファイルに対する更新履歴がコミット単位で表示される。そこから戻したいコミットを見つけ、右クリック→[Get]
コマンドでは、git show で確認、git checkout で取得できる。
git show ${branch}:${file} git show ${commit}:${file} git checkout ${branch} ${file}