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