こんにちは。開発の横山🐈です。皆様 git を使用していますか?今や開発を行う上でgitを使用していないことは稀だと思います。今回の記事では私が開発中に使用しているgitのコマンドを紹介します。
git を触り始めた頃はとても難しくよく事故らせていました・・・😭
現在でも理解したとは言い難いですが、開発中にgitの操作でつまづくことはほぼなくなりました。本稿を参考に、是非gitコマンドを使いこなしましょう!
目次はこちら
- 1. そもそも、gitとは
- 2. gitの特徴と仕組みについて
- 3. 開発者にオススメするgitコマンド
- 4. まとめ
そもそも、gitとは
git(ギット)とは、プログラムソースなどの変更履歴を管理する分散型のバージョン管理システムのことをいいます。git は Linux を考案した Linus Torvalds 氏が Linux カーネルのソース・コードを管理するために作成しました。
gitでは、ローカル環境にもコードの変更履歴を保存(コミット)することができるので、リモートのサーバーに常に接続する必要がありません。このため、ネットワークに接続していなくても作業を行うことができます。
gitの特徴と仕組みについて
◆gitの特徴
古いバージョンに簡単に戻せる!
新旧のファイルを一元管理できる!
編集した履歴を複数人で共有できる!
複数人で修正した部分を一つに統合できる!
開発者にオススメするgitコマンド
私が開発中に使用しているコマンドを紹介します。
git status
現在の状況を確認する際に使用します。具体的にはファイルの追加や修正、addでインデックスに登録など、現在どのような状態かを確認することができます。
git branch
ブランチとはバージョン管理の際に、マスターとする履歴から分岐して記録するための機能をと言います。git branchを使うと、今どのブランチにいるのか、他にどんなブランチがあるのか、確認できます。checkoutする前などに使用します。
git log
コミット履歴を確認する場合に使用します。自分の過去のログや他の人の履歴を確認したいときに使います。複数人で開発しているときはいざという時に大変便利なコマンドです。logは今までしたコミットをコミットメッセージの一覧という形で表示します。
git checkout
ブランチを切り替えたり、ファイルの変更内容を変更前に戻すときに使用します。
多機能すぎるので git switch や git restore が追加されたようですが、癖で未だにcheckoutを使っています。
git checkout . | すべてのファイルを最新のコミットの状態まで戻す。 |
git checkout <ファイル名> | 指定のファイルだけ最新のコミットの状態まで戻す。 複数可。ディレクトリも可。 |
git checkout <ブランチ名> | 指定のブランチに切り替える。 ローカルに指定のブランチがなく、リモートにある場合はブランチを作って切り替えられる。 |
git checkout -b <ブランチ名> | 現在のブランチからブランチを切って、そのまま切り替える。 |
git checkout <コミットハッシュ> | 指定のコミットの状態に切り替えます。 バグ検証などで使います。 |
git add
ワークスペースの変更内容をステージングに追加するときに使用します。
git add . | ワークスペース内の変更のあるファイルをすべてステージングに追加。 |
git add <ファイル名> | 指定のファイルをステージングに追加。 複数可。ディレクトリも可。 |
git add -p | 変更内容を小分けにしてステージングに追加するか選べます。 ある程度変更してコミットを複数に分けたい場合に使います。 |
git commit
ステージングに追加されているファイルをコミットするときに使用します。
git commit -m “コミットメッセージ” | コミットメッセージを指定してコミットできます。 これを付けていないと vim が開いて最初は戸惑うと思います。 |
git reset
コミットを取り消したり、ステージングに追加されているものをワークスペースに戻すときに使用します。
git reset | ステージングに追加されているファイルをワークスペースに戻します。 |
git reset HEAD^ | 直前のコミットを取り消します。 |
git pull
リモートリポジトリの状態をローカルリポジトリに反映させます。
git pull | 基本的にこれしか使用していません。 |
git pull –prune | ローカルリポジトリのリモートリポジトリのブランチの情報を更新します。 これを毎回指定するのは手間なので git config --global fetch.prune true を設定するとgit pullだけで大丈夫です。 |
git push
ローカルのコミットをリモートリポジトリに追加します。
git push | リモートリポジトリに同名のブランチがない場合は
fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master というエラーが出てきます。毎回このオプションを付けるのは手間なので git config --global push.default current と指定することで回避できます。 |
git push -f | ローカルブランチとリモートブランチのコミット履歴が異なる場合、git pushだけだと拒否されます。 一度ローカルブランチをpushして、マスターブランチを開発ブランチにrebaseしたあとに再pushしたときによく起こります。 この場合 -f をつけて強制的にリモートブランチの内容をローカルブランチの内容で上書きできます。 複数人で開発しているブランチなどでは注意して使用してください。 |
git rebase
mergeの代わりに使用しています。色々意見はあるとは思いますがマージのコミットログを残さないようにしているため rebase を使用しています。
git rebase <ブランチ名> | 現在のブランチを指定のブランチのHEADに結合します。 |
git rebase –abort | rebaseを取り消して、rebase前に戻す場合に使用します。 rebase中にコンフリクトした場合、コンフリクトを解消しないといけないのですがコンフリクト解消が難しい場合に使用します。 |
git rebase –continue | コンフリクトを解消した後、rebaseを続行します。 |
git stash
ワークスペースの変更内容をcommitせずに退避させる場合に使用します。
git stash | ワークスペースの内容をcommitせずに退避させます。 |
git stash -u | untracked fileも含めて退避させます。 |
git stash pop | 最後のstashの内容をワークスペースに戻します。 |
git reflog
HEADの動きの履歴を表示します。
git reset –hard などでコミットを取り消ししすぎた場合などに使用します。
reflogで戻りたい場所を確認して、 git reset –hard <ハッシュ値> で戻ることができます。
まとめ
今回は個人的によく使う git のコマンドを紹介させていただきました。慣れないうちは理解するのが難しいと思いますが、使いこなせるようになるととても便利です。使ったことがないという方は一度学習してみることをオススメします!
プログラマーにとっては、多くのコードを編集した上で何か不具合が起きたときに、元のバージョンへ戻すことは日常茶飯事です。かといって、1つ、1つコードの編集の度に古いバージョンの日付や時刻ををつけて保存して、また新しい作業をするようなことをしていては、時間はかかりますし、人的ミスも増えることは、いうまでもありません。そういった作業を無駄なく、効率的に行うためのツールがgitです。