Git のコマンドまとめ
目次

ブランチ操作

ローカル

  • 新しいブランチを作成して、新しいブランチにチェックアウト

    $ git checkout <元にしたいブランチ>
    $ git checkout -b <new-branch-name>
    
  • ブランチ名を変更

    $ git branch -m <old-branch-name> <new-branch-name>
    
  • ブランチを削除

    $ git checkout <違うブランチ>
    $ git branch -D <branch-you-want-to-delete>
    
  • ブランチを強制チェックアウト(ローカル変更はなくなる)

    $ git checkout --force <branch-you-want-to-checkout>
    
  • ブランチをプッシュ(初回)

    $ git push -u origin <branch-you-want-to-push>
    

リモート

  • リモートブランチをチェックアウト

    $ git checkout -b <branch-you-want-to-checkout> origin/<branch-you-want-to-checkout>
    
  • リモートブランチの一覧を表示

    $ git branch -a
    

git reset 使い分け

ちなみに git reset == git reset --mixed ですね

  • git commit だけ取り消し

    $ git reset --soft
    
  • git add と git commit を取り消し、ファイルの変更は保持する

    $ git reset --mixed
    
  • git add と git commit を取り消して、ファイルの変更も削除する

    $ git reset --hard
    
  • コミットを取り消し(直前のコミットまで戻す。 git commit を取り消し、ファイルの変更は保持する。)

    $ git reset --mixed HEAD^
    

コミット

  • コミットをもう一度やりなおす

    $ git commit --amend
    
  • コミットメッセージの修正

    $ git commit --amend -m "new commit message"
    
  • いったんコミットした後、 add 忘れに気づいた

    $ git add <わすれもの>
    $ git commit --amend
    
  • 空コミット

    $ git commit --allow-empty -m "commit message"
    

git log

リセットする

履歴を全部消して force push する。

  1. .git を消す

  2. force push する

    $ git add *
    $ git commit -m 'initialize
    $ git remote add origin {URL}
    $ git push origin master --force
    

fetch と pull

fetch

リモートリポジトリの最新の履歴の取得だけを行う。

  • hogehoge ブランチをfetchすると、 ローカルの origin/hogehoge がリモートの origin/hogehoge リポジトリと同期されて最新状態になる。

  • ローカルの hogehoge ブランチは、そのまま何にも変更されない。

pull

fetch + merge

  • hogehoge ブランチを pull すると、 ローカルの origin/hogehogehogehoge も両方リモートの origin/hogehoge リポジトリの変更とマージされる。

  • 内部的には、

    1. リモートの origin/hogehoge と、ローカルの origin/hogehoge とマージ

    2. ローカルの origin/hogehogehogehoge をマージ

  • ローカルの hogehoge に、自分の変更とリモートの変更と両方入った状態になる。

  • 競合があったら自分で解決してコミットする必要がある。

  • 通常ローカルで触るのは origin がついていない hogehoge ブランチ。