)]}'
{
  "commit": "091e04bc8cbb0c89c8112c4784f02a44decc257e",
  "tree": "f72dbe0c834e26a998196a749795ea7b70df53d9",
  "parents": [
    "b7033e73b7b671670160726f62ac16d88161e3d0"
  ],
  "author": {
    "name": "Thomas Gummerer",
    "email": "t.gummerer@gmail.com",
    "time": "Tue Jan 08 21:52:24 2019 +0000"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Jan 08 14:49:28 2019 -0800"
  },
  "message": "checkout: introduce --{,no-}overlay option\n\nCurrently \u0027git checkout\u0027 is defined as an overlay operation, which\nmeans that if in \u0027git checkout \u003ctree-ish\u003e -- [\u003cpathspec\u003e]\u0027 we have an\nentry in the index that matches \u003cpathspec\u003e, but that doesn\u0027t exist in\n\u003ctree-ish\u003e, that entry will not be removed from the index or the\nworking tree.\n\nIntroduce a new --{,no-}overlay option, which allows using \u0027git\ncheckout\u0027 in non-overlay mode, thus removing files from the working\ntree if they do not exist in \u003ctree-ish\u003e but match \u003cpathspec\u003e.\n\nNote that \u0027git checkout -p \u003ctree-ish\u003e -- [\u003cpathspec\u003e]\u0027 already works\nthis way, so no changes are needed for the patch mode.  We disallow\n\u0027git checkout --overlay -p\u0027 to avoid confusing users who would expect\nto be able to force overlay mode in \u0027git checkout -p\u0027 this way.\n\nUntracked files are not affected by this change, so \u0027git checkout\n--no-overlay HEAD -- untracked\u0027 will not remove untracked from the\nworking tree.  This is so e.g. \u0027git checkout --no-overlay HEAD -- dir/\u0027\ndoesn\u0027t delete all untracked files in dir/, but rather just resets the\nstate of files that are known to git.\n\nSuggested-by: Junio C Hamano \u003cgitster@pobox.com\u003e\nSigned-off-by: Thomas Gummerer \u003ct.gummerer@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "801de2f7645bf0b1fc506da58d469519abca8863",
      "old_mode": 33188,
      "old_path": "Documentation/git-checkout.txt",
      "new_id": "24e52b01e1897528780efed7ccb4490b897ec670",
      "new_mode": 33188,
      "new_path": "Documentation/git-checkout.txt"
    },
    {
      "type": "modify",
      "old_id": "32c4b7f897f894bf73976e05a74b322a9a0ef192",
      "old_mode": 33188,
      "old_path": "builtin/checkout.c",
      "new_id": "0c5fe948ef58901870949532b1a4bfc2b1870452",
      "new_mode": 33188,
      "new_path": "builtin/checkout.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "76330cb5ab79ab0ddfd97e0c06a8f4fb3a74d6c6",
      "new_mode": 33261,
      "new_path": "t/t2025-checkout-no-overlay.sh"
    },
    {
      "type": "modify",
      "old_id": "d01ad8eb2587ba32637d7ec8161811696a0aec34",
      "old_mode": 33261,
      "old_path": "t/t9902-completion.sh",
      "new_id": "5758fffa0dd19cf1a8095060d3dacb5b80b34216",
      "new_mode": 33261,
      "new_path": "t/t9902-completion.sh"
    }
  ]
}
