X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=Documentation%2Fgit-read-tree.txt;h=6e92e4aa66674fa5fde90866c0f2ff9155270dc0;hb=556cb4e583ada79b7c2e632a548dca90a98c1b29;hp=0639bd04b2915c1e381021ef2018b203adc13b4b;hpb=f318dd229f9df88470de8541916d48c9380e2e35;p=git.git diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index 0639bd04..6e92e4aa 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -1,10 +1,9 @@ git-read-tree(1) ================ -v0.1, May 2005 NAME ---- -git-read-tree - Reads tree information into the directory cache +git-read-tree - Reads tree information into the index SYNOPSIS @@ -14,11 +13,11 @@ SYNOPSIS DESCRIPTION ----------- -Reads the tree information given by into the directory cache, +Reads the tree information given by into the index, but does not actually *update* any of the files it "caches". (see: git-checkout-index) -Optionally, it can merge a tree into the cache, perform a +Optionally, it can merge a tree into the index, perform a fast-forward (i.e. 2-way) merge, or a 3-way merge, with the -m flag. When used with -m, the -u flag causes it to also update the files in the work tree with the result of the merge. @@ -29,7 +28,14 @@ will be in unmerged state when "git-read-tree" returns. OPTIONS ------- -m:: - Perform a merge, not just a read. + Perform a merge, not just a read. The command will + refuse to run if your index file has unmerged entries, + indicating that you have not finished previous merge you + started. + +--reset:: + Same as -m, except that unmerged entries are discarded + instead of failing. -u:: After a successful merge, update the files in the work @@ -44,7 +50,6 @@ OPTIONS trees that are not directly related to the current working tree status into a temporary index file. - :: The id of the tree object(s) to be read/merged. @@ -60,10 +65,10 @@ provided. Single Tree Merge ~~~~~~~~~~~~~~~~~ If only 1 tree is specified, git-read-tree operates as if the user did not -specify '-m', except that if the original cache has an entry for a +specify '-m', except that if the original index has an entry for a given pathname, and the contents of the path matches with the tree -being read, the stat info from the cache is used. (In other words, the -cache's stat()s take precedence over the merged tree's). +being read, the stat info from the index is used. (In other words, the +index's stat()s take precedence over the merged tree's). That means that if you do a "git-read-tree -m " followed by a "git-checkout-index -f -u -a", the "git-checkout-index" only checks out @@ -84,10 +89,10 @@ fast forward situation). When two trees are specified, the user is telling git-read-tree the following: - (1) The current index and work tree is derived from $H, but + 1. The current index and work tree is derived from $H, but the user may have local changes in them since $H; - (2) The user wants to fast-forward to $M. + 2. The user wants to fast-forward to $M. In this case, the "git-read-tree -m $H $M" command makes sure that no local change is lost as the result of this "merge". @@ -97,7 +102,7 @@ Here are the "carry forward" rules: ------------------------------------------------------- 0 nothing nothing nothing (does not happen) 1 nothing nothing exists use M - 2 nothing exists nothing remove path from cache + 2 nothing exists nothing remove path from index 3 nothing exists exists use M clean I==H I==M @@ -110,7 +115,7 @@ Here are the "carry forward" rules: 8 yes N/A no nothing exists fail 9 no N/A no nothing exists fail - 10 yes yes N/A exists nothing remove path from cache + 10 yes yes N/A exists nothing remove path from index 11 no yes N/A exists nothing fail 12 yes no N/A exists nothing fail 13 no no N/A exists nothing fail @@ -129,7 +134,7 @@ Here are the "carry forward" rules: 20 yes yes no exists exists use M 21 no yes no exists exists fail -In all "keep index" cases, the cache entry stays as in the +In all "keep index" cases, the index entry stays as in the original index file. If the entry were not up to date, git-read-tree keeps the copy in the work tree intact when operating under the -u flag. @@ -234,7 +239,7 @@ This is done to prevent you from losing your work-in-progress changes. To illustrate, suppose you start from what has been commited last to your repository: - $ JC=`cat .git/HEAD` + $ JC=`git-rev-parse --verify "HEAD^0"` $ git-checkout-index -f -u -a $JC You do random edits, without running git-update-index. And then @@ -246,7 +251,7 @@ since you pulled from him: Your work tree is still based on your HEAD ($JC), but you have some edits since. Three-way merge makes sure that you have not -added or modified cache entries since $JC, and if you haven't, +added or modified index entries since $JC, and if you haven't, then does the right thing. So with the following sequence: $ git-read-tree -m -u `git-merge-base $JC $LT` $JC $LT