LoginSignup
3
3

More than 1 year has passed since last update.

Gitコマンドチートシート

Last updated at Posted at 2023-01-27

gitの初期化

git init

状態・検索

#addしたファイルや修正したけどaddしてないファイルの状況など分かる
git status

#過去のコミットした状況が分かる
git log

git show

#直前のコミットとの差分(オプションなしdiff)
git diff

#2点間の差分が分かる
git diff [コミットID]..[コミットID]

#ブランチ同士の差分を見る
git diff [ブランチ名]..[ブランチ名]

#pullする前に、リモート追跡ブランチとの差分を確認する
#(たとえば今あなたがmasterブランチにチェックアウトしていて、リモートリポジトリのmasterと比較したい場合)
#1.まずリモートリポジトリから更新内容を取得してきて
git fetch origin
#2.ローカルリポジトリのmasterブランチの最新コミット(HEAD)と、リモート追跡ブランチ(origin/main)を比較する
git diff HEAD..origin/main

#push する前に、リモート追跡ブランチとの差分を確認する
#(ローカルで進めたコミットをpushする前に、リモートリポジトリの状態と比較したいとき)
git diff origin/master..HEAD

#保存したリスト(スタッシュリスト)を見る
git stash save

#特定の文字列を含む箇所を検索したい(大文字、小文字を区別する)
git grep "検索したい文字列"
#行番号も表示する設定
git config --gloal grep.lineNumber true

#コミットやブランチを指定して検索したい
git grep "検索したい文字列" [コミットID,ブランチ]

#特定ワードを含むファイル名のみ表示したい
git grep -l “検索したい文字列”

#いつ誰のコミットでその行が変更されたのかを調べられます。
git blame [ファイル名]

#タグを一覧表示
git tag

#スタッシュを表示
git stash list

コミットなどの編集の反映

#ステージングする(ワイルドカード指定もできる)
git add ファイル名
#変更ファイルすべてをステージングする
git add .

#ステージングを下げる
git restore --staged ファイル名
#ステージングを下げる ファイルの変更まではもとに戻らない
git reset

#変更内容を確認する
git diff --cached

#コミット
git commit
#コメント付き(エディターが立ち上がらない)
git commit -m "ここにコメントを書き込む"
#変更の詳細を見れる
git commit -v

#コミットの内容を見る コミットIDははじめ4ケタだけでもいい
git show コミットID
#直近
git show

#別のブランチでやってる特定のコミットだけをコピーしてきて、コミットする
git cherry-pick [コミットID]
#複数は
git cherry-pick [コミットIDその1]..[コミットIDその2]
#取り込みたいけどコミットはしたくないとき(作業ディレクトリだけに反映する)
git cherry-pick -n [コミットID]

#作業中のファイルを一時保存
git stash save

#保存したリスト(スタッシュリスト)を見る
git stash list

#スタッシュを復活させる
git stash apply stash@{n}

#スタッシュを削除する
git stash drop stash@{n}

#スタッシュの復活&削除
git stash pop stash@{n}

#タグをつける
git tag [タグ名]

#注釈付きタグをつける(aはアノテート)
git tag -a [タグ名] -m "注釈"

#タグをリモートリポジトリに共有する
git push origin [タグ名]

#複数のタグを全部プッシュする
git push origin --tags

#タグを一覧表示
git tag

#ローカルリポジトリのタグの削除
git tag -d [タグ名]

#リモートリポジトリのタグの削除
git push origin --delete [タグ名]

元に戻す

#ワークディレクトリ上の変更を元に戻す
git checkout "ファイル名"
#ワークディレクトリ上の変更を元に戻す
git restore --worktree [ファイル名]
#ワークディレクトリ上の変更を元に戻す
git reset --hard HEAD

#特定のファイルを、特定のコミット時点に戻す
git restore --source [コミットID] [ファイル名]
#特定のファイルを、特定のコミット時点に戻す
git checkout [コミットID] [ファイル名]

#直前のコミットをやり直す(※push後には使ってはいけない)
git commit --amend

#リバート(指定したコミットと逆の内容をコミットする)(※push後にも使える)
git revert [打ち消したいコミットID]
#HEADの位置のみ
git reset --soft HEAD^
#8個前のコミットまで戻す
git reset --soft HEAD~8
#指定したコミットIDまで戻す
git reset --soft caddd1c
#HEADとステージも戻す(addしたファイルを、addする前に戻す)
git reset --mixed [ファイル名]
#HEADとステージも戻す(addしたファイルを、addする前に戻す)
git restore --staged [ファイル名]
#HEADとステージと作業ディレクトリも戻す
git reset --hard

#リフログ(HEADの移動履歴を表示)
git reflog
#戻りたい地点の数字を指定してリセットする
git reset --hard HEAD@{n}

#スタッシュを復活させる
git stash apply stash@{n}

#スタッシュを削除する
git stash drop stash@{n}

#スタッシュの復活&削除
git stash pop stash@{n}

ブランチ

#ブランチの確認
git branch
#すべてのブランチを表示
git branch -a

#ブランチ生成
git branch 新規ブランチ名

#リモートブランチを元にローカルブランチを作成する
git branch [新規ローカルブランチ名] origin/[コピーしたいリモートブランチ名]

#ブランチ変更
git checkout ブランチ名
#ブランチ変更
git switch ブランチ名

