gitコマンドチートシート

  1. gitコマンドチートシート
    1. git fetch,git pull
    2. リモートリポジトリ参照(git remote)
    3. リモートリポジトリ追加(git remote add)
    4. リモートリポジトリ削除(git remote rm)
    5. リモートブランチを削除(git push --delete)
    6. リモートブランチを削除(git push :ブランチ名)
    7. リモート追跡ブランチを削除する(git fetch --prune)
    8. リモート追跡ブランチを削除する(git remote prune origin)
    9. 上流ブランチを設定する(git push -u)
    10. 上流ブランチを表示する(git branch -vv)
    11. ローカルブランチを作成する(git branch ブランチ名)
    12. ローカルブランチ一覧を表示する(git branch)
    13. ローカルブランチとリモートブランチ一覧を表示する(git branch -a)
    14. ブランチ作成と切り替え(git checkout -b ブランチ名)
    15. ローカルブランチを削除する(git branch -d)
    16. ローカルブランチを削除する(git branch -D)
    17. ブランチ切り替え(git checkout ブランチ名)
    18. 差分を表示する(git diff コミットID コミットID)
    19. ローカルブランチをリモートへ送信する(git push)
    20. git の作業ブランチから新たに作業ブランチを作成する
    21. git stash の使い方
    22. 初期化(git init)
    23. 初期化の取り消し(ディレクトリ削除)
    24. まだコミットしていない作業ツリー(ワークツリー)の変更を取り消す(git checkout .)
    25. まだコミットしていない作業ツリー(ワークツリー)の変更を取り消す(git restore .)
    26. ステージングエリアのaddを取り消す(git restore --staged .)
    27. 直前のcommit取り消し(git reset --soft)
    28. 直前のcommit取り消し(git reset --hard)
    29. 直前のcommit取り消し(git reset --mixed)
    30. master→mainへブランチ名変更(git branch -m)
    31. ファイルの行ごとのコミットID,コミッターを調べる(git blame ファイル名)
    32. 現在適用されているGitの設定一覧を表示(git config -l)
    33. git cloneでブランチ指定してcloneする(git clone -b)
    34. git cloneでsubmodulesの設定も行う
    35. git push済みのコミットを–amendで書き換えて、1つのコミットとして更新する(git commit --amend --no-edit)
    36. git pushする前のローカルリポジトリのコミットを--amendで書き換えて、1つのコミットとして更新する(git commit --amend --no-edit)
    37. gitの操作履歴から操作を元に戻す(git reflog)
    38. ブランチの根(ベース)を付け替える(git rebase)
    39. git pull時に--rebase指定する(git pull --rebase)
    40. 指定したコミットをブランチに取り込む(git cherry-pick)
    41. 指定したコミットをブランチに取り込むがコミットしない(git cherry-pick -n)
    42. httpsでユーザ名、パスワードを保存する
    43. /mnt/c/Program Files/Git/mingw64/libexec/git-core/git-credential-manager.exe: not found
    44. 関連

gitコマンドチートシート

gitコマンドを纏めました。

git fetch,git pull

git fetch とgit pull コマンドの違い」を参照ください。

リモートリポジトリ参照(git remote)

git remoteまたはgit remote -vでリモートリポジトリを表示できます。

$ git remote -v
origin https://github.com/takahashi-h5/xxx.git (fetch)
origin https://github.com/takahashi-h5/xxx.git (push)

リモートリポジトリ追加(git remote add)

git remote add originでリモートリポジトリを追加します。(originでなくても良い)

$ git remote add origin https://github.com/takahashi-h5/xxx.git

これでgit remote -vすればリモートリポジトリ参照することが出来ます。

※githubで予めリモートリポジトリを作成しておきます

gitコマンドチートシート

リモートリポジトリ削除(git remote rm)

リモートリポジトリを削除するにはgit remote rm originでリモートリポジトリを削除します。

$ git remote rm origin

リモートブランチを削除(git push --delete)

`–delete`オプションを使用してリモートにあるfeatureブランチを削除します。リモート追跡ブランチも削除されます。

$ git push --delete origin ブランチ名

branch保護されている場合は、`remote: error: GH013: Repository rule violations found for refs/heads/ブランチ名.`とエラーが出て削除する事はできません。

リモートブランチを削除(git push :ブランチ名)

:ブランチ名を指定してリモートにあるfeatureブランチを削除します。リモート追跡ブランチも削除されます。

$ git push origin :ブランチ名

リモート追跡ブランチを削除する(git fetch --prune)

