はじめに
未経験から自社開発企業に入社して、約半年が経ちました。今は、ありがたいことに開発のプロジェクトに参画して、コードを書く仕事をさせてもらっています。
現場で使っているうちに自然と覚えていったGitコマンドを、「ブランチを切って、マージリクエスト(プルリクエスト )を出す」までの一連の流れで、紹介しようと思います。
ただでさえ覚えることが多すぎて困っているのに、どのコマンドを覚えれば、という方の参考になれば、と思います。
間違い等がある場合ご指摘いただけれると幸いです。
前提条件として、
- Gitをなんとなく知っている
- ローカルとリモートの違いを知っている
- 対象のリポジトリをgit clone済み
ぐらいであると、本記事を参考にしやすいと思います。
1. ローカルでブランチを切り、そのブランチに切り替える。
git checkout -b ブランチ名
masterブランチでこのコマンドを実行すると、記入した「ブランチ名」のブランチが作成され、同時にその新しいブランチに切り替わります。
git checkout hogehoge
は現在すでに存在する、ブランチ名が「hogehoge」のブランチに切り替えるという意味になります。
これに、オプションである-bを付け足すことで、新規のブランチが作成され、そのブランチに切り替わる挙動になります。
2. 変更されたファイルを確認する。
git status
このコマンドによって、自分が変更を加えたファイルを列挙してくれます。
これから変更をコミットする(記録する)の事前準備で、自分が触ったファイルの確認を行います。
3. ファイルの差分を確認する。
git diff ファイル名
2の「git status」コマンドによって、列挙されたファイルで自分がどういう変更を行ったかの差分を確認できます。
これによって、デバッグ関数の消し忘れなど、意図しない変更が混入していないかをチェックすると良いでしょう。
4. コミットするファイルを選択する。
git add ファイル名
2の「git status」と3の「git diff」コマンドによって、自分がファイルに加えた変更、もしくは新しく作成したファイルが、コミットできるものだと確認できたら、このコマンドで「コミットリスト」に登録するわけです。
*コミットリストという言葉はあくまで例えです。
5. メッセージ付きでコミットする。
git commit -m "文章"
4の「git add」によって選択された新規ファイルや変更をログとして記録します。
コミットを何度もしていると、何を修正したかわからなくなる、なんてことがあるので、「-m」というオプションをつけることで、メモ代わりにしたり、他の開発者に自分の変更意図を伝えることができます。
あと、コミットをこまめにしておくと、後々解消したいコミットが出てきた場合、修正する労力が少なくて済みます。
6. 最後にリモートにプッシュする。
git push
もし、リモートに今のブランチがなければ、
git push --set-upstream origin ブランチ名
を実行してください、とメッセージが出ると思いますが、このコマンドを実行して大丈夫です。
以上で、紹介したい必要最低限のgitコマンドは終わりです。
上記のコマンドだけでとりあえず、自分の変更したブランチをリモートに送ることができます。
あとは、リモートで、マージリクエスト(GitLab)、もしくはプルリクエスト (GitHub)を出しましょう。
オマケその1〜プッシュする前にコンフリクトをローカルで解消する。
自分の変更したファイルを、他の開発者の方もいじっていた時に、コンフリクトが生じてしまうことがあります。
GitLabやGitHubでは、マージリクエストを出すとコンフリクトが生じていることを検知して知らせてくれますが、先にローカルでコンフリクトの有無を調べておきたい場合の対処法を紹介したいと思います。
特に、長期的に一つのブランチを持ってしまっていて、マスターにどんどん変更が加えられていっている場合は、これを定期的に実行しても良いかと思います。
1. 今のブランチからマスターに切り替える
git checkout master
2. リモートのマスターブランチの内容をローカルに反映する。
git pull
3. 元のブランチに切り替える。
git checkout ブランチ名
4. ローカルのマスターブランチを、今のブランチにマージする。
git merge master
この時点でコンフリクトがある場合、コンフリクトが生じているファイル名を表示してくれます。
オマケその2〜知っておくと便利なコマンド
自分で使っていて覚えてしまったコマンドで、知っておくと便利かもというものを紹介します。
1. 今ローカルにある全ブランチを表示する。
git branch -a
2. リモートにあるけど、ローカルにはないブランチを持って来たい。
git fetch
3. コミットの履歴を見たい。
git log
メッセージ分とコミットのIDを表示してくれます。
4. 特定のコミットをなかったことにしたい。
git revert コミットのID