基本的コマンドと操作
1.ローカルで GIT の初期設定をする
config
GitHubのユーザー名とメールアドレスを登録する。
# GitHubのユーザー名を登録
$ git config --global user.name "<github-username>"
# GitHubのメールアドレスを登録
$ git config --global user.email "<github-email>"
# よく使うコマンドをエイリアスに登録する。
$ git config --global alias.<alias-name> <git-command-name>
# 例:以下を実行すると、git config branchはgit config brで実行できるようになる。
$ git config --global alias.br branch
# 今いるディレクトリで有効なすべての設定を確認する。(-lは--listの省略形)
$ git config -l
# システム全体の設定を確認する。
$ git config -l --system
# 今使用しているユーザーの設定を確認する。
$ git config -l --global
# 今いるのローカルリポジトリで有効な設定を確認する。(対象のローカルリポジトリに移動してから実行する)
$ git config -l --local
2.ローカルでファイルを操作する
git init
ローカルのカレントディレクトリにリポジトリを作成する。( ./.git/ 下に関連ファイルが作成される)
$ git init
git add
ファイルの変更をインデックスに登録する。
$ git add <file-name>
カレントディレクトリにある、すべてのファイルの変更をインデックスに登録する。
$ git add .
git commit
インデックスに登録されたファイルの変更を、ローカルリポジトリにコミットする。(エディタが起動する)
$ git commit
コミットメッセージを指定してコミットする。
$ git commit -m "<commit-message>"
直前のコミットメッセージを修正 or コミット内容を後から追加する。(エディタが起動する)
$ git commit --amend
コミットメッセージを指定してgit commit --amend
する。
$ git commit --amend -m "<commit-message>"
エディタを起動せずgit commit --amend
する。
$ git commit --amend --no-edit
インデックスに登録されたファイルの変更を、ローカルリポジトリにコミットする。(エディタが起動する)
$ git commit
git status
ローカルにおける変更の有無を確認する。
$ git status
git log
コミットログ(変更の履歴)を表示する。
デフォルトでは、最新のコミット履歴が上から以下内容が表示されます。
- コミットID(ハッシュ値)
- Author(GitHubアカウント名、GitHubメールアドレス)
- 日付
- コミットメッセージ
$ git log
コミットログを1行で短く表示する。
$ git log --oneline
直近のコミットログを指定した件数のみ表示する。例:直近5件のコミット
$ git log -n <commit-count>
$ git log -n 5
ファイルの変更差分を表示する。
$ git log -p <file-name>
git push
ローカルの変更をリモートリポジトリに取り込む。
$ git push <remote-name> <local-branch-name>
例:ローカルのmasterブランチの変更をoriginリモートに取り込む
$ git push origin master
git mv
ワークツリーとステージのファイル名を変更する。(ローカルリポジトリのファイル名は変更されない)
$ git push <remote-name> <local-branch-name>
例:ローカルのmasterブランチの変更をoriginリモートに取り込む
$ git push origin master
git rm
ワークツリーとステージからファイルを削除する。(ローカルリポジトリからは削除されない)
$ git rm <file-name>
# ローカルリポジトリからも削除する場合はコミットする
$ git commit -m "<commit-message>"
ワークツリーとステージからディレクトリごと削除する。(ローカルリポジトリからは削除されない)
$ git rm -r <directory-name>
# ローカルリポジトリからも削除する場合はコミットする
$ git commit -m "<commit-message>"
ワークツリーとステージからファイルを削除する。(ローカルリポジトリからは削除されない)
$ git rm --cached <file-name>
git reset & git checkout
git rm
で削除したファイル(ディレクトリ)を復元する。(コミットしていた場合は復元できない)
# ファイルの場合
$ git reset HEAD <file-name>
$ git chekcout <file-name>
# ディレクトリの場合
$ git reset HEAD <directory-name>
$ git chekcout <directory-name>
git checkout
ワークツリーで変更を行った後、ステージに追加する前に、ワークツリーの変更を取り消す。
# ファイルの場合
$ git checkout <file-name>
# ディレクトリの場合
$ git checkout <directory-name>
ブランチ名とファイル名(ディレクトリ名)が同じ場合は、”–” をつけるとワークツリーの変更を取り消すことができる。
# ファイルの場合
$ git checkout -- <file-name>
# ディレクトリの場合
$ git checkout -- <directory-name>
git checkout
ワークツリーで変更を行った後、ステージに追加する前に、ワークツリーの変更を取り消す。
# ファイルの場合
$ git checkout <file-name>
# ディレクトリの場合
$ git checkout <directory-name>
git clone
リモートリポジトリをローカルにコピーする。(<local-subdirectory-name>は省略可能)
$ git clone <remote-url> <local-subdirectory-name>
3.ローカルでブランチを操作する
git branch
ローカルのブランチ一覧を表示する。
$ git branch
ローカルに新規ブランチを作成する。
$ git branch <new-branch-name>
ローカルに新規ブランチを作成する。
$ git branch -a
ローカルとリモートのブランチ一覧を表示する。
$ git branch -r
ローカルのブランチ名を変更する。
$ git branch -m <branch-name> <new-branch-name>
ローカルのブランチを削除する。
$ git branch -d <branch-name>
git diff
ブランチを比較する。
$ git diff <branch-name-a> <branch-name-b>
git fetch
リモートリポジトリの変更を、ローカルの <remote-name>/<branch-name> に取り込む。
$ git fetch <remote-name> <branch-name>
# マージも行う場合は続けて以下を実行する
# 取り込みを行いたいブランチに切り替える
$ git checkout <branch-name>
# 「変更の取り込み元ブランチ名」を指定して変更を取り込む
$ git merge <remote-name>/<branch-name>
git merge
別のブランチにおける変更をローカルのブランチに取り込む。
$ git fetch <remote-name> <branch-name>
# マージも行う場合は続けて以下を実行する
# 取り込みを行いたいブランチに切り替える
$ git checkout <branch-name>
# 「変更の取り込み元ブランチ名」を指定して変更を取り込む
$ git merge <remote-name>/<branch-name>
git pull
リモートリポジトリの変更をローカルリポジトリに取り込む。
pull は fetchとmergeを同時に実行する。(引数は省略可能)
$ git pull <remote-name> <branch-name>
4.fetch と merge ついて
Gitにおいて、リモートリポジトリの変更をローカルリポジトリに反映するには、通常、fetchとmergeの2つのステップが必要です。
fetchは、リモートリポジトリから最新の変更をダウンロードし、ローカルリポジトリに反映します。
fetchは、ローカルリポジトリに反映されるだけで、ローカルの作業ディレクトリには反映されません。
一方、mergeは、ローカルリポジトリの現在のブランチと、fetchで取得したリモートリポジトリのブランチを統合します。これにより、リモートリポジトリの変更がローカルリポジトリの現在のブランチに反映されます。
pullは、fetchとmergeを同時に実行するコマンドです。つまり、pullを実行すると、リモートリポジトリから最新の変更をダウンロードしてローカルリポジトリに反映し、現在のブランチと統合することができます。これにより、ローカルリポジトリの現在のブランチが最新の状態に更新されます。
ただし、pullは単純な操作ではなく、コンフリクト(競合)が発生する可能性があるため、注意が必要です。競合が発生した場合、手動で解決する必要があります。そのため、pullを実行する前に、現在のブランチが正しいことを確認し、競合を避けるためにコミットするなどの作業を行うことが推奨されます。
5.リモートリポジトリを管理する
git remote
ローカルのブランチ一覧を表示する。
# リモートリポジトリ名だけ表示
$ git remote
# リモートリポジトリのアドレスも表示
$ git remote -v
ローカルにリモートリポジトリのアドレスを登録する。(<remote-name> にはoriginなどを指定する)
# HTTPの場合
$ git remote add <remote-name> <remote-url>
# SSH接続の場合
$ git remote add <remote-name> git@github.com:<github-username>/<repository-name>.git
ローカルに登録済みのリモートリポジトリのアドレスを変更する。
$ git remote set-url <remote-name> <remote-address>
ローカルに登録済みのリモートリポジトリに接続し、詳細情報を表示する。
$ git remote show <remote-name>
ローカルに登録済みのリモートリポジトリの名前を変更する。
$ git remote rename <remote-name> <new-remote-name>
ローカルに登録済みのリモートリポジトリの情報を削除する。
$ git remote rm <remote-name>