gitのコマンド一覧git command

PC便利技

ad2

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