GitCommand - poramal/VuePractice GitHub Wiki

Gitコマンド

初期設定

バージョン確認

git --version

ユーザー設定

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

ユーザー設定確認

git config --global --list

クローン

通常のクローン

# カレントディレクトリにリモートリポジトリ名のディレクトリを作成
git clone リモートリポジトリURL

# カレントディレクトリに任意のディレクトリ名を作成
git clone リモートリポジトリURL ディレクトリPATH

クローンのオプション

# クローンして特定のブランチをワーキングツリーに展開(通常はmasterが展開)
git clone -b ブランチ名 リモートリポジトリURL
git clone -b ブランチ名 --single-branch リモートリポジトリURL

# origin以外のリモート名を指定してクローン
git clone -o origin以外のリモート名 リモートリポジトリURL

# ベアリポジトリ(ワーキングディレクトリを持たないリポジトリ)としてクローン
git clone --bare リモートリポジトリURL

# ミラーとしてクローン
git clone --mirror リモートリポジトリURL

# 最新の履歴だけクローン
git clone --depth 1 リモートリポジトリURL

# サブモジュールも一緒にクローン
git clone --recursive リモートリポジトリURL

リモートリポジトリ

リモートリポジトリ確認

# 簡易
git remote

# 詳細
git remote -v

リモートリポジトリ追加

git remote add リモート名 リモートリポジトリURL

リモートリポジトリURL変更

git remote set-url リモート名 新リモートリポジトリURL

リモートリポジトリ名変更

git remote rename 旧リモート名 新リモート名

リモートリポジトリ削除

git remote remove リモート名

ブランチ

ブランチ作成

git branch 新規ブランチ名

ブランチ切替

git checkout 既存ブランチ名

ブランチ作成&ブランチ移動

git checkout -b 新規ブランチ名

ブランチ確認

# ローカルブランチ確認
git branch

# リモートブランチ確認
git branch -r

# 全ブランチ確認
git branch -a

# アスタリスク(`*`)がついているブランチが現在の作業ブランチ

ブランチ削除

# 通常削除
git branch -d 既存ブランチ名

# 強制削除
git branch -D 既存ブランチ名

現在のブランチ名を取得する

# contains オプションは、指定したコミットを含むブランチのみを表示する
git branch --contains=HEAD

# コミット指定を省略すると HEAD が指定されたとみなす
git branch --contains

コミット

ステージングへ追加

# ファイル単位
git add ファイル名

# 全て
git add .

ステージングに追加された変更をコミット

git commit -m "コミットコメント"

プッシュ

タグの作成をリモートに反映

# 指定したタグをリモートリポジトリに反映
git push リモート名 タグ名

# ローカルの全てのタグをリモートリポジトリへ反映
git push リモート名 --tags

タグの削除をリモートに反映

git push リモート名 :タグ名

フェッチ

# リモートブランチの最新情報を取得
git fetch

# リモートブランチの最新情報を取得(リモートブランチの削除も同期)
git fetch -p

# 指定したリモートブランチの最新情報を取得
git fetch リモート別名 リモートブランチ名

マージ

# 現在のブランチに、上流ブランチの最新の履歴をマージする
git merge FEACH_HEAD

プル

git fetchgit merge を連続で実行するショートハンド

# 現在のブランチに、指定したリモートブランチをマージする
git pull リモート別名 リモートブランチ名

# 現在のブランチに、上流ブランチの最新の履歴をマージする
git pull

# マージせずリベースする
git pull --rebase

# fast-forwardせず、必ずマージコミットを作成する
git pull --no-ff

# 現在のブランチに、上流ブランチの最新の履歴を強制マージする
git reset --hard

# 現在のブランチを1つ前のコミットに戻す
git reset --hard HEAD^

タグ

タグ作成

# 現在のブランチの直前のコミットに対してタグを作成
git tag タグ名

# 指定したブランチの最後のコミットに対してタグを作成
git tag タグ名 ブランチ名

# タグにコメントを付ける(対話式)
git tag -a タグ名

# タグにコメントを付ける(コマンド内)
git tag -a タグ名 -m "メッセージ"

タグ確認

git tag

タグ削除

git tag -d タグ名

タグリネーム

git tag 新タグ名 旧タグ名
git tag -d 旧タグ名

過去のコミットに遡ってタグを作成

git tag タグ名 コミットID

履歴・差異確認

変更確認

git status -s

変更履歴を確認

# ファイルの変更履歴
git log -p ファイル名

# フォルダの変更履歴
git log -p フォルダ名

変更差異確認

git diff

異なるブランチの同じファイルを比較

git diff ブランチ名A ブランチ名B ファイル名

異なるブランチの異なるファイルを比較

git diff ブランチ名A:ファイル名A ブランチ名B:ファイル名B

コミット履歴

git log --oneline --decorate --graph --branches --tags --remotes

# --oneline: 1commit 1行のみログ表示  
# --decorate: branch名、tag名などの別名を表示  
# --graph: revision graphを表示  
# --branches: 他のbranchのlogも表示  
# --tags: tagを表示  
# --remotes: remote branchなどを表示

vscode拡張:Git historyを入れるとよい?

特定の行がいつ変更されたか

git blame ファイル名

vscode拡張:GitLensを入れたほうが良い?

Stash

参考 : https://qiita.com/fukajun/items/41288806e4733cb9c342

変更ファイルを退避(コミット済のファイルは退避されない)

git stash save

# saveは省略可

退避中のファイルを確認

# リスト表示
git stash list

# 変更内容も見たい場合
git stash list -p

# 各変更について詳細に見たい場合
git stash show "stash名"

# 実行結果
<stash名>: WIP on <stashを行ったブランチ名>: <ハッシュ> <コミットコメント>

変更内容を復活

git stash apply "stash名"

stashの削除

git stash drop "stash名"

変更内容の復活とstashの削除を同時に行う

git stash pop "stash名"

リポリジトリの複製

複製元のリモートリポジトリからクローン

git clone --mirror リモートリポリジトリURL

リモートリポリジトリURLを複製先リモートリポリジトリURLに変更

git remote set-url リモート名 複製先リポリジトリURL

複製先のリモートリポジトリにプッシュ

git push --mirror リモート名
⚠️ **GitHub.com Fallback** ⚠️