yetnoneの日記

どこぞのPh.D. student。何をやっているかと聞かれると困る。

Git(Hub)で他人のレポジトリをcloneして新規branchを作って自分のレポジトリに公開するまでの流れ

(Qiitaに書いた方がいいかも)

  • $ git clone URL
    • submoduleも一緒に取ってきたい場合は--recursiveをつける
    • submoduleをアップデートしたい場合は$ git submodule update --recursive
  • $ git remote -vで現在のリモートリポジトリ覧表示
  • $ git branchでブランチ一覧表示、引数を付ければその名前のブランチを作成
  • $ git checkout BRANCH_NAMEでブランチ移動
  • GitHub上で自分の(空の)レポジトリを作成
  • $ git remote add REMOTE_NAME REMOTE_URLでリモートリポジトリを作成
  • $ git add .; git commit -m "MESSAGE"
  • $ git push REMOTE_NAME BRANCH_NAMEで自分のレポジトリのブランチに追加
  • .gitmodulesのURLを適切なものに変更する
    • ../REPOSITORY_NAMEだと自分のレポジトリ、URLのフルパスにすると任意の(他人の)レポジトリを参照できる
  • $ git submodule add URL LOCAL_NAME; git submodule update --init --recursiveでsubmoduleを追加
    • $ git branch -rでmaster以外にどのブランチがあるか確認
    • $ git checkout BRANCH_NAME origin/BRANCH_NAMEでブランチ追加
    • submoduleが指すコミットを変更したい場合は、submodule内部で$ git checkout BRANCH_NAME|COMMIT_ID -> submodule外部で$ git add .
    • $ git submodule deinit ディレクトリ名; git tm -rf ディレクトリ名で削除
  • $ git log --oneline --graph --decorateでログツリーを確認
  • $ git pull, $ git mv, $ git rm (--cached), $ git status

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]など)も使える