ローカルリポジトリの新規作成
git init
Gitリポジトリのコピーを作成する
リモートリポジトリからローカルへ
git clone <リポジトリ名>
変更をステージに追加
git add <ファイル名>
git add <ディレクトリ名>
git add .
変更を記録する(コミット)
ステージからリモートリポジトリへスナップショットを記録
git commit
# CLI上でコミットメッセージを書ける。
git commit -m "<メッセージ>"
# 変更内容の差分を表示
git commit -v
#空のコミット
git commit --allow-empty -m "<メッセージ>"
現在の変更状況を確認する
git status
変更差分を確認する
# git addする前の変更分
git diff
git diff <ファイル名>
# git addした後の変更分
git diff --staged
変更履歴を確認する
git log
# 一行で表示する
git log --oneline
# ファイルの変更差分を表示する
git log -p index.html
# 表示するコミット数を制限する
git log -n <コミット数>
# グラフにして表示する
git log --graph
ファイルの削除を記録する
# ファイルごと削除
git rm <ファイル>
git rm -r <ディレクトリ>
# ファイルを残したいとき
git rm --cached <ファイル>
ファイルの移動を記録する
git mv <旧ファイル> <新ファイル>
# 以下のコマンドと同じ
mv <旧ファイル> <新ファイル>
git rm <旧ファイル>
git add <新ファイル>
リモートリポジトリ(GitHub)を新規追加する
git remote add origin https://github.com/<ユーザ名>/<リポジトリ名>.git
リモートリポジトリ(GitHub)へ送信する
ローカルリポジトリからリモートリポジトリへ
git push <リモート名> <ブランチ名>
git push origin main
コマンドにエイリアスを付ける
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.co commit
管理しないファイルをGitの管理から外す
.gitignoreファイル
# 指定したファイルを除外
index.html
# ルートディレクトリを指定
/root.html
# ディレクトリ以下を除外
dir/
# /以外の文字列にマッチ「*」
/*/*.css
ファイルへの変更を取り消す
ローカル環境のワークツリー内の変更を取り消す。
git checkout -- <ファイル名>
git checkout -- <ディレクトリ名>
#全変更を取り消す
git checkout -- .
ステージした変更を取り消す
ステージした状態を消すだけなので、ワークツリー内の変更はない。
git reset HEAD <ファイル名>
git reset HEAD <ディレクトリ名>
# 全変更を取り消す
git reset HEAD .
直前のコミットをやり直す
リモートリポジトリにpushしたコミットはやり直してはいけない。
git commit --amend
リモートを表示する
git remote
# 対応するURLを表示
git remote -v
リモートリポジトリを新規追加する
git remote add <リモート名> <リモートURL>
git remote add hoge https://github.com/<ユーザ名>/<リポジトリ名>.git
リモートから情報を取得する(フェッチ)
fetch→ローカルリポジトリ→merge→ワークツリー
git fetch <リモート名>
git fetch origin
リモートから情報を取得してマージする(プル)
git pull <リモート名> <ブランチ名>
git pull origin main
# 上記コマンドは、省略可能
git pull
#同じ
git fetch origin main
git merge orgin/main
リモートの詳細情報を表示する
git remote show <リモート名>
git remote show origin
リモートを変更・削除する
# 変更する
git remote rename <旧リモート名> <新リモート名>
git remote rename hoge new_hoge
# 削除する
git remote rm <旧リモート名> <新リモート名>
git remote rename new_hoge
ブランチを追加する
git branch <ブランチ名>
git branch feature
ブランチの一覧を表示する
git branch
# 全てのブランチを表示する
git branch -a
ブランチを切り替える
git checkout <既存のブランチ名>
git checkout feature
#ブランチを新規作成して切り替える
git checkout -b <新ブランチ名>
変更履歴をマージする
git merge <ブランチ名>
git merge <リモート名/ブランチ名>
git merge origin/main
ブランチを変更・削除
# 作業しているブランチ名を変更
git branch -m <ブランチ名>
git branch -m new_branch
# ブランチを削除する
git branch -d <ブランチ名>
git branch -d feature
#強制削除する
git branch -D <ブランチ名>
リベースで履歴を整えた形で変更を統合する
ブランチの基点となるコミットを別のコミットに移動する。
git rebase <ブランチ名>
プル型のリベース
mergeのコミットが残らないので、GitHubの内容を取得したいときだけ使う方法。
リモートリポジトリ→fetch→ローカルリポジトリ→rebase→ワークツリー
git pull --rebase <リモート名> <ブランチ名>
git pull --rebase origin main
プルをリベース型に設定する
git config --global pull pull.rebase true
# mainブランチでgit pullするときだけ
git config branch.main.rebase true
複数のコミットをやり直す
git rebase -i <コミットID>
git rebase -i HEAD~3
pick 3ee3651 add:file
pick 7bbf693 Create README.md
pick 366aa90 add:dir
# やり直したいcommitをeditにする。
edit 3ee9251 add:chapter3.3
pick 7bbe693 Create README.md
pick 366aa32 add:file
# やり直したら実行する
git commit --amend
# 次のコミットへ進む(リベース完了)
git rebase --continue
コミットを並び替える・削除する
git rebase -i HEAD~3
pick 3ee3651 add:file
pick 7bbf693 Create README.md
pick 366aa90 add:dir
# 削除したり、順番を入れ替えたりできる。
pick 7bbf693 Create README.md
pick 3ee3651 add:file
コミットをまとめる
git rebase -i HEAD~3
pick 3ee3651 add:file
pick 7bbf693 Create README.md
pick 366aa90 add:dir
# コミットを1つにまとめる。
squash 3ee3651 add:file
squash 7bbf693 Create README.md
pick 366aa90 add:dir
コミットを分割する
git rebase -i HEAD~3
pick 3ee3651 add:file
pick 366aa90 add:dir
pick 7bbf693 README.mdとindex.htmlを追加
# コミットを1つにまとめる。
pick 3ee3651 add:file
pick 366aa90 add:dir
edit 7bbf693 README.mdとindex.htmlを追加
git reset HEAD^
git add README.me
git commit -m 'READEME.meを追加'
git add index.html
git commit -m 'index.htmlを追加'
git rebase --continue
タグの一覧を表示する
git tag
タグを作成する
git tag -a [タグ名] -m "[メッセージ]"
git tag -a 20230704 -m "version 20230704"
# 軽量バージョン
git tag [タグ名]
git tag -a 20230704
# 後からタグ付けをする
git tag [タグ名] [コミット名]
8a6hd8f
タグのデータを表示する
git show [タグ名]
git show 20230704
タグをリモートリポジトリに送信する
git push [リモート名] [タグ名]
git push origin 20230704
# タグを一斉送信
git push origin --tags
作業を一時避難する
変更分をstashに一時避難する。
git stash
git stash save
避難した作業を確認する
git stash list
避難した作業を復元する
# 最新の作業を復元する
git stash apply
# stageの状況も復元する
git stash apply --index
# 特定の作業を復元する
git stash apply [スタッシュ名]
git stash apply stash@{1}
避難した作業を削除する
# 最新の作業を削除する
git stash drop
# 特定の作業を削除する
git stash drop [スタッシュ名]
git stash drop stash@{1}
#全作業を削除する
git stash clear
コンピュータにある全てのリポジトリ用にGitユーザ名、メールアドレスを設定する
# ユーザ名を設定
git config --global user.name "<ユーザ名>"
# メールアドレスを設定
git config --global user.email "<メールアドレス>"
#確認方法
git config --global user.name
git config --global user.email
単一のリポジトリ用にGitユーザ名、メールアドレスを設定する
# ユーザ名を設定
git config user.name "<ユーザ名>"
# メールアドレスを設定
git config user.email "<メールアドレス>"
#確認方法
git config user.name
git config user.email
既存のリモートリポジトリを新しいリモートリポジトリへ変更する。
git remote set-url origin <新しいリモートリポジトリURL>