【Git】Gitコマンド一覧 及び 組み合わせ一覧

Git
  1. ■ 主の PC環境一覧
  2. ■ 初めに
  3. ■ Gitコマンド
    1. $ git status:差分ファイルを表示
    2. $ git log:コミット履歴(ログ)表示
    3. $ git branch:ブランチ操作
    4. $ git add:コミット対象のファイルをステージング
    5. $ git commit:ステージングした差分情報を履歴として保存
    6. $ git fetch:リモートの最新履歴をローカルへ取得"するだけ"(HEADに保存される)
    7. $ git merge:特定のブランチを結合
    8. $ git cherry-pick:特定のコミットを取り込み
    9. $ git push:ステージングした差分情報をリモートへ更新(アップロード)
    10. $ git pull:リモートの最新実装をローカルへ取得し結合「$ git fetch」+「$ git merge」
    11. $ git checkout:ブランチ切り替え、作成及び切り替え、変更取り消し
    12. $ git stash:ステージング前の差分ファイルを退避
    13. $ git revert:特定のコミットを打ち消し
    14. $ git reset:特定のコミット位置まで巻き戻し
    15. $ git clean:未追跡のファイル(Untracked files)及びディレクトリを削除
  4. ■ Gitコマンド組み合わせ
    1. ワークツリーでの差分をリモートにアップロードする場合
    2. 作業中にリモート上で更新(差分)を取り込まないといけない場合
    3. リモートで作成されたブランチに切り替える場合
    4. 特定のコミットまで巻き戻しリモートを強制的に更新する場合
  5. ■ 最後に

■ 主の PC環境一覧

OS:Windows11
CPU:Intel® Core™ i9 13900KF
Memory:64GB
GPU:NVIDIA® GeForce RTX™ 3070 8GB


■ 初めに

日々の開発作業で効率的に作業を進めるためには、正しい Gitコマンド及びの組み合わせが重要です。
この記事では、実践的なテクニックやタイムセーバーとなるコマンドの連携について探っていきます。初心者の方からベテランの方まで、シームレスな作業フローの構築をお手伝いさせていただきます。


■ Gitコマンド

$ git status:差分ファイルを表示

$ git status

### 変更差分なし
# On branch <ブランチ名>
# Your branch is up to date with 'origin/<ブランチ名>'.
# 
# nothing to commit, working tree clean

### 上部:ステージング済み / 下部:未ステージング
# On branch <ブランチ名>
# Your branch is up to date with 'origin/<ブランチ名>'.
# 
# Changes to be committed:
#   (use "git restore --staged <file>..." to unstage)
#         modified:   <該当のファイル名>
# 
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git restore <file>..." to discard changes in working directory)
#         modified:   <該当のファイル名>

$ git log:コミット履歴(ログ)表示

$ git log

# commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Author: noanoachan <example@example.com>
# Date:   Sat Aug 26 19:11:48 2023 +0900

#     add: xxxxxを追加

$ git branch:ブランチ操作

ブランチ作成

$ git branch <ブランチ名>

ブランチ名を変更

$ git branch -m <旧ブランチ名> <新ブランチ名>

ブランチ削除

$ git branch -d <ブランチ名>

ブランチ強制削除

$ git branch -D <ブランチ名>

$ git add:コミット対象のファイルをステージング

全ての差分ファイルをステージング

$ git add .

任意のファイルのみ差分をステージング

$ git add <任意のファイルまたはフォルダ>

$ git commit:ステージングした差分情報を履歴として保存

$ git commit

差分情報の履歴にコメント付与

$ git commit -m "<コメント>"

// 3行名に詳細を記載する場合
$ git commit -m "<コメント>" -m "<自動的に 2行目は「空行」となり 3行目に挿入される>"

$ git fetch:リモートの最新履歴をローカルへ取得”するだけ”(HEADに保存される)

$ git fetch

リモートで削除され、ローカルに残っているブランチを削除

$ git fetch --prune

# From <リポジトリのアドレス>
#  - [new]             (none)     -> origin/<ブランチ名>
#  - [deleted]         (none)     -> origin/<ブランチ名>
#  - [deleted]         (none)     -> origin/<ブランチ名>

$ git merge:特定のブランチを結合

$ git merge <ブランチ名>

$ git cherry-pick:特定のコミットを取り込み

$ git cherry-pick <コミットID>

$ git push:ステージングした差分情報をリモートへ更新(アップロード)

$ git push

強制プッシュ

$ git push -f

// リモートブランチを指定して強制プッシュをする場合
$ git push -f origin <リモートブランチ名>

まだリモートに存在しないローカルブランチをアップロードする場合

$ git push -u origin <ローカルブランチ名>

$ git pull:リモートの最新実装をローカルへ取得し結合「$ git fetch」+「$ git merge」

$ git pull

リモートにある特定のブランチを指定して結合

$ git pull origin <リモートブランチ名>

強制プッシュ

$ git push -f

まだリモートに存在していないローカルブランチをアップロードする場合

$ git push -u origin <ブランチ名>

$ git checkout:ブランチ切り替え、作成及び切り替え、変更取り消し

ブランチ切り替え

差分がある状態で実行するとエラーとなるため「退避」もしくは「取消」をおこなってから実行

