Gitに関する個人用メモ。
#全体の流れ
作業領域(ワーキングツリー)
↓
ステージング領域(インデックス)
↓
ローカルリポジトリ
↓
リモートリポジトリ(GitHub等)
#作業領域→ステージング領域
$ git add <ファイル名>
指定したファイルをステージング領域に追加。
$ git add .
変更されたファイルや新規作成されたファイルを、一括でステージング領域に追加。
$ git rm <ファイル名>
ファイルの削除をステージング領域に記録。
#ステージング領域→ローカルリポジトリ
$ git commit
ステージング領域のファイルを、ローカルリポジトリに登録(コミット)する。コマンド実行後にコメントの入力を求められる。
$ git commit -m "コメント"
コミットとコメント入力を同時に行う。
#ローカルリポジトリ→リモートリポジトリ
- リモートリポジトリ(GitHub等)のURL取得
- ローカルリポジトリからプッシュ
の流れで行う。
##リモートリポジトリのURL取得
$ git remote add origin <リポジトリのURL>
originは任意の文字で良い。URLをoriginに格納するイメージ。
##ローカルリポジトリからプッシュ
$ git push origin master
masterは、リモートリポジトリのブランチ名を表す。
origin(=リポジトリURL)/master(=ブランチ名) にファイルを格納するイメージ。
#リモートリポジトリ→ローカル にファイルを持ってくる
- ローカルリポジトリが存在していない場合
- ローカルリポジトリが既に存在する場合
でやり方が異なる。
##ローカルリポジトリが存在していない場合
$ git clone <URL>
これにより、ローカルリポジトリが作成される。
URLの後にディレクトリ名を指定すると、指定した名前で作成される。
##ローカルリポジトリが既に存在する場合
$ git remote add origin <URL>
$ git pull origin master
こちらは、他の人が更新したファイル等、必要なものだけ持ってくるイメージ。
(因みに、空のディレクトリを作成後に$ git init
して、その後に上のコマンドを実行すると$ git clone
と同じ結果になる。)
#今の状態を確認する
$ git status
#Branch
##Branchの作成
$ git checkout -b <ブランチ名>
この場合、ブランチ作成と同時に移動する。
単に作成する場合は下記。
$ git branch <ブランチ名>
##Branchの一覧表示
$ git branch
##Branchの移動
$ git checkout <ブランチ名>
##Branchの削除
$ git branch -d <ブランチ名>
##Branchのマージ
$ git merge <ブランチ名>
#commitの履歴を見る(ローカルリポジトリ)
$ git log
基本形
$ git log --oneline
一行で表示する
$ git log -n 3
数を指定して表示(新しい順)
$ git log -p
差分を表示する
$ git log -p <ファイル名>
ファイルの差分を表示する
#差分の確認
##作業領域とステージング領域の差分
$ git diff
##ステージング領域とローカルリポジトリの差分
$ git diff HEAD
#リモートリポジトリの確認、変更
##リモートリポジトリの名前とURLを表示
$ git remote -v
##リモートリポジトリのURLを変更
$ git remote set-url origin <URL>
#Gitの管理対象からの除外
- まだGitの管理対象ではない場合
- 既にGitの管理対象となっている場合
- 既にGitの管理対象となっており、ファイルの物理削除も行う場合
で、少々手順が異なる。
##まだGitの管理対象ではない場合
.gitignore
ファイルを作成し、対象外にしたいファイルやディレクトリを記載する。
##既にGitの管理対象となっている場合
.gitignore
ファイルへの記入+以下のコマンドを実施
$ git rm --cached <ファイル名>
-r
オプションを付けるとディレクトリを対象にできる。
##既にGitの管理対象となっており、ファイルの物理削除も行う場合
$ git rm <ファイル名>
この場合ファイル自体が無くなるので、.gitignore
ファイルへの記載は不要。
また、-r
オプションを付けるとディレクトリを対象にできる。
#変更の取り消し
この方の説明が非常に分かり易い。
https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe