LoginSignup
0
0

Git でよく使う主要コマンド一覧

Last updated at Posted at 2022-06-22

記事内容

よく使用する git コマンドを備忘録も兼ねてまとめてみました。

git status

変更内容の確認するためのコマンド

git status

git diff

変更したファイルの差分を確認するためのコマンド

# add 前の変更を確認する場合
git diff

# add 後の変更を確認する場合
git diff --staged

# ローカルの developブランチと元となるリモートブランチの差分を確認する場合
git diff origin/develop

# ローカルの developブランチとリモートの masterブランチの差分を確認する場合
git diff develop origin/master

# リモートの developブランチとリモートの masterブランチの差分を確認する場合
git diff origin/develop origin/master
  • git statusとの違い
    • コマンドによって比較対象が異なる。
    • 具体的にどのような変更がされたのか確認できる。

git branch

ブランチ一覧を確認するためのコマンド

git branch

# リモートブランチを含んだブランチ一覧を確認する場合
git branch -a

ブランチ名の変更

git branch -m (旧ブランチ名) (新ブランチ名)

# 現在作業しているブランチ名を変更する場合
git branch -m (新ブランチ名)

ローカルブランチの削除

git branch -d (ブランチ名)

# 強制削除する場合
$ git branch -D (ブランチ名)

リモートブランチの削除

git push --delete origin (ブランチ名)

共同開発等で他のメンバーと共有している場合は注意が必要です。

git switch

ブランチを切り替えるためのコマンド

git switch (ブランチ名)

ブランチを新規作成し、作成したブランチに切り替える場合

git switch -c (ブランチ名) (ローカルに反映したいリモートブランチ名)

# 例) git switch -c dev origin/dev

リモートブランチをローカルブランチに反映する場合

git switch -c (ローカルブランチ名)

git stash

変更内容を一時退避させるためのコマンド

git stash push -m (メッセージ)

# 実行例
git stash push -m stashで変更内容を退避!

git commit とは違い、メッセージは クォーテーション「 "" 」で囲うとエラーになります。

退避させたスタッシュ一覧を確認する場合

git stash list

# 出力結果
stash@{0}: ...
stash@{1}: ...

現在作業しているブランチに退避させたスタッシュの内容を統合する場合

# 統合後もスタッシュを削除したくない場合
git stash apply stash@{スタッシュ番号}

# 統合後、スタッシュを削除する場合
git stash pop stash@{スタッシュ番号}

退避させたスタッシュを削除する場合

git stash drop stash@{スタッシュ番号}

git add

変更した内容を登録するためのコマンド

git add (ファイル名)

# 全てのファイルを追加する場合
git add .

git commit

git addで登録した変更内容をローカルリポジトリに登録(コミット)するためのコマンド

メッセージには、変更内容が分かる文言を記述します。

git commit -m "メッセージ"

add と commit を一括で行う場合

git commit -am "メッセージ"

異なるロジックの変更内容が存在する場合は、オススメできない方法です。

直前のコミットを変更する場合(コミットメッセージのみ変更可)

git commit --amend -m "メッセージ"

git push

リモートリポジトリの履歴を更新するためのコマンド

git push origin HEAD

# 下記とやっていることは一緒
git push origin (現在作業しているブランチ名)

HEADは、今現在作業しているブランチを指しています。

git fetch

リモートリポジトリの履歴を取得するためのコマンド

共同開発など他のメンバーの変更内容をローカルで参照したい時に使用します。

# 全ての履歴を取得したい場合
git fetch

# 特定ブランチのみ取得したい場合
git fetch (リモートリポジトリ名) (リモートブランチ名)

# 例) リモートリポジトリにある remoteブランチの履歴のみ取得したい場合
git fetch origin remote

git merge

他ブランチの履歴を現在作業しているブランチに統合するためのコマンド

git merge (ブランチ名)
マージする前の状態に戻す場合(※コンフリクトの編集をしていないときに限る)
git merge --abort

git pull

リモートリポジトリの更新内容を取得し、現在作業しているブランチに統合するためのコマンド

先ほど紹介したgit fetchgit mergeを同時に実行するコマンドという認識でOKです。

git pull (リモートリポジトリ名) (リモートブランチ名)

# 例) リモートリポジトリの remoteブランチを現在作業しているブランチに統合する場合
git pull origin remote