$ git checkout <ブランチ名>

ローカルで新規ブランチを作成し切り替え

$ git checkout -b <ブランチ名>

ローカルでの差分を取り消し

// 全て取り消し
$ git checkout -- .

// 任意のファイルのみ取り消し
$ git checkout -- <ファイル名>

// 任意のディレクトリ内を全て取り消し
$ git checkout -- <ディレクトリ名>

$ git stash:ステージング前の差分ファイルを退避

// 全ての差分ファイルを退避
$ git stash

// 任意の差分ファイルのみを退避
$ git stash <ファイル名>

// 追跡対象外(新規作成ファイル 等)も含む差分を退避
$ git stash -u

退避にコメントを付与

// 非推奨
$ git stash save "<コメント>"

// 推奨
$ git stash push -m "<コメント>"

任意のファイルのみ退避

// 特定のファイルのみを退避
$ git stash push -m "<コメント>" -- <ファイル名> 

//  特定のファイル複数を退避
$ git stash push -m "<コメント>" -- <ファイル名_1> <ファイル名_2> <ファイル名_3>

// ワイルドカード(*)を使用して一括退避
$ git stash push -m "<コメント>" -- *.ext

退避リストを表示(最新の退避リスト番号は「0」)

$ git stash list

退避した差分を残したまま元に戻す

// 最新の退避を戻す
$ git stash apply

// 指定した退避リストから戻す
$ git stash apply stash@{リスト番号}

退避した差分を削除して元に戻す

// 最新の退避を戻す
$ git stash pop

// 指定した退避リストから戻す
$ git stash pop stash@{リスト番号}

退避したファイルを参照

// N = 退避リスト番号
git stash show stash@{N}

$ git revert:特定のコミットを打ち消し

$ git revert <コミットID>

打ち消し後にコミットを作成しない場合

複数のコミットを打ち消し後にまとめてコミットする場合に有効

$ git revert -n <コミットID>

打ち消し時にコミットメッセージを編集しない場合(自動的に記載されたコミットメッセージが採用)

$ git revert --no-edit <コミットID>

打ち消し時のコミットメッセージを編集(デフォルト)

$ git revert -e <コミットID>

$ git reset:特定のコミット位置まで巻き戻し

コミットを巻き戻し変更を加えたファイルはそのままステージング状態に戻す

$ git reset --soft <コミットID>

コミットを巻き戻し変更を加えたファイルはそのままステージング状態からも戻す

$ git reset --mixed <コミットID>

コミットを巻き戻し変更を加えたファイル自体も元に戻す (削除したファイルも復活)

$ git reset --hard <コミットID>

上記、コミット取り消しコマンドで使用する上で「コミットID」を使用しない方法
「^ (キャレット)」の数分だけ現在地点から戻すことができる。(コミットIDを使用する方が安全)

// 直前の状態へ戻す
$ git reset <オプション> HEAD^
 
// 3つ前の状態へ戻す
$ git reset <オプション> HEAD^^^

誤って巻き戻してしまったコミットを元に戻す場合

$ git reset --hard ORIG_HEAD

$ git clean:未追跡のファイル(Untracked files)及びディレクトリを削除

外部で変更された環境を結合する場合新規ファイル(未追跡)を作成した際後から不要になって取り消したい場合に使用
追跡対象のファイルやディレクトリであれば「checkout」や「reset」コマンドで取り消しが可能だが、未追跡の場合は『clean』コマンドを使用

未追跡のファイル(Untracked files)を削除

$ git clean -f

未追跡のディレクトリを削除

$ git clean -df

削除されるファイル及びディレクトリを確認

// 削除されるファイル確認
$ git clean -n

// 削除されるディレクトリ確認
$ git clean -nd

■ Gitコマンド組み合わせ

ワークツリーでの差分をリモートにアップロードする場合

名前説明
ワーキングツリー実際に作業している場所(ディレクトリ)
インデックスリポジトリにコミットする準備をするための場所
ステージングコミットしたファイルを指定する作業
「ワーキングツリー」から「インデックス」への反映
// ステージング
$ git add .

// コミット
$ git commit -m "<コメント>"

// アップロード
$ git push

作業中にリモート上で更新(差分)を取り込まないといけない場合

作業開始後に同様のファイルがリモート上で更新されワークツリーでも変更している場合

// 変更差分を退避
$ git stash

// リモートの最新を結合
$ git pull

// 退避したファイルを戻す(退避データを残す場合)
$ git stash apply
// 退避したファイルを戻す(退避データを削除する場合)
$ git stash pop

リモートで作成されたブランチに切り替える場合

// リモートの最新を取得(且つリモートで削除されたブランチを削除)
$ git fetch --prune

// ブランチ確認
$ git branch -a

// ブランチ切り替え
$ git checkout <ブランチ名>

特定のコミットまで巻き戻しリモートを強制的に更新する場合

// コミットログを表示しコミットIDを取得
$ git log

// 特定のコミットID位置まで巻き戻し
$ git reset --hard <コミットID>

// 巻き戻した位置をリモートへ強制的にアップロード(反映)
$ git push -f origin <ブランチ名>

■ 最後に

Gitの力を最大限に活用して、効率的でスムーズな開発を実現しましょう


comment 📝

タイトルとURLをコピーしました