はじめに
開発現場でよく使われるツールGitについて基礎とよく使うコマンドについてまとめました。
Gitを使い始めたばかりの方やこれから使おうと考えている方の参考になれば幸いです。
Gitの概要
リポジトリ
Gitの管理下にあるファイルやディレクトリ(フォルダ)の変更履歴を保管する箱のようなもの。
ローカルリポジトリ
自分のPC上(ローカル環境)に置くリポジトリのこと。
リモートリポジトリ
外部サーバー上に置くリポジトリのこと。
リモートリポジトリは、直接変更修正することはなく、ローカルリポジトリの変更修正を同期して更新されていく。
ブランチ
リポジトリで管理しているファイルやディレクトリの変更の流れのこと。commitの連なり。
ブランチは、分岐させることができる。
開発では、基本的にブランチを分岐させる。分岐させることをブランチを切ると言う。
ブランチ上での変更は統合されるまで他ブランチに影響しないしされない。
commit
ファイルやディレクトリ(フォルダ)の変更修正を、リポジトリに記録すること。
commitを行う際には、基本どのような変更をおこなったかメモをつける。これをコミットメッセージと言う。
push
ローカルリポジトリでのcommitをリモートリポジトリに反映させること。
merge
ブランチを統合すること。
pull
リモートリポジトリの変更をローカルリポジトリに取り込むこと。
Gitのよく使うコマンド
リモートからクローン
$ git clone https://{GitHubのユーザー名}:{GitHubで作成したトークン}@dummydomain/path/dummyurl.html
ブランチの作成・移動・削除
# ローカルブランチの作成 + 移動
$ git switch -c feature/sample-branch
# ローカルブランチの移動
$ git switch feature/sample-branch
# ローカルブランチの削除
$ git branch -D feature/sample-branch
# リモートリポジトリ上にあるブランチの削除
git push origin :feature/sample-branch
ステージ
# 変更内容を全てステージする
$ git add .
# 特定のファイルをステージする
$ git add hoge/hogehoge.txt
コミット
# 変更内容をコミット
$ git commit
# 変更内容を残したまま直前のコミットを取り消す
$ git reset --soft HEAD^
# 変更内容を残さずに直前のコミットを取り消す
$ git reset --hard HEAD^
プッシュ
# 今いるブランチのorigin(リモートリポジトリのブランチ)にpushする。
$ git push origin HEAD
# リモートリポジトリ上にあるブランチの内容を上書きする
# 使用する際は注意
$ git push --force-with-lease origin HEAD
リベース
指定したコミットをブランチを変えて作り直したり、ひとまとめにしたりして、ログを綺麗にすること。
※ 必要なログが削除されることがあるため、開発現場のルールに従い利用する。
# ブランチを最新状態から切ったことにする
$ git rebase develop
マージ
# 取り込みたいブランチに移動しマージ
$ git merge feature/sample-branch
プルとフェッチ
# リモートリポジトリの変更内容を取り込むだけの場合
$ git fetch
# 「fetch」 する際に自動的にリモートで削除されているブランチを削除する。
$ git fetch --prune
# 「fetch」 を 「merge」 したい場合
$ git pull
スタッシュ
現在の作業を一時的に退避したい時や、退避した作業を元に戻したい時などに使用する。
# 作業中のファイルを一時退避
$ git stash
# メッセージを付けて一時退避(“message”は任意のキーワード。ブランチ名推奨。)
$ git stash save “message”
# N番目にスタッシュした内容を戻す(スタッシュは削除される)
$ git stash pop stash@{N}
# N番目にスタッシュした内容を戻す(スタッシュは保持される)
$ git stash apply stash@{N}
# スタッシュを一覧表示する
$ git stash list
おまけ
コンフリクト
あるファイルにおいてブランチごとに情報が異なり辻褄が合わない状況のこと。日本語で「競合」という意味。
複数人での開発時や、複数のブランチにまたがって作業をしていると、ファイルの同時編集が発生する。
コンフリクトの見方
ここでは、コンフリクト発生時の見方のみを紹介します。
<<<<<<< HEAD
自分が作業していた変更内容。
=======
取り込みたい内容。
>>>>>>> develop