Gitコマンド

入社当初、当時の課長が私にこう言いました、、、

「GitはCUIで出来るようになった方が将来的にいいよ^^」

ということでよく使うコマンドをまとめました。 私は物覚えがとても良くないのでいつもコマンド一覧を見ながら作業してます。

config

全てのリポジトリに反映する設定
git config --global 設定名 設定内容

リポジトリごとの設定
git config 設定名 設定内容

remote

リモートリポジトリを確認する
git remote -v

リモートリポジトリを追加する
git remote add リポジトリ名(自分で命名する) リモートリポジトリURL

clone

リモートリポジトリをローカルにコピーする
git clone リポジトリ名 clone先のパス

branch

リポジトリのブランチを確認する
git branch

ブランチを作成する
git branch ブランチ名

ブランチを切り替える
git checkout ブランチ名

ブランチを作成し切り替える
git checkout -b ブランチ名

コードを特定のバージョンの状態にする
git checkout tags/タグ名

ブランチの削除
git branch -d ブランチ名

mainブランチにマージしていないブランチを削除する場合
git branch -D ブランチ名

branch名の変更
git branch -m ブランチ名 新ブランチ名

status

リポジトリのステータスを確認する
git status

add

作業内容をstageに追加する
git add ファイル名

カレントディレクトリ配下のファイルとフォルダを全てstageに追加する
git add .

削除したファイルも含めてstageに追加する
git add -A

commit

stageの内容をコミットする
git commit -m コミットメッセージ

log

コミットの履歴を確認する
git log

各コミットを1行で表示する
git log --oneline

各コミットを線で結ぶ(ブランチの派生がわかりやすい)
git log --graph

特定のファイルのコミット情報を表示する
git log -- ファイル名

特定のファイルのコミット情報をファイル名の変更を考慮して表示する
git log --follow ファイル名

pull

pull = fetch + merge

リモートリポジトリのブランチの情報を自分の作業ブランチに反映する
git pull リモートリポジトリ名 ブランチ名

pull = fetch + rebase
git pull --rebase リモートリポジトリ名 ブランチ名

push

指定したリモートリポジトリのブランチにローカルのアクティブブランチの情報を送信する
git push リモートリポジトリ名 ブランチ名

指定のtagをリモートリポジトリに送信する
git push リモートリポジトリ名 タグ名

全てのtag情報をpushする
git push リモートリポジトリ名 --tags

指定のtag情報をリモートリポジトリ上から削除する
git push リモートリポジトリ名 :タグ名

pull request

リモートリポジトリは自由にマージすることはできないのでpull requestで他のメンバーに確認する

init

スクラッチからgitリポジトリを作成する
git init フォルダ名

カレントディレクトリをgitリポジトリにする
git init

reset or restore

stageに追加した変更をキャンセルする(リポジトリのファイルで上書きする)
git reset HEAD ファイル名
git restore --staged ファイル名

checkout or restore

編集内容を破棄する(stageのファイルで上書きする)
git checkout -- ファイル名
git restore ファイル名

mv

ファイル名の変更
git mv 変更前ファイル名 変更後ファイル名

merge

ブランチを現在のブランチにマージする
git merge ブランチ名

コンフリクトが発生した際に指定のツールを起動する
git mergetool

diff

ブランチの差分を確認する
git diff ベースブランチ 差分ブランチ

コミット間の差分を確認する
git diff コミットID コミットID
git diff HEAD^(^の数だけコミットを遡る) HEAD

ツールを使用して差分を確認する
git difftool 

ワーキングディレクトとstageの差分を確認する
git diff

stageとリポジトリの差分を確認する
git diff --staged

ワーキングディレクトリとリポジトリの差分を確認する
git diff HEAD

fetch

リモートリポジトリから情報を取得する
git fetch リモートリポジトリ情報 ブランチ名

全てのtag情報をローカルに取得する
git fetch --tags --all

rebase

push済みのコミットをrebaseしてはいけない

rebeseを行う
git rebase ブランチ名

rebase時にconflictが発生した場合
git mergetool
git rebase continue

stash

今の作業を一時的に退避させる
git stash

untrackファイルも退避させる
git stash -u

.gitignoreで指定されたファイルも退避する
git stash -a

メッセージ付きでstashする
git stash save ""

stashした内容を表示する
git stash list

stashした内容をワーキングディレクトリに戻す
git stash apply

stashした内容を削除する
git stash drop

git stash applyとgit stash dropを同時に行う
git stash pop

stashしたファイルの情報を表示する
git stash show stash@{i} i=数字

tag

最新のコミットにタグを付与する
git tag タグ名

最新のコミットにアノテーションタグを付与する
git tag -a タグ名

特定のコミットにタグを付与する
git tag タグ名 コミットID

tagの一覧を表示する
git tag --list

指定したtagを削除する
git tag --delete タグ名

何年もやってると覚えられるものなんですかね…

初投稿(自己紹介)

おはようございます

まずは自己紹介を…

関西でSEをしております、むると申します
SEと言ってもこの初投稿時点では2年も経っていないのでド新人です

プログラムが書きたいと思いIT企業に就職したのですが、
人手不足で中々プログラムに触らせてもらえず
お客様のところへ訪問する毎日を送っております。

本ブログでは
仕事で学んだ知識や感じたこと、
また個人的に興味があり勉強したことを
独り言のごとくアウトプットします。

長々と書くのもあれなのでこれぐらいにしておきます。

それでは…