gitのコマンド一覧git command
特定のブランチでローカルを上書きする
git fetch origin
git reset --hard origin/(上書きしたいブランチ名)
ブランチ確認
git branch
ブランチ作成
git branch hoge
ブランチをリモートへ登録
git push -u origin 作成したブランチ名
ブランチの削除
git branch --delete hoge
リモートブランチ削除
git push --delete origin branch_name
幽霊ブランチの削除
リモートブランチにはないけど、ローカルのリモートブランチにはある状態
消されるブランチを事前に確認する
git remote prune origin --dry-run
幽霊ブランチを削除(ローカルブランチを削除)
git remote prune origin
作業ブランチを移動
git checkout hoge
ブランチを、myProjetで作成してチェックアウトまで行う
git checkout -b myProjet
ブランチの派生元を調べる
一番下の行が派生元
git show-branch
作業ブランチにmasterブランチの差分を取り込む
作業ブランチとmasterブランチの差分を、作業ブランチに取り込む方法。masterのほうが修正が進んでいる場合。
手順1.作業ブランチの修正をコミット
git add ファイル名
git commit -m 'コミットメッセージ'
git add
のときは、修正したファイル名を指定して追加しましょう。関係のないファイルの追加を防止するためにも、今回の修正対象となっているファイル名のみを指定します。
手順2.masterを最新に
git checkout master
git pull origin master
※git pull
は、git fetch
を実行したあとに、git merge FETCH_HEAD
を実行する。
手順3.作業ブランチの変更分は既にcommitしてあるので、masterとの差分を取り込む
git checkout (作業ブランチ)
git merge master
コンフリクトが発生したら修正し、再度addとcommitをする。
コミットの操作
「git add」で追加された内容の確認(status)
「git add」するとステージングに追加される。その内容を確認するにはstatusコマンドを使う。
git status
(省略)
Changes to be committed:
(use "git restore --staged ..." to unstage)
new file: FirebaseUISNSLogin/FirebaseUISNSLogin.xcodeproj/project.pbxproj
new file: FirebaseUISNSLogin/FirebaseUISNSLogin.xcodeproj/project.xcworkspace/contents.xcworkspacedata
(省略)
特定のコミットに戻す(reset)
「git log」で、戻す対象のハッシュ値を調べたあとに、「git reset」で戻す。
git log
git reset --hard ハッシュ値
直前のコミットを取り消し、ローカルの変更も戻す
git reset --hard HEAD^
直前のコミットを取り消すけど、ローカルの変更はそのまま残す
git reset --soft HEAD^
リモートの直前コミットを削除する
git reset --hard HEAD^
git push origin +ブランチ名
ブランチ名の前に「+(プラス)」をつけると強制pushする
※「zsh: no matches found: HEAD^」のメッセージがでて実行できないときは、次のコマンドを使う
git reset --soft HEAD\^
git push origin +ブランチ名
コミットを打ち消す(revert)
他の人が参照している可能性があるリポジトリで、pushしたコミットを削除(reset)すると不整合が生じる。この場合は、修正を元に戻すための打ち消し用のコミットを作成してpushする。
git revert [打ち消したいコミットID]
revertで打ち消し用のコミットが作成されるので、あとはpushするだけ。
直前にコミットしたメッセージを変更(amend)
ローカルでコミットした直後なら、amendコマンドでメッセージを変更できる。
git commit --amend -m "修正したいテキストを書く"
差分の確認(diff)
ステージングにいる状態でまだコミットされていないソースの変更箇所を確認
git diff —cached
git push する前にリモートとの変更点を見る
git diff リモート名/ブランチ名..HEAD
pushの操作
push時に「rejected…non-fast-forward」が発生した場合
他の人が先にpushしていると、non-fast-forwardが発生してpushできないです。
ここでpullすると分岐してしまい、gitログが複雑になります。
rebaseを使うと分岐させることなく、pushできます。
git fetch -p
git rebase remotes/origin/(ブランチ名)
git push origin (ブランチ名)
マージの操作
マージさせたいブランチ
git merge hoge
ブランチの変更を1コミットまとめてマージ
git merge --squash ブランチ名
マージのチェック(コンフリクトを発生を確認)
現在のブランチに指定ブランチをマージしステージングを行うが、コミットはしない。
git merge --no-commit myBranch
マージを取り消し、マージ前の状態にステージングと作業ディレクトリを戻す。
git merge --abort
キャッシュの操作
ファイル全体キャッシュ削除
git add できないときや管理が上手くいかないときは、キャッシュを削除すると動くことがある。
git rm -r --cached .
タグ(tag)の操作
コメントをつけてタグをつける
git tag -a (タグ名) -m 'タグのコメント'
- tagは特定のコミットに追加される
- コミットを指定せずにtagをつけたときは、作業ブランチの最新コミットに追加される
コメントなしのタグをつける
git tag (タグ名)
コミットしたあとからタグをつける
git tag -a (タグ名) -m 'タグのコメント' (コミットID)
タグをリモートに登録
git push origin (タグ名)
タグの確認
git tag
git tag -l "release-dev-0.*"
マッチ検索したいときは、「-l」をつける。
タグの詳細を確認
git show (タグ名)
リモートのタグを削除する
git tag -d (タグ名)
git push origin : (タグ名)
初期設定を行う
$ git config --global user.name "XXXX"
$ git config --global user.email "XXXX@hogehoge.com"
ローカルにリポジトリを作成し、リモートにプッシュする
$ git init
$ git add .
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/XXXX/XXXXXX.git
$ git push -u origin master
リモートからクローンする
$ git clone https://github.com/XXXX/XXXXXX.git
リモートから変更を取得する
$ git pull
or
$ git fetch
$ git merge origin/master
ファイルの登録(コミットするため)
$ git add <ファイル名>
ファイルの変更や追加をコミット
$ git commit -m "コミットメッセージ"
ローカルの変更を確認する
$ git status
リモートとローカルのファイルの差分を抽出する
$ git diff <ファイル名>
commitの変更履歴をみる
$ git log
指定したcommitの変更点を見る
$ git show <コミットのハッシュ値>
リモートにプッシュ
$ git push origin <ブランチ名>
addの取り消し
$ git reset HEAD <ファイル名>
commitの取り消し
$ git reset --hard HEAD^
–hard:コミット取り消した上でワークディレクトリの内容も書き換えたい場合
–soft:ワークディレクトリの内容はそのままでコミットだけを取り消したい場合
HEAD^:直前のコミット
HEAD~{n} :n個前のコミット
commitの打ち消し
$ git revert <コミットのハッシュ値>
コミットメッセージの修正
$ git commit --amend "新しいコミットメッセージ"
pushの取り消し
$ git reset --hard <戻したいコミットのハッシュ値>
$ git push -f
ローカルでブランチを作成
$ git branch <ブランチ名>
ローカルでブランチを切り替え
$ git checkout <ブランチ名>
ブランチ作成 & 切り替え
$ git checkout -b <ブランチ名>
ブランチ名の変更
$ git branch -m <古いブランチ名> <新しいブランチ名>
ブランチの削除
$ git branch -d <ブランチ名>
ローカルのブランチをリモートに反映
$ git push -u origin <ローカルのブランチ名>
リモートのブランチをローカル持ってくる
$ git branch <ブランチ名> origin/<ブランチ名>
リモートのブランチをローカル持ってくる & 切り替え
$ git checkout -b <ブランチ名> origin/<ブランチ名>
全てのブランチを確認する
$ git branch -a
ブランチを比較する
$ git diff <ブランチ名> <ブランチ名>
ブランチをマージする
$ git merge <ブランチ名>
fast-forwardの関係であっても必ずマージコミットを作る
$ git merge --no-ff <ブランチ名>
ブランチをリベースする
$ git rebase <ブランチ名>
※ mergeの場合は分岐元、rebaseの場合は分岐先のブランチで実行するという点に注意してください。
変更点を一旦退避させる
$ git stash save
退避した作業の一覧を見る
$ git stash list
退避した作業を戻す
$ git stash apply <stash名>
退避した作業を消す
$ git stash drop <stash名>
退避した作業をすべて消す
$ git stash clear
ファイル削除
$ git rm -f <ファイル名>
ファイルリネーム
$ git mv <元のファイル名> <変えたいファイル名>
ファイルを最新のコミットの状態に戻す
$ git checkout HEAD <ファイル名>
ファイルを指定コミットまで戻す
$ git checkout <コミットのハッシュ値> <ファイル名>
.gitignore を無視して追加する
$ git add -f <ファイル名>
ディレクトリだけ登録(.gitkeepをディレクトリに作成する)
$ touch <ディレクトリ名>/.gitkeep