Gitコマンドの使い方まとめ
はじめに
仕事でGitコマンドを使うことが多くなってきたので、知識整理をしておこうと思いました。
なるべく裏取りはしていますが、初心者の私見が混ざっているかもしれないので、参考にするときはお気をつけください。
とはいえ、何かのお役に立てば幸いです。
Gitとは
ソースコード管理の仕組みです。
ローカルリポジトリで編集を行い、その内容をリモートリポジトリに反映する、というのが基本的な流れになります。
※リポジトリは、ソースコードの置き場のようなものです。
ローカルリポジトリで、ファイルを作成・編集・削除する。
変更内容をステージングする。
※ステージングは、変更内容の仮置きをするようなイメージです。ステージングをコミットする。
※コミットは、変更内容を確定させるようなイメージです。コミットをリモートリポジトリに反映(プッシュ)する。
コマンドの使い方
よく使うコマンドを整理しました。
ここに記載していないものもありますが、通り一遍の作業をするには十分だと思います。
git status
ローカルでの作業状態を確認します。
ステージング待ちの変更、コミット待ちのステージング、プッシュ可能なコミットがあることなどが表示されます。
次の手順に必要なコマンドなどが表示されるので、困ったらこれを実行することで、手がかりが得られます。
git log
ローカルリポジトリが保持しているコミットの履歴を確認します。
後述するコミット取り消し操作のときなどに確認が必要です。
git fetch
リモートリポジトリの情報をローカルに同期します。
リモートにブランチが追加されている場合、このコマンドで情報を取得する必要があります。
ブランチとは、リポジトリの中で作業内容に応じて環境を枝分かれさせるような仕組みです。
複数の作業者が一つのリポジトリで作業する場合に各自の作業環境として用意する、本番用のコードにバグを反映しないように開発時のテスト用で用意する、といった使い方をします。
git branch -a
ローカル・リモートの全てのブランチを一覧表示します。
ローカルで自分が作業中のブランチに*が付きます。
リモートブランチは、前述のfetchを実施してからでないと最新状態を確認できません。
git checkout [ブランチ名]
ローカルで作業するブランチを切り替えます。
ローカルに存在しないブランチ名を指定した場合は、ローカルリポジトリに新たなブランチが作成されます。(プッシュするとリモートリポジトリにも同名のブランチができます。)
リモートには存在してローカルには存在しないブランチを指定した場合、ローカルにブランチが作成され、自動的に同名のリモートブランチと同期されます。(git fetchを実施済みであることが前提)
git pull origin [ブランチ名]
指定したブランチについて、リモートで行われた変更の内容をローカルに反映させます。
originはリポジトリのことを指していて、通常、変更はしません。
[ブランチ名]は[リモートブランチ] [ローカルブランチ]というsrc/dstの関係を省略表記したもので、ローカルとリモートでブランチ名が一致していれば、略記のままで問題ありません。
省略しない場合としては、ローカルブランチに別のリモートブランチの変更を反映したいときなどが考えられます。
git add [ファイル名]
指定したファイルに対する変更をステージングします。
git add .
カレントディレクトリでの全ての変更をステージングします。
git add -A
作業中のブランチでの全ての変更をステージングします。
git commit -m "[コミットメッセージ]"
ステージングされた内容をコミットします。
git push origin [ブランチ名]
指定したブランチについて、ローカルでの変更内容(コミット済みのもののみ)をリモートに反映させます。
プルのときと同様に、originはリポジトリのことを指します。
また、[ブランチ名]は[ローカルブランチ] [リモートブランチ]というsrc/dstの関係を省略表記したものとなります。
git checkout -- [ファイル名]
ファイルを誤った編集内容で保存してしまい、その変更がステージング前の場合、指定したファイルを前回のコミット時点の状態に戻します。
誤って削除したファイルの復元も可能です。
git reset HEAD^
直前のステージングを取り消します。
git revert [コミット番号]
指定したコミットを取り消します。
コミット番号は前述のgit logで確認します。
git revert -m 1 [コミット番号]
取り消したいコミットがマージコミットの場合、オプションを付ける必要があります。
※マージは、あるブランチに別のブランチの変更内容を取り込むことです。
数字は、マージ元・マージ先、どちらのブランチのログを残すか指定するものです。
後述するプルリクエストのマージを取り消す場合のように、revertを行うブランチがマージ先のときは、1で問題ないと思われます。
プルリクエストについて
GitHubやBitbucketといったGitのホスティングサービスの機能で、あるブランチで行った変更を別のブランチに取り込むように、リクエストを発行することができます。
プルリクエストの発行、その内容のマージは、ホスティングサービスの画面上で行うもので、コマンドでは実施できません。
しかし、プルリクエストを受けて実施したマージの取り消しは、コマンドで実施することができます。
ローカルブランチにリモートのマージ後の状態を同期して、前述のrevertでマージコミットを取り消し、「取り消しを行った」という変更を再度リモートにプッシュすることで、マージの取り消しが可能です。
上記のような操作は切り戻しのために行われることが多いと思いますが、再度、切り戻し前の状態(=マージ直後の状態)に戻す場合は、プルリクエストの再発行ではなく、「revertした」というコミットを取り消します。
分かりにくい感じもしますが、「取り消しを行った」という変更を取り消すということです。
まとめ
たくさん書いた気がしますが、それでもGitコマンドを網羅できているわけでもなく、まだ使ったことのない機能も色々とあり、Gitをしっかり活用しているプロジェクトに参加するなら、まだまだ勉強が必要な状態です。
Gitを使っていて感じるのは、きちんと理解して使うことが重要だということです。
必要な機能の使用はためらわず、しかし慎重に判断して、使いこなしていければと思います。
この記事が気に入ったらサポートをしてみませんか?