initialize

  • 初期設定

      git init
      git remoate add origin <repository-url>
      git commit -m "first commit"
      git push (-u) origin master
    
  • マージ時の設定

      git config branch.master.remote origin
      git config branch.master.merge refs/heads/master
    

Commit

  • gitでリモートリポジトリにpushしたcommitを取り消す

    リモート・ローカルの両方のHEADの位置を変更

      git rebase -i HEAD~2 # コミットの2行目を削除
      git push origin +master
    

    リモートのみ変更

      git push -f origin HEAD^:master
    

    ローカルのみ変更

      git reset HEAD^
      git reset --soft HEAD^
      git reset --hard HEAD^
    
  • cherry-pick

      git cherry-pick <commit>
    

    コミットしない場合

      git cherry-pick -n <commit>
    

Branch

  • リモートブランチをローカルに取得

      git checkout -b <local-branch-name> <remote-branch-name>
    
  • ブランチを削除

      git branch -d <branch-name>
      git push origin :<branch-name>
    
  • すでに作成済みのブランチをトラッキングする

      git push -u origin master
    

    または

      git branch --set-upstream foo upstream/foo
    

    参考

  • 既に削除済みのリモートブランチを一覧から削除する

    git branch -aで表示されるリモートに存在しないブランチ表示を削除する

      git remote prune <repository>
    

    または

      git fetch --prune <repository>
    
  • 複数ブランチを同時に扱う

     ln -s /usr/local/Cellar/git/2.2.0/share/git-core/contrib/workdir/git-new-workdir /usr/local/bin/
     git-new-workdir . ../develop
     (git new-workdir . ../develop)
    

Tag

  • タグを削除

      git tag -d <tag-name>
      git push origin :<tag-name>
    
  • タグがリンクしているハッシュ値を確認する

      git rev-parse <tag-name>
    

Archive

デフォルトはtar

  • tarのアーカイブ (tar.gz)

      git archive [--format=tar] HEAD | gzip > foo.tar.gz
    
  • zipのアーカイブ

      git archive --format=zip <branch-name> > foo.zip
    
  • 特定のディレクトリに入れる

    –prefixオプションで指定

      git archive --format=zip --prefix=dir/ <tag-name> > foo.zip