Gitとは
- ファイルのバージョンを管理するために用いる
ローカルは3つのエリアに分かれている
- ワークツリー (ファイルを変更する作業場)
↓ git add 追加
- ステージ (コミットする変更を準備)
↓ git commit コミット
- リポジトリ (スナップショットを記録)
Gitのデータ構造のまとめ
- リポジトリに「圧縮ファイル」 「ツリー」 「コミット」 ファイルを作成することでデータを保存している
- コミットが親コミットを持っているので変更履歴を辿れる
- Gitの本質はデータを圧縮して、スナップショットで保存していること
基本コマンド
git add
ステージングに追加
- git add [ファイル名]
- git add . (すべての変更を追加)
git commit
リポジトリに追加 → いつ誰がなんのために追加したのかの情報がついてくる
- git commit
- git commit -m "メッセージ"
- git commit -v (変更したコードの内容も見える)
commit メッセージの書き方
-
簡単に書くとき
- 一行で簡潔に書く
-
正式に書くとき (チームでコードを書くなら)
- 1行目 変更内容の要約
- 2行目 空行
- 3行目 変更した理由
-
プレフィックスをつける (レビューがやりやすい)
git status
- 主にgit add, git commit 前に確認する
- 変更されたファイルを確認してくれるコマンド
git diff
どんな変更をしたのか確認をするコマンド
- git add 前に行う
- git diff
- git diff <ファイル名>
- git add 後に行う
- git diff --staged
git log
変更履歴を確認する
git logを実装したらqで元に戻れる
- git log
-
git log --oneline
- 一行で変更履歴を表示する
-
git log -p <ファイル名>
- ファイルの変更差分を表示する
-
git log -n <コミット数>
- 表示するコミット数を制限する
- 表示するコミット数を制限する
git rm <ファイル名>
ファイルの削除を記録
-
リポジトリとローカルのファイルごと削除
- git re <ファイル名>
- git re -r <ディレクトリ名>
-
リポジトリのファイルだけ削除
- git rm --cached <ファイル名>
git push
ローカルリポジトリの内容をリモートリポジトリに送る
- git push <リモート名> <ブランチ名>
コマンドにエイリアスはつけるべき
付けておくと入力が楽になる
- git config --global alias.ci commit
- git config --global alias.st status
- git config --global alias.br branch
- git config --global alias.co checkout
上記のコマンドで
- git commit = git ci
- git status = git st
- git branch = git br
- git checkout = git co
と同じ意味になる
ワークツリーのファイルへの変更を取り消す
- git checkout -- <ファイル名>
- git checkout -- <ディレクトリ名> // 全変更を取り消す
- git checkout --
ステージした変更を取り消す
- git reset HEAD <ファイル名>
- git reset HEAD <ディレクトリ名> // 全変更を取り消す
- git reset HEAD .
HEAD = 最新のコミット
直前のコミットをやり直す
- git commit --amend
- git reset --soft HEAD^
リモートリポジトリを新規追加する
- git remote add <リモート名> <リモートURL>
リモートから情報を取得する (フェッチ)
- git fetch <リモート名>
リモートから情報を取得してマージする(pull)
- git pull <リモート名> <ブランチ名>
これは下記コマンドと同じこと
- git fetch <リモート名> <ブランチ名>
- git merge <リモート名> <ブランチ名>