共同開発しているブランチの場合、誰かがリモートブランチを削除すると、その他開発者の環境にはリモート追跡ブランチが残ってしまいます。

その場合、リモート追跡ブランチを削除するには

$ git fetch --prune

を実行します。

リモート追跡ブランチを削除する(git remote prune origin)

リモート追跡ブランチを削除するコマンドとして

$ git remote prune origin

でもリモート追跡ブランチを削除できます。

上流ブランチを設定する(git push -u)

上流ブランチを設定するには-uオプションを使用して

$ git push -u origin ブランチ名

を実行します。一度実行すると、リモートリポジトリ名(origin)の指定を省略することが出来ます。

上流ブランチを表示する(git branch -vv)

上流ブランチを表示するには

$ git branch -vv

を実行します。

ローカルブランチを作成する(git branch ブランチ名)

ブランチを作成するには

$ git branch ブランチ名

でブランチを作成することができます。

ローカルブランチ一覧を表示する(git branch)

ローカルブランチ一覧を表示するには

$ git branch

でローカルのブランチ一覧を表示することができます。

ローカルブランチとリモートブランチ一覧を表示する(git branch -a)

ローカルとリモートブランチ一覧を表示するには-a(all)を指定し

$ git branch -a
* main
  hoge
  remotes/origin/HEAD -> origin/main
  remotes/origin/hoge

でローカルとのリモートブランチ一覧を表示することができます。

`remotes/origin/xxx`は、正確にはリモート追跡ブランチと呼ばれます。

ブランチ作成と切り替え(git checkout -b ブランチ名)

ブランチを作成してそのブランチに切り替えるには

$ git checkout -b ブランチ名

で切り替えることができます。

既存ブランチを元にブランチ作成したい場合は以下のように設定します。

$ git checkout -b ブランチ名 既存ブランチ名

ローカルブランチを削除する(git branch -d)

gitでローカルブランチを削除するには

$ git branch -d ローカルブランチ名

とタイプします。

ローカルブランチを削除する(git branch -D)

gitでローカルブランチを強制的に削除するには

$ git branch -D ローカルブランチ名

とタイプします。まだマージしていないブランチなどを削除するには-Dオプションを使用する必要があります。

ブランチ切り替え(git checkout ブランチ名)

ブランチを切り替えるには

git checkout ブランチ名

で切り替えます。mainを指定すればmainブランチに切り替わります。

git checkout main

差分を表示する(git diff コミットID コミットID)

git diff コミットID コミットIDは、2つのコミット間の変更点(差分)を表示します。

$ git diff コミットID コミットID

ローカルブランチをリモートへ送信する(git push)

ローカルブランチをリモートへpushします。

$ git push リモートリポジトリ名 ローカルブランチ名:リモートブランチ名

ローカルブランチ名とリモートブランチ名が同じ名前の場合(実運用ではほぼ同じケースが多い)は、:リモートブランチ名は省略できます。

リモートリポジトリ名は、git remoteコマンドで、今設定されているリモートリポジトリ名を一覧表示します。

$ git remote
origin

リモートリポジトリ名はoriginなので、pushするには

git push origin ブランチ名

と実行します。

上流ブランチ(ローカルブランチに対応するリモートブランチ)を明示的に設定するには-u(--set-upstream)オプションを指定して

git push -u origin ブランチ名

と実行します。一度上流ブランチを設定すれば次回以降リモートリポジトリ名やブランチ名の指定が不要になり、`git push`だけでpushできます。

git の作業ブランチから新たに作業ブランチを作成する

作業ブランチで作業しているときに、さらにブランチを作成したい時があります。

$ git branch aaa

で作業していて、aaaからさらにブランチを作成したい場合は

$ git branch 新しいブランチ名

$ git checkout 新しいブランチ名

とすることで新しい作業ブランチを作成することができます。

上記を1コマンドで実行するには

$ git checkout -b 新しいブランチ名

と実行します。

git stash の使い方

git stash の使い方」を参照ください。

初期化(git init)

git initでgitのローカルリポジトリを作成します。カレントディレクトリに.gitフォルダが作成されます。

git init ディレクトリで指定したディレクトリをローカルリポジトリにすることが出来ます。

初期化の取り消し(ディレクトリ削除)

git initを取り消したい場合は.gitを削除します。

Windows

$ rmdir /s .git

Linux

$ rm -rf .git

まだコミットしていない作業ツリー(ワークツリー)の変更を取り消す(git checkout .)

まだコミットしていない作業ツリー(ワークツリー)の変更を取り消します。以下は変更した全ファイルが対象になります。※git restore .と同じです。

