diff options
Diffstat (limited to 'Documentation/git-read-tree.txt')
-rw-r--r-- | Documentation/git-read-tree.txt | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt index 0c7cc6b940..6f4b9b017f 100644 --- a/Documentation/git-read-tree.txt +++ b/Documentation/git-read-tree.txt @@ -22,8 +22,8 @@ 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. -Trivial merges are done by `git-read-tree` itself. Only conflicting paths -will be in unmerged state when `git-read-tree` returns. +Trivial merges are done by 'git-read-tree' itself. Only conflicting paths +will be in unmerged state when 'git-read-tree' returns. OPTIONS ------- @@ -54,13 +54,13 @@ OPTIONS Show the progress of checking files out. --trivial:: - Restrict three-way merge by `git-read-tree` to happen + Restrict three-way merge by 'git-read-tree' to happen only if there is no file-level merging required, instead of resolving merge for trivial cases and leaving conflicting files unresolved in the index. --aggressive:: - Usually a three-way merge by `git-read-tree` resolves + Usually a three-way merge by 'git-read-tree' resolves the merge for really trivial cases and leaves other cases unresolved in the index, so that Porcelains can implement different merge policies. This flag makes the @@ -113,7 +113,7 @@ OPTIONS Merging ------- -If `-m` is specified, `git-read-tree` can perform 3 kinds of +If `-m` is specified, 'git-read-tree' can perform 3 kinds of merge, a single tree merge if only 1 tree is given, a fast-forward merge with 2 trees, or a 3-way merge if 3 trees are provided. @@ -121,18 +121,18 @@ provided. Single Tree Merge ~~~~~~~~~~~~~~~~~ -If only 1 tree is specified, `git-read-tree` operates as if the user did not +If only 1 tree is specified, 'git-read-tree' operates as if the user did not 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 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 <newtree>` followed by a -`git checkout-index -f -u -a`, the `git-checkout-index` only checks out +`git checkout-index -f -u -a`, the 'git-checkout-index' only checks out the stuff that really changed. -This is used to avoid unnecessary false hits when `git-diff-files` is -run after `git-read-tree`. +This is used to avoid unnecessary false hits when 'git-diff-files' is +run after 'git-read-tree'. Two Tree Merge @@ -143,7 +143,7 @@ is the head commit of the current repository, and $M is the head of a foreign tree, which is simply ahead of $H (i.e. we are in a fast forward situation). -When two trees are specified, the user is telling `git-read-tree` +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 @@ -193,10 +193,10 @@ Here are the "carry forward" rules: 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 +'git-read-tree' keeps the copy in the work tree intact when operating under the -u flag. -When this form of `git-read-tree` returns successfully, you can +When this form of 'git-read-tree' returns successfully, you can see what "local changes" you made are carried forward by running `git diff-index --cached $M`. Note that this does not necessarily match `git diff-index --cached $H` would have @@ -213,7 +213,7 @@ output after two-tree merge. Each "index" entry has two bits worth of "stage" state. stage 0 is the normal one, and is the only one you'd see in any kind of normal use. -However, when you do `git-read-tree` with three trees, the "stage" +However, when you do 'git-read-tree' with three trees, the "stage" starts out at 1. This means that you can do @@ -229,7 +229,7 @@ branch into the current branch, we use the common ancestor tree as <tree1>, the current branch head as <tree2>, and the other branch head as <tree3>. -Furthermore, `git-read-tree` has special-case logic that says: if you see +Furthermore, 'git-read-tree' has special-case logic that says: if you see a file that matches in all respects in the following states, it "collapses" back to "stage0": @@ -245,7 +245,7 @@ a file that matches in all respects in the following states, it - stage 1 and stage 3 are the same and stage 2 is different take stage 2 (we did something while they did nothing) -The `git-write-tree` command refuses to write a nonsensical tree, and it +The 'git-write-tree' command refuses to write a nonsensical tree, and it will complain about unmerged entries if it sees a single entry that is not stage 0. @@ -261,7 +261,7 @@ start a 3-way merge with an index file that is already populated. Here is an outline of how the algorithm works: - if a file exists in identical format in all three trees, it will - automatically collapse to "merged" state by `git-read-tree`. + automatically collapse to "merged" state by 'git-read-tree'. - a file that has _any_ difference what-so-ever in the three trees will stay as separate entries in the index. It's up to "porcelain @@ -285,8 +285,8 @@ populated. Here is an outline of how the algorithm works: matching "stage1" entry if it exists too. .. all the normal trivial rules .. -You would normally use `git-merge-index` with supplied -`git-merge-one-file` to do this last step. The script updates +You would normally use 'git-merge-index' with supplied +'git-merge-one-file' to do this last step. The script updates the files in the working tree as it merges each path and at the end of a successful merge. @@ -308,7 +308,7 @@ $ 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 +You do random edits, without running 'git-update-index'. And then you notice that the tip of your "upstream" tree has advanced since you pulled from him: @@ -334,14 +334,14 @@ your work-in-progress changes, and your work tree would be updated to the result of the merge. However, if you have local changes in the working tree that -would be overwritten by this merge, `git-read-tree` will refuse +would be overwritten by this merge, 'git-read-tree' will refuse to run to prevent your changes from being lost. In other words, there is no need to worry about what exists only in the working tree. When you have local changes in a part of the project that is not involved in the merge, your changes do not interfere with the merge, and are kept intact. When they -*do* interfere, the merge does not even start (`git-read-tree` +*do* interfere, the merge does not even start ('git-read-tree' complains loudly and fails without modifying anything). In such a case, you can simply continue doing what you were in the middle of doing, and when your working tree is ready (i.e. you |