MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

【Git】3.Gitでよく使うコマンド

①新しく作業を開始する:

git init

GitHub発ではなく、ローカルPCのWorking TreeをGitで履歴管理を開始したい場合のコマンド。Gitで管理したい対象フォルダに移動した上で実行すればそのフォルダがGitで管理される。

git init 現在所在するフォルダをGit対象にする

git remote

上記のgit initで開始したローカルPCのWorking Treeを、GitHubに紐づけるコマンド。使い方は下記を参照。

programmingforever.hatenablog.com

git remote   リモートリポジトリの一覧を出力する
git remote add {リモートリポジトリ名} {リポジトリのURL} 対象リポジトリをローカルのリモートリポジトリに追加する
git remote rename {旧リモートリポジトリ名} {新リモートリポジトリ名}   ローカルの対象リモートリポジトリをリネームする
git remote remove {リモートリポジトリ名}  対象リモートリポジトリをローカルから削除する

git clone

GitHubから開発リソースをローカルPCにコピーして修正や履歴管理を行う場合のコマンド。

git clone {リポジトリのURL}    対象リポジトリのデフォルトブランチをクローンする
git clone --depth {深さ} {リポジトリのURL}  対象リポジトリのデフォルトブランチを指定したコミット数で切り詰めてクローンする
git clone -b {ブランチ名} {リポジトリのURL}  対象リポジトリの対象ブランチをクローンする
git clone --recursive {リポジトリのURL}   サブモジュールを含む対象リポジトリのデフォルトブランチをクローンする
git clone --depth 1 {リポジトリのURL} で、履歴が多いリポジトリをクローンする時間を短縮できます。

②差分やログ確認など

git diff

git diff ワークツリー にあるファイルの差分を出力する
git diff --cached   インデックス にあるファイルの差分を出力する

git status

git status   変更したファイルの一覧を出力する
git status -s   git status を短い形式で出力する
git status -s -b    短い形式でもブランチとトラッキングを出力する

git show

git show {コミットID}    対象コミットのメッセージとテキストの差分を表示する

git log

git log  ログを出力する

③ステージングやコミット、リモートへPUSH

git add

git add {ファイルパス1} {ファイルパス2}...   対象ファイルをインデックス(コミット対象)に追加する
git add -A  変更した全ファイルをインデックスに追加する
git add -p {ファイルパス} 対象ファイルをハンク単位でインデックスに追加する

git commit

git commit   Vimでメッセージを書き、インデックスにある全ファイルをコミットする
git commit -m "{メッセージ}"   メッセージを付け、インデックスにある全ファイルをコミットする

git push

git push origin {ローカルブランチ名}    対象ローカルブランチを origin にプッシュする
git push -d origin {リモートブランチ名}    対象リモートブランチを origin から削除する
git push origin {タグ名} 対象タグを origin にプッシュする
git push -d origin {タグ名}  対象タグを origin から削除する
git push -f 強制プッシュする
git push --force-with-lease 強制プッシュする(ブランチのアップストリームが変更されている場合などは拒否する)

git fetch

git fetch origin origin から最新の履歴を取得する
git fetch --prune origin    リモートリポジトリ上に存在しなくなったブランチなどの参照を削除し、 origin から最新の履歴を取得する

git rm

git rm {ファイルパス}  対象ファイルを 削除し 、Gitの管理外にする
git rm --cached {ファイルパス}    対象ファイルを 削除せず 、Gitの管理外にする
git rm -r {フォルダパス}  対象フォルダ以下を全削除し、Gitの管理外にする

④履歴管理など

git branch

git branch   ローカルブランチの一覧を出力する(チェックアウト中のブランチに * が付く)
git branch -a   ローカルブランチとリモートブランチの一覧を出力する
git branch {ブランチ名}    対象ブランチを新規作成する(チェックアウトしない)
git branch -d {ブランチ名} 対象ブランチを削除する
git branch -d -f {ブランチ名}  対象ブランチを 強制 削除する
git branch -D {ブランチ名} 対象ブランチを 強制 削除する
git branch -m {旧ブランチ名} {新ブランチ名} 対象ブランチをリネームする

git checkout

git checkout {ブランチ名}   対象ブランチに切り替える
git checkout -b {ブランチ名}   対象ブランチを新規作成し、切り替える
git checkout {ファイルパス}   ワークツリーにある対象ファイルの変更を取り消す
git checkout .  ワークツリーにある全ファイルの変更を取り消す

git switch

git switch {ブランチ名} 対象ブランチに切り替える
git switch -c {ブランチ名} 対象ブランチを新規作成し、切り替える
git switch --detach refs/tags/{タグ名}   対象タグに切り替える
git switch --detach {コミットID}    対象コミットに切り替える

git restore

git restore {ファイルパス} ワークツリーにある対象ファイルの変更を取り消す
git restore .   ワークツリーにある全ファイルの変更を取り消す
git restore --source {コミットID} {ファイルパス}  対象ファイルの変更を対象コミットに戻す

git reset

git reset HEAD {ファイルパス}  ステージングにある対象ファイルをワークツリーに戻す( git add {ファイルパス} を取り消す)
git reset HEAD  ステージングにある全ファイルをワークツリーに戻す( git add -A を取り消す)

git revert

git revert HEAD  直前のコミットを元に戻すコミットを作成する
git revert {コミットID} 対象コミットを元に戻すコミットを作成する

git rebase

git rebase origin/{ブランチ名}  origin にある対象ブランチを、チェックアウト中のブランチへリベースする
git rebase --continue   リベースを続ける
git rebase --abort  リベースを強制終了する
git rebase --quit   リベースを中止する

git merge

git merge origin/{ブランチ名}   origin にある対象ブランチを、チェックアウト中のブランチへマージする
git merge --squash origin/{ブランチ名} origin にある対象ブランチのコミットをひとつにまとめ、チェックアウト中のブランチへマージする
git merge --continue    マージを続ける
git merge --abort   マージを強制終了する
git merge --quit    マージを中止する

git cherry-pick

git cherry-pick {コミットID} 対象コミットをチェリーピックする
git cherry-pick {始点の1つ前のコミットID}..{終点のコミットID}  始点から終点までのコミットをチェリーピックする
git cherry-pick {始点のコミットID}^..{終点のコミットID}   始点から終点までのコミットをチェリーピックする
git cherry-pick --skip  現在のコミットをスキップして、残りのシーケンスを続ける
git cherry-pick --quit  失敗したチェリーピックを取り消す

git stash

git stash list   スタッシュの一覧を出力する
git stash show  スタッシュの変更を出力する
git stash push -m "{メッセージ}"   メッセージを付け、変更をスタッシュにプッシュする
git stash pop   スタッシュの変更をワークツリーに戻す(スタッシュから 消える )
git stash apply スタッシュの変更をワークツリーに戻す(スタッシュから 消えない )
git stash drop  スタッシュから変更を削除する

git blame

git blame {ファイルパス}   対象ファイル全体の各行ごとに、最後に編集したリビジョンと作者を表示する
git blame -L {開始行} {ファイルパス}   対象ファイルの開始行から末尾までを各行ごとに、最後に編集したリビジョンと作者を表示する
git blame -L ,{終了行} {ファイルパス}  対象ファイルの先頭から終了行までを各行ごとに、最後に編集したリビジョンと作者を表示する
git blame -L {開始行},{終了行} {ファイルパス}   対象ファイルの開始行から終了行までを各行ごとに、最後に編集したリビジョンと作者を表示する

git tag

git tag {タグ名}  タグを付ける
git tag -d {タグ名}  タグを削除する