$ git checkout .

git addしてしまうとステージングエリアにコピーされるのでこのコマンドで変更は取り消せません。

引数に.を指定すると全ファイルとなります。ファイル名を指定する事も可能です。

gitコマンドチートシート

tortoise git

まだコミットしていない作業ツリー(ワークツリー)の変更を取り消す(git restore .)

作業ディレクトリの変更の取り消しはrestoreコマンドを使用します。以下は変更した全ファイルが対象になります。※git checkout .と同じです。

$ git restore .

引数に.を指定すると全ファイルとなります。ファイル名を指定する事も可能です。

$ git restore a.txt

ステージングエリアのaddを取り消す(git restore --staged .)

ステージングエリアのaddを取り消します。

$ git restore --staged .

引数に.を指定すると全ファイルとなります。ファイル名を指定する事も可能です。

直前のcommit取り消し(git reset --soft)

ローカルリポジトリの直前のcommitを取り消します。

$ git reset --soft HEAD~

`–soft`オプションを指定すると、ワークツリーとステージングエリアの内容は現在の状態のままHEADの位置を直前に移動します。

git resetイメージ

git resetイメージ

直前のcommit取り消し(git reset --hard)

ローカルリポジトリの直前のcommitを取り消します。

$ git reset --hard HEAD~

`–hard`オプションを指定すると、ワークツリーとステージングエリアの内容を破棄し、HEADの位置を直前に移動します。

git resetイメージ

git resetイメージ

直前のcommit取り消し(git reset --mixed)

ローカルリポジトリの直前のcommitを取り消します。

$ git reset --mixed HEAD~

--mixedオプション(git resetコマンドと同じ)を指定すると、ワークツリーの内容は現在の状態のまま、ステージングエリアの内容を破棄し、HEADの位置を直前に移動します。

git resetイメージ

git resetイメージ

HEAD~HEAD^がどこを指しているかよくわからなくなってしまった場合は

$ git rev-parse HEAD~

とするとコミットID(SHA1ハッシュ値)だけが表示されます。

HEAD~HEAD^については「GitのHEADと~(チルダ)と^(キャレット)」を参照下さい。

master→mainへブランチ名変更(git branch -m)

今までデフォルトブランチ名はmasterでしたが、2020/10/01からmasterからmainに名称が変わりました。

The default branch for newly-created repositories is now main - GitHub Changelog
The default branch name for new repositories is now main. To set a different default: For users, on the page For organiz...

既にmasterとなっている場合は以下コマンドで変更可能です。

git branch -m <既存ブランチ名> <新ブランチ名>コマンで、ブランチ名を変更することが出来ます。

$ git branch -m master main

ファイルの行ごとのコミットID,コミッターを調べる(git blame ファイル名)

ファイルの行ごとのコミットID、コミッターを調べるには以下コマンドを使用します。

$ git blame ファイル名

gitコマンドチートシート

現在適用されているGitの設定一覧を表示(git config -l)

現在適用されているGitの設定一覧を表示します。

$ git config -l
user.name=takahashi
user.email=takahashi@example.com
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url=https://~~~
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

設定には以下のレベルがあります。

  • system(PC全体)
  • global(ユーザ設定)
  • local(リポジトリ設定)

優先順位はlocal > global > systemの順になります。

git config -l --localとすると、localの設定のみフィルタ表示します。

git cloneでブランチ指定してcloneする(git clone -b)

git clone時にブランチ指定します。

$ git clone -b ブランチ名 リポジトリURL

ブランチ指定してリモートリポジトリをコピーしてローカルリポジトリを作成します。

git cloneでsubmodulesの設定も行う

git clone時にsubmodulesも一緒にpullする場合は--recurse-submodulesオプションを付けます。

git cloneしてからgit submodule update --init --recursiveコマンドと同じになります。

$ git clone --recurse-submodules https://~~

git push済みのコミットを–amendで書き換えて、1つのコミットとして更新する(git commit --amend --no-edit)

amendは「修正する/改定する」という意味になります。

既にgit push済みのコミットに対して、例えばコミット漏れしたファイルを追加したい場合、–amend、–no-editを使います。–no-editはコミットメッセージを変えずにそのまま上書きします。メッセージも変えたい場合は抜いてください。

$ git add コミット漏れしたファイル名
$ git commit --amend --no-edit

// 共同開発ブランチの場合
$ git push origin HEAD --force-with-lease

// 自分一人で開発しているブランチの場合
$ git push origin HEAD -f ※--force-with-leaseでも問題無し

