基本的コマンドと操作

基本的コマンドと操作




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>