)]}'
{
  "commit": "46e91b663badd99b3807ab34decfd32f3cbf15e7",
  "tree": "d01c087e69f6abe1fde5b3c9e220151b18c802cf",
  "parents": [
    "328c6cb853d7237098569de9f94bc3d259846a08"
  ],
  "author": {
    "name": "Nguyễn Thái Ngọc Duy",
    "email": "pclouds@gmail.com",
    "time": "Thu Apr 25 16:45:45 2019 +0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue May 07 13:04:47 2019 +0900"
  },
  "message": "checkout: split part of it to new command \u0027restore\u0027\n\nPreviously the switching branch business of \u0027git checkout\u0027 becomes a\nnew command \u0027switch\u0027. This adds the restore command for the checking\nout paths path.\n\nSimilar to git-switch, a new man page is added to describe what the\ncommand will become. The implementation will be updated shortly to\nmatch the man page.\n\nA couple main differences from \u0027git checkout \u003cpaths\u003e\u0027:\n\n- \u0027restore\u0027 by default will only update worktree. This matters more\n  when --source is specified (\u0027checkout \u003ctree\u003e \u003cpaths\u003e\u0027 updates both\n  worktree and index).\n\n- \u0027restore --staged\u0027 can be used to restore the index. This command\n  overlaps with \u0027git reset \u003cpaths\u003e\u0027.\n\n- both worktree and index could also be restored at the same time\n  (from a tree) when both --staged and --worktree are specified. This\n  overlaps with \u0027git checkout \u003ctree\u003e \u003cpaths\u003e\u0027\n\n- default source for restoring worktree and index is the index and\n  HEAD respectively. A different (tree) source could be specified as\n  with --source (*).\n\n- when both index and worktree are restored, --source must be\n  specified since the default source for these two individual targets\n  are different (**)\n\n- --no-overlay is enabled by default, if an entry is missing in the\n  source, restoring means deleting the entry\n\n(*) I originally went with --from instead of --source. I still think\n  --from is a better name. The short option -f however is already\n  taken by force. And I do think short option is good to have, e.g. to\n  write -s@ or -s@^ instead of --source\u003dHEAD.\n\n(**) If you sit down and think about it, moving worktree\u0027s source from\n  the index to HEAD makes sense, but nobody is really thinking it\n  through when they type the commands.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy \u003cpclouds@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c687b92b1c8377759ecb848e9bead1c8a40d46f0",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "fb377106be89bfb514b1b4a33b7e678ba1fb5411",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "modify",
      "old_id": "ad846dd7c9906bcaa77f54d19627364bb601fe59",
      "old_mode": 33188,
      "old_path": "Documentation/config/interactive.txt",
      "new_id": "a2d3c7ec449e9b943a71f21891c2fd733a695dfc",
      "new_mode": 33188,
      "new_path": "Documentation/config/interactive.txt"
    },
    {
      "type": "modify",
      "old_id": "58f18a0842b8102318acacec1d1e55c54bb9c5ef",
      "old_mode": 33188,
      "old_path": "Documentation/git-checkout.txt",
      "new_id": "a294652dd6753297d3e2f9647b88c5d0f2c247e4",
      "new_mode": 33188,
      "new_path": "Documentation/git-checkout.txt"
    },
    {
      "type": "modify",
      "old_id": "cbf901efb476a6b2d7f3eeb0fa1f98831543251b",
      "old_mode": 33188,
      "old_path": "Documentation/git-reset.txt",
      "new_id": "c25f8a95b93c472affbf3a43abef9b8cae142c75",
      "new_mode": 33188,
      "new_path": "Documentation/git-reset.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b608f3f3606b416dd4a374fca4de801cabbab1d2",
      "new_mode": 33188,
      "new_path": "Documentation/git-restore.txt"
    },
    {
      "type": "modify",
      "old_id": "837707a8fdb1760f224cc777f6b2b833a6b90a79",
      "old_mode": 33188,
      "old_path": "Documentation/git-revert.txt",
      "new_id": "018ecf49d3c56076a047411b40aa85e69e84cf6b",
      "new_mode": 33188,
      "new_path": "Documentation/git-revert.txt"
    },
    {
      "type": "modify",
      "old_id": "00156d64aad51cd758e554ada68a52a3e55dfc0c",
      "old_mode": 33188,
      "old_path": "Documentation/git.txt",
      "new_id": "fbed007354d38990b48e3cca54c4bbc6a5278fdc",
      "new_mode": 33188,
      "new_path": "Documentation/git.txt"
    },
    {
      "type": "modify",
      "old_id": "592e06d839d87f28cf6cbbdcf3aa3253da2eb9f0",
      "old_mode": 33188,
      "old_path": "Documentation/gitcli.txt",
      "new_id": "225513ef5e6ee19ff0a9e17e34671e3bbb191619",
      "new_mode": 33188,
      "new_path": "Documentation/gitcli.txt"
    },
    {
      "type": "modify",
      "old_id": "f85f364029cee6c0caea3d4082cb37e56414b948",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "783b0773a6b27e8aef12f8bf099696415b96cf7d",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "c64e44450e5285e5fe458387897a9b2ac70ea4a2",
      "old_mode": 33188,
      "old_path": "builtin.h",
      "new_id": "6830000e14396f91a9d4cb8c2ab1b10f551c3dc5",
      "new_mode": 33188,
      "new_path": "builtin.h"
    },
    {
      "type": "modify",
      "old_id": "0351735c6eb706c160d2dd32c9aa90cde611aa92",
      "old_mode": 33188,
      "old_path": "builtin/checkout.c",
      "new_id": "98dc2ded38fe971ca4e746ffbc94b8a128e0d4d3",
      "new_mode": 33188,
      "new_path": "builtin/checkout.c"
    },
    {
      "type": "modify",
      "old_id": "13317f47d4bfe5076e331fa8bf51c520e9905bff",
      "old_mode": 33188,
      "old_path": "command-list.txt",
      "new_id": "b9eae1c25831fe55d60469f67675f1e911b9671d",
      "new_mode": 33188,
      "new_path": "command-list.txt"
    },
    {
      "type": "modify",
      "old_id": "39582cf5111983c3c89ca26003050854cd76460d",
      "old_mode": 33188,
      "old_path": "git.c",
      "new_id": "6d439e723f38ebd8bde2646088e104ce69b84821",
      "new_mode": 33188,
      "new_path": "git.c"
    }
  ]
}
