2023.3.8
git初心者→中級者向け、開発でよく使うgitコマンド
開発に便利なgit
いきなりですが、gitを知っていますか?
gitとは分散型のバージョン管理システムで、
- 誰がファイルのどの箇所を、どう修正したのか確認することができる。
- 不具合が発生したとき、ファイルを変更を加える前の状態に戻すことができる。
- メンバー間で簡単にファイルを共有することができる。
といったメリットがあるため、複数人で開発をするときは必ずと言っていいほど頻繁に使われています。
今回は「gitを使ったことはあるが基本的なコマンドしか知らない」「git初心者→中級者」といった人向けに、開発でよく使うものを紹介します。
開発業務でよく使うgitコマンド
merge
自分が今いるブランチに別のブランチの変更を取り込みたいときには、mergeコマンドを使います。
git merge ブランチ名
このコマンドを実行した際に、自分のブランチと取り込むブランチで変更内容が競合してしまう「コンフリクト」が起こる場合があります。コンフリクトが起きた時の対処法としては
- 競合している箇所を改めて編集し解消する
- マージを取り消す
の2つの方法があります。
競合している箇所を改めて編集し解消する場合は、コンフリクトが発生しているファイルと競合箇所を編集し、その後は通常のコミットと同じようにコマンドを実行していきます(下記のコマンドは基本的なコマンドのため説明は省略します)。
ファイル編集後
git add .
git commit -m "コミット名"
マージを取り消す場合はmergeコマンドに「–abort」を加えます。
git merge --abort
このコマンドを使用するとファイルの内容は最初のmergeコマンドを実行する前の状態に戻ります。
僕の経験上、開発では自分のブランチで行なった変更だけでなく他のブランチで行った変更と併せないとエラーや不具合が起きてしまうときや、変更をテスト環境や本番環境に適用する場合にmergeコマンドを使うことがほとんどで、競合している箇所を改めて編集しコンフリクトを解消する方法を取ることが多いです。「編集をしている内に複雑になってしまったので最初から修正をし直したい」場合や「そもそもマージするブランチを間違えてしまった」場合にはマージの取り消しを行います。
reset
コミットを取り消したい場合はresetコマンドを使います。取り消すコミットを確認するためにlogコマンドとセットで使われることが多いです。
git log --oneline
git reset オプション コミットID
resetコマンドのオプションはいくつかありますが、僕が業務をする中でよく使っている取り消したコミットで行われた変更の扱いを指定するオプションを紹介します。
–soft
コミットされていない変更として残ります。主に「コミットの内容を変更したい」時に使います。
–hard:
こちらのオプションでは変更も全て削除されます。「途中まで対応していたが結局対応不要になった」時などに使います。
実務では「–soft」を使うことが多いです。特に修正の対応中に緊急の別対応をすることになった場合によく使います。変更内容を残した状態で別作業をすることは、不具合を起こしかねないので、一旦変更内容をコミットした上でブランチを切り替えて緊急対応を行います。緊急対応が終わり、元々やっていた作業を再開するときにこのresetコマンドを「–soft」をつけて実行します。
git reset -soft HEAD^
上記のような理由でresetコマンドを行う場合は、取り消すコミットは最新のものであることがほとんどのため最新のコミットを意味する「HEAD^」を指定します。
revert
コミットを取り消す方法としてrevertコマンドを使う方法もあります。
git revert コミットID
先ほど紹介したresetコマンドの違いは取り消したコミットを残すかどうかです。
例えば、コミットの履歴がA→B→C→DとなっていてCのコミットを取り消したいとします。resetコマンドで取り消した場合のコミット履歴はA→B→Dになりますが、revertコマンドで消した場合はCで行なった変更と真逆の変更を新しくコミットします。履歴はCの変更を取り消すコミットをC’としてA→B→C→D→C’というふうになります。
既にリモートにアップしているコミットに対して取り消す時にresetコマンドを使うと、整合性が取れず変更をリモートに上げることができないので、代わりにrevertで新しい変更として履歴に付け加えることでリモートにアップします。行なった変更が他の人にも共有されている状態ならrevert、そうでないならresetといった使い分けをすれば問題ないと思います。
gitコマンドを使いこなすために
最後にgitコマンドを使いこなすためにやったほうがいいこと、僕が実際にやっていたことを紹介します。
GUIではなくCUIを使う
Gitコマンドを行う方法にはSourcetreeやGitKrakenなど直感的な操作でGitを扱えるGUIクライアントを使う方法と、コマンドを入力して操作するCUIの2種類があります。GUIクライアントでは、コマンドを打つ必要がなく視覚的にGit操作を行うことができるので便利ですが、個人的にはCUIを使う方がいいと思います。
理由は色々あるのですが、
- 開発体制によってはGUIクライアントが使用できない場合がある(リモートPCからgitを操作するときなど)
- エラーが起こった時にGUIクライアントの不具合なのかgitのエラーなのか分からない
- CUIはコマンド入力で操作するのでテキストでの説明がしやすい
と言ったことが主な理由です。
自分で調べる癖をつける
gitに限らず何かを学ぶ時に言えることですが、エラーや分からないことがあったときは人に聞く前に自分で調べるようにするとより効率良く知識を身につけられると思います。自分で調べると時間がかかることもありますが、調べる過程で知りたかった情報以外のことも知識として得られますし、いつも人に聞ける状態とは限らないので作業が止まらないように、うまく調べる力をつけることで今後の業務をより効率良くできるはずです。gitやプログラムなど技術系の調べ物に限って言えば「言語名 リファレンス」や「言語や技術の名称 やりたいこと」で検索をして出てきたサイトを、体感で上から6ページほど見ていけば回答が得られます。
今回は3個のコマンドとgitを学ぶ上でのコツを紹介させていただきました!
今回紹介した以外にも便利なコマンドはたくさんありますので、是非調べてみてください!
この記事を書いた人
浅井 朋弥
EMCカンパニー BU1-PMD所属のエンジニア 現在はwordpressやAWSの開発保守を行なっています。一応フロントとバックエンドの両方を行なっていますが、バックエンドをメインにやっています。