-f--force)・・・リモートの状態を無視して強制上書きする
--force-with-lease・・・リモートが既に更新されていればpush拒否される

git pushする前のローカルリポジトリのコミットを--amendで書き換えて、1つのコミットとして更新する(git commit --amend --no-edit)

コミットした直後にコミット漏れしたファイルに気づいた時、新しいコミットを作らずに済みます。

$ git add コミット漏れしたファイル名
$ git commit --amend --no-edit

これで余計なコミットが増えません。

gitの操作履歴から操作を元に戻す(git reflog)

gitコマンドの操作履歴を表示します。

$ git reflog
02042f6 (HEAD -> main, tag: hoge) HEAD@{0}: reset: moving to 0204
b1fb9cf HEAD@{1}: commit (amend): amend test2
79d2b3e HEAD@{2}: commit: amend test
a151ad0 (tag: tag-sample) HEAD@{3}: reset: moving to HEAD
a151ad0 (tag: tag-sample) HEAD@{4}: merge bug-fix: Merge made by the 'ort' strategy.

次にgit reset --hardコマンドを実行します。

$ git reset --hard HEAD@{1}

これで指定した操作(HEAD@{1})を行った後の状態に戻ります。これはHEAD@{0}コマンドを実行する前の状態に戻すことを意味します。

ブランチの根(ベース)を付け替える(git rebase)

`git rebase`コマンドでコンフリクトを起こさないようにブランチの根(ベース)を付け替えます。

$ git rebase 付け替えたいブランチ名
Successfully rebased and updated refs/heads/ブランチ名

引数には、根(ベース)を付け替えたいブランチ名 or コミットID or HEADなどです。

Successfully~と出力されればrebase完了ですが、conflictしたら解決してgit add .git rebase --continueします。

rebaseイメージ

git rebaseするとコミット履歴を改変するので、既にリモートにpushしている場合は、強制pushする-fオプションが必要になります。

git pull時に--rebase指定する(git pull --rebase)

git pullする時にブランチの根(ベース)を付け替えます。

$ git checkout ブランチ名
$ git pull --rebase origin main

指定されたブランチの根(ベース)は付け替えられますが、mainブランチは古い状態のままとなるので注意が必要です。

git pull --rebaseイメージ

git pull –rebaseイメージ

$ git log --oneline --graph -a 
* c679fe4 (HEAD -> feature/001) feature commit
* fb99f4c (origin/main, origin/HEAD, main) Update a.txt

↓

$ git pull --rebase origin main
From github-work:user/xxxx
 * branch            main       -> FETCH_HEAD
Successfully rebased and updated refs/heads/feature/001.
$ git log --oneline --graph -a 
* 522357d (HEAD -> feature/001) feature commit
* 6666c1b (origin/main, origin/HEAD) Update remotes/origin/main ★ リモートの最新コミット
* fb99f4c (main) Update a.txt ★ ローカルの位置が古いまま

以下のように、mainでpullしてからブランチ移動してrebaseする流れの方がよく使われます。

$ git checkout main
$ git pull origin main
$ git checkout ブランチ名
$ git rebase main

指定したコミットをブランチに取り込む(git cherry-pick)

他ブランチのコミットを現在のブランチに取り込む(マージに似ている)には

$ git cherry-pick main

というように実行します。引数には、取り込みたいブランチ名 or コミットID or HEADなどです。

git cherry-pickイメージ

git cherry-pickイメージ

指定したコミットをブランチに取り込むがコミットしない(git cherry-pick -n)

git cherry-pick -nオプションを使用して他ブランチのコミットを現在のブランチに取り込むには

$ git cherry-pick -n main

というように実行します。引数には、取り込みたいブランチ名 or コミットID or HEADなどです。

-n(--no-commit)オプションを付けると、コミットは伸びません。

ワークツリーまで持ってきますがコミットはされないという特徴があります。

取り込んだ内容を少し修正したい場合などは-nオプションを付けます。

httpsでユーザ名、パスワードを保存する

cloneしたリポジトリ直下で以下コマンドを実行します。

$ git config credential.helper store

このコマンド以降git pushしたときにユーザ名、パスワードを入力すると、それ以降はキャッシュされます。

/mnt/c/Program Files/Git/mingw64/libexec/git-core/git-credential-manager.exe: not found

WSL2でgitコマンド実行するとこのエラーが出た場合、以下コマンドでcredential.helperの設定を変更します。

$ git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-wincred.exe"
Git Credential Manager Not Found on WSL2
Error Message/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe get: 1: /mnt/c/Program F...

 

git command

 

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

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