Git: おさらい - kmats/Logs GitHub Wiki

git の仕組み

リポジトリ

  • ローカルリポジトリ … 自分の手元のマシン上に配置するリポジトリ(個人用)
  • リモートリポジトリ … サーバ上に配置して共有するためのリポジトリ(共用)
          +-------------------+
          |      リモート      |
          +-------------------+
clone/pull↓ ↑push       clone/pull↓ ↑push
+-----------------+     +-----------------+
|     ローカル     |     |     ローカル     |
+-----------------+     +-----------------+

ワークツリーとインデックス

  • ワークツリー … 現在作業しているディレクトリ
  • インデックス … リポジトリとワークツリーの中間
+------------+        +-----------+        +---------+
| ワークツリー |        | インデックス |        |リポジトリ|
+------------+  add   +-----------+ commit +---------+
|変更1       |------->|変更1      | ------>|変更1    |
|変更2       |        |           |        |         |
|変更3       |------->|変更3      |------->|変更3    |
+------------+        +-----------+        +---------+

checkout

  • git checkoutにより変更を戻すことができるが、tree-ish(例:HEAD,tags,branch names)を指定しない場合インデックスの状態に戻すということ(リポジトリの状態に戻すわけではない)
    • $ git checkout .
  • リポジトリの状態に戻したいのであれば
    • $ git checkout HEAD .

diff

  • commit(例:HEAD)を指定しない場合インデックスとワークツリーの差分を表示する(リポジトリではない)
  • リポジトリとインデックス間の差分は
    • $ git diff --cached
  • リポジトリとワークツリー間の差分は
    • git diff HEAD

基本的なgitコマンド

   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and merge with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

覚えとくと便利

  • git help … ヘルプ表示。 例:git help init
  • gitk … GUIなログビューアー

おすすめの設定

  • 色付け
    • git config coloer.ui auto
  • svnみたいに使いたい(短縮コマンド使いたい)
    • git config alias.co checkout
    • git config alias.st status
    • ...
⚠️ **GitHub.com Fallback** ⚠️