#ブランチの生成&変更
git checkout -b 新規ブランチ名
git switch -c 新規ブランチ名

#ブランチ削除(小文字の場合はマージしていない変更があれば削除されない)
git branch -D[d] engawa

#前のブランチに戻る
git checkout -

#ブランチ名を変更する
git branch -m 変更後ブランチ名

#リモートブランチをローカルワークスペースに落とす
git checkout -t ブランチパス

#すでに消されたブランチをローカルでも消す
git fetch --prune
#すでに消されたブランチをローカルでも消す
git remote prune [リポジトリ名]

リモートとのやりとり

#プッシュする
git push [リモート] [ローカルブランチ名]

#リモートリポジトリを表示
git remote

#登録(追加)されているリモートリポジトリのURLを表示
git remote -v

#リモートからローカルブランチにコピーする
git fetch

#リモートからワークツリーにマージする
git pull リモート名 ブランチ名

#リモートリポジトリ名を変更
git remote rename [旧リモート名] [新リモート名]

#リモートリポジトリを削除
git remote rm [リモートリポジトリの呼び名]

#リモートリポジトリを追加する
git remote add [リモートリポジトリの呼び名] [リモートリポジトリのURL]

マージ・リベース

#マージ
git merge [ブランチ名]

#マージを中断する(コンフリクトが複雑なときとか)
git merge --abort

#リベース(親コミットを変更する。別のブランチの子コミットをポインタする)
git rebase [ブランチ名]

コンフリクト

<<<<<<< HEAD
<h1>hello git1</h1>
=======
<h1>hello git2</h1>
>>>>>>> feature

コンフリクトが発生した場合は正しいコードを残していらないものは削除して保存する

Gitの設定

# 設定ファイル閲覧
cat ~/.gitconfig
# 設定の閲覧(オプションでスコープを選択)
git config --list --global

#グローバル情報の設定(--local --systemもある)
git config --global user.name "名前"
git config --global user.email 自分のメアド

# ローカル情報の削除
git config --local --unset user.name

# 直前にコミットされた変更を修正し、作成者をリセットするために使用されます
git commit --amend --reset-author

#エイリアス
#git statusをgit stで使用可能にする
git config --global alias.st status

#grepで行番号も表示する
git config --gloal grep.lineNumber true

クローン

git clone [SSHのURL]

#initブランチから始める
git clone --branch init [SSHのURL]

SSHの公開鍵

# SSH鍵を作る
ssh-keygen -t rsa -b 4096 -C "コメント"
# -t rsa:鍵の種類(デフォルトでrsaだが確実性のため記載する)
# -b:バイト。鍵の長さ。長いほど強固になる。
# -C:コメント

# SSH鍵がつくられたディレクトリに移動
cd ~/.ssh

#SSH公開鍵を見る
cat id_rsa.pub
#コピーする
cat id_rsa.pub | pbcopy

#生成された鍵をGitHubにペーストして追加する
#done

SSHでクローンする

SSHが標準的な方法

※HTTPS,GitHub CLIはGitHub独自の知識が必要

  1. SSH鍵を作成する
    1. コマンドラインからRSAで鍵を生成と取得
      1. ssh-keygen -t rsa -b 4096 -C “ここにコメント”
        1. 鍵の保存先を聞かれる。デフォルトでOK。
        2. パスフレーズを設定する
        3. cd ~/ .ssh 鍵のある場所に移動する
        4. cat id_rsa.pub | pbcopy クリップボードにコピーする
  2. GitHubに戻り、KeyのテキストエリアにペーストしSSH鍵を登録する
    1. https://github.com/settings/ssh/new
  3. リモートリポジトリのURLを取得する
    1. GitHubの該当のリポジトリを開き、Code→SSHタブのURLをコピーする
  4. Gitクローンする
    1. git clone [SSHのURL]
    2. SSHのパスフレーズを入力して完了!
  • 鍵のありか

    ホームディレクトリ直下(~/.ssh)にある

    id_rsa.pub:公開鍵。公開しても大丈夫な鍵。

    id_rsa:複製厳禁なシークレットな鍵。


知識

GitHub

Web上でリモートリポジトリを管理できるサイト

ブランチ

コミットIDへの参照(ポインタ)

HEAD

現在作業中のブランチへの参照(ポインタ)

マージ

Fast forward merge

古いブランチを新しいブランチに追いつかせる

Auto Merge

分岐したブランチをまとめる

マージコミットという新しいコミットが生成される

ステージ

コミットする変更を準備する

ワークツリーの変更で一部のコミットしたいものだけを切り出す


コンソール

よく見るメッセージ

Your branch is ahead of 'origin/main' by 1 commit.

訳:あなたのブランチは1コミット分、'origin/main'より進んでいます。

リモートブランチにないコミットが 1 つあることを意味しています。これは、ローカルリポジトリに変更を加えてもまだサーバーに反映されていないことを意味します。リモートブランチの変更を取得するためには、まずその変更をプルする必要があります。


運用上の注意

  • 極力、異なるブランチで同じファイルを編集しない
    • コンフリクト防止
  • pullやmergeする前に変更中の状態をなくしておく(commitやstashをしておく)
  • pullするときは、pullするブランチに移動してからpullする
  • detached HEAD にならないようにする
    • その状態で他のブランチにチェックアウトすると、コミットが消滅する
    • 過去のコミットIDを直接指定してチェックアウトするとなってしまう

参考URL

3
3
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
3
3