はじめに
エンジニアに転職して5ヶ月ほど経ちました。
働き始めて思ったのが意外とGUIツールなどを使ってるエンジニアは多いなということなのですが、私は基本的にコマンドのみで作業してますので、これまでに多用しているGitコマンドについてまとめてみました。
プロジェクト開始
まずはここから。
$ git clone <クローンしたいリポジトリのURL>
git initする機会はこれまでほとんどありませんでしたので、基本的にここがスタート地点になってます。(まだ、2プロジェクト目くらいですが。。)
Pushまでの流れ
$ git add ファイルパス
$ git add .
変更があったファイルをステージングエリアに追加にするコマンドです。言い換えると、変更があったファイルをコミットできる状態にするコマンドということになります。
なのでいくらローカルでファイルを変更しようとgit addしていないとコミットはできません。
git add . はローカルで変更があったファイル全て(gitignoreしているものは除く)を一括でステージングエリアに追加することができます。
これはかなり便利なコマンドになりますが、稀に予期しないファイルを上げてしまう場合もあるので最初のうちは注意が必要かと思います。(僕は2回くらいやらかしました。)
$ git status
On branch develop
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: docker/db/data/ib_buffer_pool
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: docker/db/data/ib_logfile0
流れ的に次はgit commitっぽいのですが、先ほどの予期しないファイルをコミットしないためにもこのコマンドでコミット前によく確認したりしています。
上がステージングエリア上がっているファイルで、下がファイルの変更はしているがまだgit addされていないファイルになります。
私は心配性のためこのコマンドも多用しています。
$ git commit -m "コミットコメント"
コミットの際のコミットコメントはプロジェクトによって決まりがあったりするので、それに従いましょう。
$ git push origin 現在のブランチ名
上記コマンドでコミットの内容をリモートへと反映させることができます。
$ git pull origin リモートブランチ名
複数人開発の場合、ブランチが日々更新されていくことになりますので、その変更を自分のローカルへと取り込んでいく必要があります。
コミット漏れに気付いたら
$ git commit --ammend --no-edit
現在ステージング状態のものを直前のコミットに含めることができます。
あ、ここ修正するの忘れてた、、みたいなときに便利。
$ git commit --amend -m "直前のコミットのコメントを修正"
おまけでこちらも便利。
git pullとほぼ同じ
$ git fetch
$ git merge origin/develop
最近はgit pullよりこちらを使っています。
ちなみにorigin/developと origin developの違いを最近ようやく理解しました。。
この記事が分かりやすかったです。
コミットログ
$ git log --oneline
gitのログが1行で表示されます。
ブランチ操作
$ git branch
* develop
master
$ git branch -a
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
現在どのブランチにいるかを確認するために使用します。
-a オプションでリモートのブランチも見れます。
このコマンドはかなり多用してます。
$ git checkout ブランチ名
既存のローカルブランチを切り替えます。
$ git checkout -b 新しいブランチ名
ブランチを新しく作成してそちらに切り替えます。
git branch -D ブランチ名
ブランチを削除します。
$ git checkout -b develop origin develop
リモートのdevelopブランチを元に新しくローカルブランチを作成します。
なんかローカルでわけわからなくなったときに一旦ローカルを無かったことにして作り直したりしてました。笑
退避
$ git stash
コミットはせずに現在の作業を退避させるときに利用します。
かなり使います。
$ git stash -u
ちなみにこのオプションをつければ追跡してないファイルも含めて退避させることができます。便利!
$ git stash list
現在避難させているリストを確認できます。
$ git stash pop
その中から一番最近のものを復活させ、そのstashしているリストの中から削除します。
$ git stash apply
こちらは復活させてかつstashしているリストにも残したままにしておきます。
stashは結構たまるので私はpopの方をよく使います。
おまけ
VSCodeの場合はGit GraphやGitLensなどのおすすめプラグインがあるので、この辺入れておくと色々と助けになってくれるかと思います。