# 上記を fetchコマンドと mergeコマンドで実行した場合
git fetch origin remote
git merge origin/remote

コミット履歴を枝分かれさせたくない場合

git pull --rebase (リモートリポジトリ名) (リモートブランチ名)

参考記事 ↓

git pullを取り消したい場合

# git pull したブランチが、現在作業しているブランチにマージされた場合(かつ直前の状態に戻す場合)
git reset --hard HEAD@{1}

# マージが失敗(コンフリクト)した場合の取り消し方法
git merge --abort

git reset

pushしたコミットを取り消すためのコマンド

# 直前のコミットだけ取り消す場合
git reset --soft HEAD^

# 直前のコミットと変更内容も一緒に取り消す場合
git reset --hard HEAD^

# 2つ前のコミットと変更内容も一緒に取り消す場合
git reset --hard HEAD~2

git resetで取り消したコミットを復元する方法

# HEADが指しているコミット履歴を確認
git reflog

# 出力内容
71f4da2 (HEAD -> master) HEAD@{0}: reset: moving to HEAD~1
53f1se1 HEAD@{1}: xxxxx... # ← このコミットを復元したい

# 取り消したコミットの直前に戻す
git reset --hard HEAD@{1}
# もしくは ⬇️
git reset --hard ORIG_HEAD

# 再度、HEADが指しているコミット履歴を確認
git reflog

# 出力内容( reset で取り消したコミットを取り消して復元)
53f1se1 HEAD@{0}: xxxxx...

git revert

特定のコミットを元に戻すコマンド

  • 指定したコミット以降に行なわれた処理を全て戻すわけではない

マージコミットを取り消す場合

マージした二つのコミット(親)の内、どちらに戻すかを指定する必要がある。

# マージコミットの有無を確認
git cat-file -p { commit_id }

# 下記のようにparentが2つあればマージコミット
tree f1cabb208445a0cd15cb29f15b805100851f8dcb
parent b9466577c0c19af5605be40a4af90cfa37bdaf10
parent 84a1988999654e186f1ac42942befcaa2ce730ae
author xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
committer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 特定のコミットを取り消す
git revert { commit_id }

# マージコミットを取り消す場合
git revert -m 1 { commit_id }

git rebase

指定したコミットを作り直して、ログを掃除するためのコマンド

3つ前のコミットを修正する場合

1. コミット履歴を確認

$ git log --oneline --graph
* e52c85bcb8 (HEAD -> branch_name) テスト
* 1af223d5f6 フロント側の実装
* 05c9b42463 バック側の実装
* ...

2. 修正したいコミットを選択

git rebase -i HEAD~3 # 3つ前のコミット

3. テキストエディタが開き、1行目のpickの文字をeditに変更して保存・終了

  • 終了すると、修正するコミットがチェックアウトされた状態になる
edit 05c9b42463 バック側の実装 # pick => editに修正
pick 1af223d5f6 フロント側の実装
pick e52c85bcb8 テスト

4. ファイルを修正し、ステージングに上げてから修正内容を保存

commit --amend:直前のコミットを修正するためのコマンド

  • 使用用途
    • コミット後に追加で修正を行いたい
    • git addし忘れたファイルがある

プッシュ済みのコミットを修正してしまうと、git push -fを実行する必要があるので共有リポジトリの場合は注意が必要!

git add .
git commit --amend

5. コミットでの作業を終了
commitしただけだと、まだ修正内容が反映されないので、このコミットでの修正が完了したことを知らせている。

git rebase --continue

上記実行後、他のコミットで競合が発生した場合、競合箇所を修正後に下記コマンドを実行する。

この時、commitは必要ないので実行不要!

git add .
git rebase --continue

今までの作業を中止する場合

これまでのrebaseでの作業を無かった事にしてくれる。

git rebase --abort

rebase後で元に戻したい場合

rebase前のコミットはORIG_HEADという名前で残っているため、下記コマンドでrebase前の状態に戻すことができる。

git reset --hard ORIG_HEAD

git cherry-pick

特定のコミットを取り込みコマンド

git cherry-pick commit_id

複数取り込む場合

二つのコミットの間を「..」で繋げる。

git cherry-pick commit_id..commit_id

コミットしたくない場合

-nオプションを付ける。

git cherry-pick -n commit_id

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0