Git(Hub) の使い方

  • $ git init
  • 現在のリモートリポジトリ一覧表示
    • $ git remote -v
    • 何も表示されなかったら$ git remote add origin GITHUB_REPOSITORY_URLでリモートレポジトリ追加
  • $ git add .; git commit -m "MESSAGE"; git pushで更新
    • fatal: The current branch master has no upstream branch.などと表示されたら$ git push origin master
  • $ git clone URL
    • submoduleも一緒に取ってきたい場合は--recursiveをつける
    • submoduleをアップデートしたい場合は$ git submodule update --recursive
  • ブランチ関連
    • $ git branchでブランチ一覧表示、引数を付ければその名前のブランチを作成
    • $ git checkout BRANCH_NAMEでブランチ移動
  • レポジトリの状態を知りたい
    • $ git status
  • ログツリーを確認
    • $ git log --oneline --graph --decorate
  • submodule追加
    • $ git submodule add URL
  • submoduleをlatest commitに更新
    • $ cd SUBMODULE_DIR
    • $ git pull origin master
    • レポジトリルートに戻ってgit add/commit/push (これをするまでstatusは更新されない)

httpsの代わりにgitプロトコルを使う

(グローバルな)configファイルに以下を記述しておくと、push/pullなどの際に自動でgitプロトコルを使ってくれる。httpsだとアカウント名/パスワードを毎回要求されたり何かと不便。

[url "git@github.com:"]
        insteadof = https://github.com/

SSH接続

  • $ git remote -vhttps://github.com/...と表示されたら、$ git remote set-url origin git@github.com:...
  • 以降はここに従って~/.ssh/configを編集
    • id_rsa以外の鍵を使いたい場合は-iで指定
  • Gtk-WARNING **: cannot open display と表示されたら$ unset SSH_ASKPASS

.gitignoreファイル

  • 複数のディレクトリに置くことができる
  • 深い階層の.gitignoreに書かれた指定の方が優先順位が高い
  • 以下の上の行から順に解釈される
    • /を含まない、もしくは末尾以外にのみ/を含む行(e.g. file, /file, path/to/file, /path/to/file)
    • 末尾が/の行(e.g. /path/to/directory/, path/to/directory/)
    • !で始まる行(e.g. !/path/to/file)
      • !以降のパターン文字列が示すファイルまたはディレクトリを無視しない
      • 前の無視指定を上書きする
      • 以降の無視指定に上書きされうる
    • 空行もしくは#で始まる行
      • 解釈されない
  • ワイルドカード(*, ?, [0-9]など)も使える