1597 lines
		
	
	
		
			67 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1597 lines
		
	
	
		
			67 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| This is magit.info, produced by makeinfo version 4.13 from magit.texi.
 | ||
| 
 | ||
| Magit is an interface to the version control system Git, implemented as
 | ||
| an Emacs package.
 | ||
| 
 | ||
|    Unlike Emacs's native Version Control package which strives to
 | ||
| provide a unified interface to various version control systems, Magit
 | ||
| only supports Git and can therefor better take advantage of its native
 | ||
| features.
 | ||
| 
 | ||
|    You are looking at the manual for the `1.4.0' release.
 | ||
| 
 | ||
|    Magit supports GNU Emacs 23.2 or later; 24.1 or later is recommended.
 | ||
| Magit supports Git 1.7.2.5 or later; 1.8.2 or later is recommended.
 | ||
| 
 | ||
|    When something breaks please see the curated list of known issues
 | ||
| (https://github.com/magit/magit/wiki/Known-Issues) and the FAQ
 | ||
| (https://github.com/magit/magit/wiki/FAQ).  If that doesn't help check
 | ||
| the list of all open issues issues
 | ||
| (https://github.com/magit/magit/issues).
 | ||
| 
 | ||
|    If everything else fails please open a new issue or ask for help on
 | ||
| the mailing list
 | ||
| (https://groups.google.com/forum/?fromgroups#!forum/magit).
 | ||
| 
 | ||
|    Copyright (C) 2008-2015 The Magit Project Developers
 | ||
| 
 | ||
|      Permission is granted to copy, distribute and/or modify this
 | ||
|      document under the terms of the GNU Free Documentation License,
 | ||
|      Version 1.2 or any later version published by the Free Software
 | ||
|      Foundation; with no Invariant Sections, with no Front-Cover Texts,
 | ||
|      and with no Back-Cover Texts.  A copy of the license is included
 | ||
|      in the section entitled "GNU Free Documentation License".
 | ||
| 
 | ||
| INFO-DIR-SECTION Emacs
 | ||
| START-INFO-DIR-ENTRY
 | ||
| * Magit (1.4.0): (magit). Using Git from Emacs with Magit. (1.4.0)
 | ||
| END-INFO-DIR-ENTRY
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Top,  Next: Introduction,  Up: (dir)
 | ||
| 
 | ||
| Magit User Manual (1.4.0)
 | ||
| *************************
 | ||
| 
 | ||
| Magit is an interface to the version control system Git, implemented as
 | ||
| an Emacs package.
 | ||
| 
 | ||
|    Unlike Emacs's native Version Control package which strives to
 | ||
| provide a unified interface to various version control systems, Magit
 | ||
| only supports Git and can therefor better take advantage of its native
 | ||
| features.
 | ||
| 
 | ||
|    You are looking at the manual for the `1.4.0' release.
 | ||
| 
 | ||
|    Magit supports GNU Emacs 23.2 or later; 24.1 or later is recommended.
 | ||
| Magit supports Git 1.7.2.5 or later; 1.8.2 or later is recommended.
 | ||
| 
 | ||
|    When something breaks please see the curated list of known issues
 | ||
| (https://github.com/magit/magit/wiki/Known-Issues) and the FAQ
 | ||
| (https://github.com/magit/magit/wiki/FAQ).  If that doesn't help check
 | ||
| the list of all open issues issues
 | ||
| (https://github.com/magit/magit/issues).
 | ||
| 
 | ||
|    If everything else fails please open a new issue or ask for help on
 | ||
| the mailing list
 | ||
| (https://groups.google.com/forum/?fromgroups#!forum/magit).
 | ||
| 
 | ||
|    Copyright (C) 2008-2015 The Magit Project Developers
 | ||
| 
 | ||
|      Permission is granted to copy, distribute and/or modify this
 | ||
|      document under the terms of the GNU Free Documentation License,
 | ||
|      Version 1.2 or any later version published by the Free Software
 | ||
|      Foundation; with no Invariant Sections, with no Front-Cover Texts,
 | ||
|      and with no Back-Cover Texts.  A copy of the license is included
 | ||
|      in the section entitled "GNU Free Documentation License".
 | ||
| 
 | ||
| * Menu:
 | ||
| 
 | ||
| * Introduction::
 | ||
| * Acknowledgments::
 | ||
| * Sections::
 | ||
| * Status::
 | ||
| * Untracked files::
 | ||
| * Staging and Committing::
 | ||
| * History::
 | ||
| * Reflogs::
 | ||
| * Commit Buffer::
 | ||
| * Diffing::
 | ||
| * Tagging::
 | ||
| * Resetting::
 | ||
| * Stashing::
 | ||
| * Branches and Remotes::
 | ||
| * Wazzup::
 | ||
| * Merging::
 | ||
| * Rebasing::
 | ||
| * Interactive Rebasing::
 | ||
| * Rewriting::
 | ||
| * Pushing and Pulling::
 | ||
| * Submodules::
 | ||
| * Bisecting::
 | ||
| * Finding commits not merged upstream::
 | ||
| * Using Magit Extensions::
 | ||
| * Using Git Directly::
 | ||
| * GNU Free Documentation License::
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Introduction,  Next: Acknowledgments,  Prev: Top,  Up: Top
 | ||
| 
 | ||
| 1 Introduction
 | ||
| **************
 | ||
| 
 | ||
| With Magit, you can inspect and modify your Git repositories with
 | ||
| Emacs.  You can review and commit the changes you have made to the
 | ||
| tracked files, for example, and you can browse the history of past
 | ||
| changes.  There is support for cherry picking, reverting, merging,
 | ||
| rebasing, and other common Git operations.
 | ||
| 
 | ||
|    Magit is not a complete interface to Git; it just aims to make the
 | ||
| most common Git operations convenient.  Thus, Magit will likely not
 | ||
| save you from learning Git itself.
 | ||
| 
 | ||
|    This manual provides a tour of many Magit features.  It isn't an
 | ||
| introduction to version control in general, or to Git in particular.
 | ||
| 
 | ||
|    The main entry point to Magit is `M-x magit-status', which puts you
 | ||
| in Magit's status buffer.  You will be using it frequently, so it is
 | ||
| probably a good idea to globally bind `magit-status' to a key of your
 | ||
| choice.
 | ||
| 
 | ||
|    In addition to the status buffer, Magit will also create buffers that
 | ||
| show lists of commits, buffers with diffs, and other kinds of buffers.
 | ||
| All these buffers are in a mode derived from `magit-mode' and have the
 | ||
| similar key bindings.  Not all commands make sense in all contexts, but
 | ||
| a given key will do the same thing in different Magit buffers.
 | ||
| 
 | ||
|    Naturally, Magit runs the `git' command to do most of the work.  The
 | ||
| `*magit-process*' buffer contains the transcript of the most recent
 | ||
| command.  You can switch to it with `$'.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Acknowledgments,  Next: Sections,  Prev: Introduction,  Up: Top
 | ||
| 
 | ||
| 2 Acknowledgments
 | ||
| *****************
 | ||
| 
 | ||
| Our thank goes to all current and past contributors, Marius Vollmer who
 | ||
| started the project, and all retired and current maintainers, Phil
 | ||
| Jackson, Peter J. Weisberg, Rémi Vanicat, Nicolas Dudebout, Yann
 | ||
| Hodique, and Jonas Bernoulli.
 | ||
| 
 | ||
|    For a full list of contributors, see the AUTHORS.md file at the
 | ||
| top-level directory of this distribution or at AUTHORS.md
 | ||
| (https://github.com/magit/magit/tree/master/AUTHORS.md).
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Sections,  Next: Status,  Prev: Acknowledgments,  Up: Top
 | ||
| 
 | ||
| 3 Sections
 | ||
| **********
 | ||
| 
 | ||
| All Magit buffers are structured into nested 'sections'.  These
 | ||
| sections can be hidden and shown individually.  When a section is
 | ||
| hidden, only its first line is shown and all its children are
 | ||
| completely invisible.
 | ||
| 
 | ||
|    The most fine-grained way to control the visibility of sections is
 | ||
| the `TAB' key.  It will to toggle the current section (the section that
 | ||
| contains point) between being hidden and being shown.
 | ||
| 
 | ||
|    Typing `S-TAB' toggles the visibility of the children of the current
 | ||
| section.  When all of them are shown, they will all be hidden.
 | ||
| Otherwise, when some or all are hidden, they will all be shown.
 | ||
| 
 | ||
|    The digit keys `1', `2', `3', and `4' control the visibility of
 | ||
| sections based on levels.  Hitting `2', for example, will show sections
 | ||
| on levels one and two, and will hide sections on level 3.  However,
 | ||
| only sections that are a parent or child of the current section are
 | ||
| affected.
 | ||
| 
 | ||
|    For example, when the current section is on level 3 and you hit `1',
 | ||
| the grand-parent of the current section (which is on level one) will be
 | ||
| shown, and the parent of the current section (level 2) will be hidden.
 | ||
| The visibility of no other section will be changed.
 | ||
| 
 | ||
|    This sounds a bit complicated, but you'll figure it out.
 | ||
| 
 | ||
|    Using `M-1', `M-2', `M-3', and `M-4' is similar to the unmodified
 | ||
| digits, but now all sections on the respective level are affected,
 | ||
| regardless of whether or not they are related to the current section.
 | ||
| 
 | ||
|    For example, `M-1' will only show the first lines of the top-level
 | ||
| sections and will hide everything else.  Typing `M-4' on the other hand
 | ||
| will show everything.
 | ||
| 
 | ||
|    Because of the way the status buffer is set up, some changes to
 | ||
| section visibility are more common than others.  Files are on level 2
 | ||
| and diff hunks are on level 4.  Thus, you can type `2' to collapse the
 | ||
| diff of the current file, and `M-2' to collapse all files.  This
 | ||
| returns the status buffer to its default setup and is a quick way to
 | ||
| unclutter it after drilling down into the modified files.
 | ||
| 
 | ||
|    Because `2' and `M-2' are so common in the status buffer, they are
 | ||
| bound to additional, more mnemonic keys: `M-h' (hide) and `M-H' (hide
 | ||
| all).  Likewise `4' and `M-4' are also available as `M-s' (show) and
 | ||
| `M-S' (show all).
 | ||
| 
 | ||
|    In other buffers than the status buffer, `M-h', `M-H', `M-s', and
 | ||
| `M-S' might work on different levels than on 2 and 4, but they keep
 | ||
| their general meaning: `M-H' hides all detail, and `M-S' shows
 | ||
| everything.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Status,  Next: Untracked files,  Prev: Sections,  Up: Top
 | ||
| 
 | ||
| 4 Status
 | ||
| ********
 | ||
| 
 | ||
| Running `M-x magit-status' displays the main interface of Magit, the
 | ||
| status buffer.  You can have multiple status buffers active at the same
 | ||
| time, each associated with its own Git repository.
 | ||
| 
 | ||
|    When invoking `M-x magit-status' from within a Git repository, it
 | ||
| will switch to the status buffer of that repository.  Otherwise, it
 | ||
| will prompt for a directory.  With a prefix argument, it will always
 | ||
| prompt.
 | ||
| 
 | ||
|    You can set `magit-repo-dirs' to customize how `magit-status' asks
 | ||
| for the repository to work on.  When `magit-repo-dirs' is nil,
 | ||
| `magit-status' will simply ask for a directory.
 | ||
| 
 | ||
|    If you specify a directory that is not a Git repository, `M-x
 | ||
| magit-status' will offer to initialize it as one.
 | ||
| 
 | ||
|    When `magit-repo-dirs' is not nil, it is treated as a list of
 | ||
| directory names, and `magit-status' will find all Git repositories in
 | ||
| those directories and offer them for completion.  (Magit will only look
 | ||
| `magit-repo-dirs-depth' levels deep, however.)
 | ||
| 
 | ||
|    With two prefix arguments, `magit-status' will always prompt for a
 | ||
| raw directory.
 | ||
| 
 | ||
|    Thus, you would normally set `magit-repo-dirs' to the places where
 | ||
| you keep most of your Git repositories and switch between them with
 | ||
| `C-u M-x magit-status'.  If you want to go to a repository outside of
 | ||
| your normal working areas, or if you want to create a new repository,
 | ||
| you would use `C-u C-u M-x magit-status'.
 | ||
| 
 | ||
|    You need to explicitly refresh the status buffer when you have made
 | ||
| changes to the repository from outside of Emacs.  You can type `g' in
 | ||
| the status buffer itself, or just use `M-x magit-status' instead of
 | ||
| `C-x b' when switching to it.  You also need to refresh the status
 | ||
| buffer in this way after saving a file in Emacs.
 | ||
| 
 | ||
|    The header at the top of the status buffer shows a short summary of
 | ||
| the repository state: where it is located, which branch is checked out,
 | ||
| etc.  Below the header are a number of sections that show details about
 | ||
| the working tree and the staging area.  You can hide and show them as
 | ||
| described in the previous section.
 | ||
| 
 | ||
|    The first section shows _Untracked files_, if there are any.  See
 | ||
| *note Untracked files:: for more details.
 | ||
| 
 | ||
|    The next two sections show your local changes.  They are explained
 | ||
| fully in the next chapter, *note Staging and Committing::.
 | ||
| 
 | ||
|    If the current branch is associated with a remote tracking branch,
 | ||
| the status buffer shows the differences between the current branch and
 | ||
| the tracking branch.  See *note Pushing and Pulling:: for more
 | ||
| information.
 | ||
| 
 | ||
|    During a history rewriting session, the status buffer shows the
 | ||
| _Pending changes_ and _Pending commits_ sections.  See *note
 | ||
| Rewriting:: for more details.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Untracked files,  Next: Staging and Committing,  Prev: Status,  Up: Top
 | ||
| 
 | ||
| 5 Untracked files
 | ||
| *****************
 | ||
| 
 | ||
| Untracked files are shown in the _Untracked files_ section.
 | ||
| 
 | ||
|    You can add an untracked file to the staging area with `s'.  If
 | ||
| point is on the _Untracked files_ section title when you hit `s', all
 | ||
| untracked files are staged.
 | ||
| 
 | ||
|    Typing `C-u S' anywhere will also stage all untracked files,
 | ||
| together with all changes to the tracked files.
 | ||
| 
 | ||
|    You can instruct Git to ignore them by typing `i'.  This will add
 | ||
| the filename to the `.gitignore' file.  Typing `C-u i' will ask you for
 | ||
| the name of the file to ignore.  This is useful to ignore whole
 | ||
| directories, for example.  In this case, the minibuffer's future history
 | ||
| (accessible with `M-n') contains predefined values (such as wildcards)
 | ||
| that might be of interest.  If prefix argument is negative (for example
 | ||
| after typing `C-- i'), the prompt proposes wildcard by default.  The
 | ||
| `I' command is similar to `i' but will add the file to
 | ||
| `.git/info/exclude' instead.
 | ||
| 
 | ||
|    To delete an untracked file forever, use `k'.  If point is on the
 | ||
| _Untracked files_ section title when you hit `k', all untracked files
 | ||
| are deleted.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Staging and Committing,  Next: History,  Prev: Untracked files,  Up: Top
 | ||
| 
 | ||
| 6 Staging and Committing
 | ||
| ************************
 | ||
| 
 | ||
| Committing with Git is a two step process: first you add the changes
 | ||
| you want to commit to a 'staging area' or 'index', and then you commit
 | ||
| them to the repository.  This allows you to only commit a subset of the
 | ||
| changes in the working tree.  If you are not familiar with this concept
 | ||
| yet, then you should change that as soon as possible using one of the
 | ||
| fine Git tutorials.  If you don't, then Git and by extension Magit will
 | ||
| seem rather strange.
 | ||
| 
 | ||
|    Magit shows uncommitted changes in two sections, depending on whether
 | ||
| the changes have been staged yet.  The _Staged changes_ section shows
 | ||
| the changes that will be included in the next commit, while the
 | ||
| _Unstaged changes_ section shows the changes that will be left out.
 | ||
| 
 | ||
|    To move an unstaged hunk into the staging area, move point into the
 | ||
| hunk and type `s'.  Likewise, to unstage a hunk, move point into it and
 | ||
| type `u'.  If point is in a diff header when you type `s' or `u', all
 | ||
| hunks belonging to that diff are moved at the same time.
 | ||
| 
 | ||
|    Currently it is only possible to stage from the status buffer.
 | ||
| Staging and unstaging from diff buffers that show unstaged and staged
 | ||
| changes is not possible yet.
 | ||
| 
 | ||
|    If the region is active when you type `s' or `u', only the changes
 | ||
| in the region are staged or unstaged.  (This works line by line: if the
 | ||
| beginning of a line is in the region it is included in the changes,
 | ||
| otherwise it is not.)
 | ||
| 
 | ||
|    To change the size of the hunks, you can type `+' or `-' to increase
 | ||
| and decrease, respectively.  Typing `0' will reset the hunk size to the
 | ||
| default.
 | ||
| 
 | ||
|    Typing `C-u s' will ask you for a name of a file to be staged, for
 | ||
| example to stage files that are hidden.
 | ||
| 
 | ||
|    To move all hunks of all diffs into the staging area in one go, type
 | ||
| `S'.  To unstage everything, type `U'.
 | ||
| 
 | ||
|    Typing `C-u S' will stage all untracked files in addition to the
 | ||
| changes to tracked files.
 | ||
| 
 | ||
|    You can discard uncommitted changes by moving point into a hunk and
 | ||
| typing `k'.  The changes to discard are selected as with `s' and `u'.
 | ||
| 
 | ||
|    Before committing, you should write a short description of the
 | ||
| changes.
 | ||
| 
 | ||
|    Type `c c' to pop up a buffer where you can write your change
 | ||
| description.  Once you are happy with the description, type `C-c C-c'
 | ||
| in that buffer to perform the commit.
 | ||
| 
 | ||
|    If you want to write changes in a `ChangeLog' file, you can use `C-x
 | ||
| 4 a' on a diff hunk.
 | ||
| 
 | ||
|    Typing `c c' when the staging area is unused is a special situation.
 | ||
| Normally, the next commit would be empty, but you can configure Magit
 | ||
| to do something more useful by customizing the
 | ||
| `magit-commit-all-when-nothing-staged' variable.  One choice is to
 | ||
| instruct the subsequent `C-c C-c' to commit all changes.  Another
 | ||
| choice is stage everything at the time of hitting `c c'.
 | ||
| 
 | ||
|    Typing `M-n' or `M-p' will cycle through the
 | ||
| `log-edit-comment-ring', which will have your previous log messages.
 | ||
| This is particularly useful if you have a hook that occasionally causes
 | ||
| git to refuse your commit.
 | ||
| 
 | ||
|    To abort a commit use `C-c C-k'.  The commit message is saved and
 | ||
| can later be retrieved in the commit message buffer using `M-n' and
 | ||
| `M-p'.
 | ||
| 
 | ||
|    Typing `C' will also pop up the change description buffer, but in
 | ||
| addition, it will try to insert a ChangeLog-style entry for the change
 | ||
| that point is in.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: History,  Next: Reflogs,  Prev: Staging and Committing,  Up: Top
 | ||
| 
 | ||
| 7 History
 | ||
| *********
 | ||
| 
 | ||
| To show the repository history of your current head, type `l l'.  A new
 | ||
| buffer will be shown that displays the history in a terse form.  The
 | ||
| first paragraph of each commit message is displayed, next to a
 | ||
| representation of the relationships between commits.
 | ||
| 
 | ||
|    To show the repository history between two branches or between any
 | ||
| two points of the history, type `l r l'.  You will be prompted to enter
 | ||
| references for starting point and ending point of the history range; you
 | ||
| can use auto-completion to specify them.  A typical use case for ranged
 | ||
| history log display would be `l r l master RET new-feature RET' that
 | ||
| will display commits on the new-feature branch that are not in master;
 | ||
| these commits can then be inspected and cherry-picked, for example.
 | ||
| 
 | ||
|    More thorough filtering can be done by supplying `l' with one or
 | ||
| more suffix arguments, as displayed in its popup.  `=g' ('Grep') for
 | ||
| example, limits the output to commits of which the log message matches
 | ||
| a specific string/regex.
 | ||
| 
 | ||
|    Typing `l L' (or `l C-u L') will show the log in a more verbose form.
 | ||
| 
 | ||
|    Magit will show only `magit-log-cutoff-length' entries.  `e' will
 | ||
| show twice as many entries.  `C-u e' will show all entries, and given a
 | ||
| numeric prefix argument, `e' will add this number of entries.
 | ||
| 
 | ||
|    You can move point to a commit and then cause various things to
 | ||
| happen with it.  (The following commands work in any list of commits,
 | ||
| such as the one shown in the _Unpushed commits_ section.)
 | ||
| 
 | ||
|    Typing `RET' will pop up more information about the current commit
 | ||
| and move point into the new buffer.  *Note Commit Buffer::.  Typing
 | ||
| `SPC' and `DEL' will also show the information, but will scroll the new
 | ||
| buffer up or down (respectively) when typed again.
 | ||
| 
 | ||
|    Typing `a' will apply the current commit to your current branch.
 | ||
| This is useful when you are browsing the history of some other branch
 | ||
| and you want to `cherry-pick' some changes from it.  A typical
 | ||
| situation is applying selected bug fixes from the development version
 | ||
| of a program to a release branch.  The cherry-picked changes will not
 | ||
| be committed automatically; you need to do that explicitly.
 | ||
| 
 | ||
|    Typing `A' will cherry-pick the current commit and will also commit
 | ||
| the changes automatically when there have not been any conflicts.
 | ||
| 
 | ||
|    Typing `v' will revert the current commit.  Thus, it will apply the
 | ||
| changes made by that commit in reverse.  This is obviously useful to
 | ||
| cleanly undo changes that turned out to be wrong.  As with `a', you
 | ||
| need to commit the changes explicitly.
 | ||
| 
 | ||
|    Typing `C-w' will copy the sha1 of the current commit into the kill
 | ||
| ring.
 | ||
| 
 | ||
|    Typing `=' will show the differences from the current commit to the
 | ||
| "marked" commit.
 | ||
| 
 | ||
|    You can mark the current commit by typing `.'.  When the current
 | ||
| commit is already marked, typing `.' will unmark it.  To unmark the
 | ||
| marked commit no matter where point is, use `C-u .'.
 | ||
| 
 | ||
|    Some commands, such as `=', will use the current commit and the
 | ||
| marked commit as implicit arguments.  Other commands will offer the
 | ||
| marked commit as a default when prompting for their arguments.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Reflogs,  Next: Commit Buffer,  Prev: History,  Up: Top
 | ||
| 
 | ||
| 8 Reflogs
 | ||
| *********
 | ||
| 
 | ||
| You can use `l h' and `l H' to browse your _reflog_, the local history
 | ||
| of changes made to your repository heads.  Typing `H' will ask for a
 | ||
| head, while `l h' will show the reflog of `HEAD'.
 | ||
| 
 | ||
|    The resulting buffer is just like the buffer produced by `l l' and
 | ||
| `l L' that shows the commit history.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Commit Buffer,  Next: Diffing,  Prev: Reflogs,  Up: Top
 | ||
| 
 | ||
| 9 Commit Buffer
 | ||
| ***************
 | ||
| 
 | ||
| When you view a commit (perhaps by selecting it in the log buffer,
 | ||
| *note History::), the "commit buffer" is displayed, showing you
 | ||
| information about the commit and letting you interact with it.
 | ||
| 
 | ||
|    By placing your cursor within the diff or hunk and typing `a', you
 | ||
| can apply the same patch to your working copy.  This is useful when you
 | ||
| want to copy a change from another branch, but don't necessarily want
 | ||
| to cherry-pick the whole commit.
 | ||
| 
 | ||
|    By typing `v' you can apply the patch in reverse, removing all the
 | ||
| lines that were added and adding all the lines that were removed.  This
 | ||
| is a convenient way to remove a change after determining that it
 | ||
| introduced a bug.
 | ||
| 
 | ||
|    If the commit message refers to any other commits in the repository
 | ||
| by their unique hash, the hash will be highlighted and you will be able
 | ||
| to visit the referenced commit either by clicking on it or by moving
 | ||
| your cursor onto it and pressing `RET'.
 | ||
| 
 | ||
|    The commit buffer maintains a history of the commits it has shown.
 | ||
| After visiting a referenced commit you can type `C-c C-b' to get back
 | ||
| to where you came from.  To go forward in the history, type `C-c C-f'.
 | ||
| There are also `[back]' and `[forward]' buttons at the bottom of the
 | ||
| buffer.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Diffing,  Next: Tagging,  Prev: Commit Buffer,  Up: Top
 | ||
| 
 | ||
| 10 Diffing
 | ||
| **********
 | ||
| 
 | ||
| Magit typically shows diffs in the "unified" format.
 | ||
| 
 | ||
|    In any buffer that shows a diff, you can type `e' anywhere within
 | ||
| the diff to show the two versions of the file in Ediff.  If the diff is
 | ||
| of a file in the status buffer that needs to be merged, you will be
 | ||
| able to use Ediff as an interactive merge tool.  Otherwise, Ediff will
 | ||
| simply show the two versions of the file.
 | ||
| 
 | ||
|    To show the changes from your working tree to another revision, type
 | ||
| `d'.  To show the changes between two arbitrary revisions, type `D'.
 | ||
| 
 | ||
|    You can use `a' within the diff output to apply the changes to your
 | ||
| working tree.  As usual when point is in a diff header for a file, all
 | ||
| changes for that file are applied, and when it is in a hunk, only that
 | ||
| hunk is.  When the region is active, the applied changes are restricted
 | ||
| to that region.
 | ||
| 
 | ||
|    Typing `v' will apply the selected changes in reverse.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Tagging,  Next: Resetting,  Prev: Diffing,  Up: Top
 | ||
| 
 | ||
| 11 Tagging
 | ||
| **********
 | ||
| 
 | ||
| Typing `t t' will make a lightweight tag.  Typing `t a' will make an
 | ||
| annotated tag.  It will put you in the normal `*magit-log-edit' buffer
 | ||
| for writing commit messages, but typing `C-c C-c' in it will make the
 | ||
| tag instead.  This is controlled by the `Tag' field that will be added
 | ||
| to the `*magit-log-edit*' buffer.  You can edit it, if you like.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Resetting,  Next: Stashing,  Prev: Tagging,  Up: Top
 | ||
| 
 | ||
| 12 Resetting
 | ||
| ************
 | ||
| 
 | ||
| Once you have added a commit to your local repository, you can not
 | ||
| change that commit anymore in any way.  But you can reset your current
 | ||
| head to an earlier commit and start over.
 | ||
| 
 | ||
|    If you have published your history already, rewriting it in this way
 | ||
| can be confusing and should be avoided.  However, rewriting your local
 | ||
| history is fine and it is often cleaner to fix mistakes this way than
 | ||
| by reverting commits (with `v', for example).
 | ||
| 
 | ||
|    Typing `x' will ask for a revision and reset your current head to
 | ||
| it.  No changes will be made to your working tree and staging area.
 | ||
| Thus, the _Staged changes_ section in the status buffer will show the
 | ||
| changes that you have removed from your commit history.  You can commit
 | ||
| the changes again as if you had just made them, thus rewriting history.
 | ||
| 
 | ||
|    Typing `x' while point is in a line that describes a commit will
 | ||
| offer this commit as the default revision to reset to.  Thus, you can
 | ||
| move point to one of the commits in the _Unpushed commits_ section and
 | ||
| hit `x RET' to reset your current head to it.
 | ||
| 
 | ||
|    Type `X' to reset your working tree and staging area to the most
 | ||
| recently committed state.  This will discard your local modifications,
 | ||
| so be careful.
 | ||
| 
 | ||
|    You can give a prefix to `x' if you want to reset both the current
 | ||
| head and your working tree to a given commit.  This is the same as
 | ||
| first using an unprefixed `x' to reset only the head, and then using
 | ||
| `X'.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Stashing,  Next: Branches and Remotes,  Prev: Resetting,  Up: Top
 | ||
| 
 | ||
| 13 Stashing
 | ||
| ***********
 | ||
| 
 | ||
| You can create a new stash with `z z'.  Your stashes will be listed in
 | ||
| the status buffer, and you can apply them with `a' and pop them with
 | ||
| `A'.  To drop a stash, use `k'.
 | ||
| 
 | ||
|    With a prefix argument, both `a' and `A' will attempt to reinstate
 | ||
| the index as well as the working tree from the stash.
 | ||
| 
 | ||
|    Typing `z -k z' will create a stash just like `z z', but will leave
 | ||
| the changes in your working tree and index.  This makes it easier to,
 | ||
| for example, test multiple variations of the same change.
 | ||
| 
 | ||
|    If you just want to make quick snapshots in between edits, you can
 | ||
| use `z s', which automatically enters a timestamp as description, and
 | ||
| keeps your working tree and index intact by default.
 | ||
| 
 | ||
|    You can visit and show stashes in the usual way: Typing `SPC' and
 | ||
| `DEL' will pop up a buffer with the description of the stash and scroll
 | ||
| it, typing `RET' will move point into that buffer.  Using `C-u RET'
 | ||
| will move point into that buffer in other window.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Branches and Remotes,  Next: Wazzup,  Prev: Stashing,  Up: Top
 | ||
| 
 | ||
| 14 Branches and Remotes
 | ||
| ***********************
 | ||
| 
 | ||
| The current branch is indicated in the header of the status buffer.  If
 | ||
| this branch is tracking a remote branch, the latter is also indicated.
 | ||
| 
 | ||
|    Branches and remotes can be manipulated directly with a popup menu or
 | ||
| through the branch manager.  Using the popup menu allows you to quickly
 | ||
| make changes from any magit buffer.  The branch manager is a separate
 | ||
| buffer called `*magit-branches*'.  It displays information about
 | ||
| branches and remotes and offers a local key map for shorter key
 | ||
| bindings.  The two interaction methods are described in more details
 | ||
| below.
 | ||
| 
 | ||
| * Menu:
 | ||
| 
 | ||
| * Branches Popup::
 | ||
| * Remotes Popup::
 | ||
| * Branches in the Branch Manager::
 | ||
| * Remotes in the Branch Manager::
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Branches Popup,  Next: Remotes Popup,  Up: Branches and Remotes
 | ||
| 
 | ||
| 14.1 Branches Popup
 | ||
| ===================
 | ||
| 
 | ||
| Typing `b' will display a popup menu to manipulate branches.
 | ||
| 
 | ||
|    You can switch to a different branch by typing `b b'.  This will
 | ||
| immediately checkout the branch into your working copy, so you
 | ||
| shouldn't have any local modifications when switching branches.
 | ||
| 
 | ||
|    If you try to switch to a remote branch, Magit will offer to create a
 | ||
| local tracking branch for it instead.  This way, you can easily start
 | ||
| working on new branches that have appeared in a remote repository.
 | ||
| 
 | ||
|    Typing `b b' while point is at a commit description will offer that
 | ||
| commit as the default to switch to.  This will result in a detached
 | ||
| head.
 | ||
| 
 | ||
|    To create a new branch and switch to it immediately, type `b c'.
 | ||
| 
 | ||
|    To delete a branch, type `b k'.  If you're currently on that branch,
 | ||
| Magit will offer to switch to the 'master' branch.
 | ||
| 
 | ||
|    Typing  `b r' will let you rename a branch.  Unless a branch with
 | ||
| the same name already exists, obviously...
 | ||
| 
 | ||
|    Deleting a branch is only possible if it's already fully merged into
 | ||
| HEAD or its upstream branch.  Unless you type `b C-u k', that is.  Here
 | ||
| be dragons...
 | ||
| 
 | ||
|    Typing `b v' will launch the branch manager.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Remotes Popup,  Next: Branches in the Branch Manager,  Prev: Branches Popup,  Up: Branches and Remotes
 | ||
| 
 | ||
| 14.2 Remotes Popup
 | ||
| ==================
 | ||
| 
 | ||
| Typing `M' will display a popup menu to manipulate remotes.
 | ||
| 
 | ||
|    To add a new remote, type  `M a'.
 | ||
| 
 | ||
|    To delete a remote type `M k'.
 | ||
| 
 | ||
|    Typing `M r' will let you rename a remote.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Branches in the Branch Manager,  Next: Remotes in the Branch Manager,  Prev: Remotes Popup,  Up: Branches and Remotes
 | ||
| 
 | ||
| 14.3 Branches in the Branch Manager
 | ||
| ===================================
 | ||
| 
 | ||
| In the branch manager, each branch is displayed on a separate line.  The
 | ||
| current local branch is marked by a "*" in front of the name.  Remote
 | ||
| branches are grouped by the remote they come from.
 | ||
| 
 | ||
|    If a local branch tracks a remote branch some extra information is
 | ||
| printed on the branch line.  The format  is the following: "<branch>
 | ||
| [<remote-branch>  <remote>: ahead <a>, behind <b>]".  "<remote-branch>"
 | ||
| is omitted if it is identical to "<branch>".  "ahead" and "behind"
 | ||
| information are only displayed if necessary.
 | ||
| 
 | ||
|    To check out a branch, move your cursor to the desired branch and
 | ||
| press `RET'.
 | ||
| 
 | ||
|    Typing `c' will create a new branch.
 | ||
| 
 | ||
|    Typing `k' will delete the branch in the current line, and `C-u k'
 | ||
| deletes it even if it hasn't been merged into the current local branch.
 | ||
| Deleting works for both local and remote branches.
 | ||
| 
 | ||
|    Typing `r' on a branch will rename it.
 | ||
| 
 | ||
|    Typing `T' on a local branch, changes which remote branch it tracks.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Remotes in the Branch Manager,  Prev: Branches in the Branch Manager,  Up: Branches and Remotes
 | ||
| 
 | ||
| 14.4 Remotes in the Branch Manager
 | ||
| ==================================
 | ||
| 
 | ||
| In the branch manager, each remote is displayed on a separate line.  The
 | ||
| format is the following "<remote> (<url>, <push-url>)".  "<push-url>"
 | ||
| is omitted if it is not set.  The associated branches are listed under
 | ||
| this line.
 | ||
| 
 | ||
|    Typing `a' will add a new remote.
 | ||
| 
 | ||
|    Typing `k' will delete the remote in the current line.
 | ||
| 
 | ||
|    Typing `r' on a remote will rename it.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Wazzup,  Next: Merging,  Prev: Branches and Remotes,  Up: Top
 | ||
| 
 | ||
| 15 Wazzup
 | ||
| *********
 | ||
| 
 | ||
| Typing `w' will show a summary of how your other branches relate to the
 | ||
| current branch.
 | ||
| 
 | ||
|    For each branch, you will get a section that lists the commits in
 | ||
| that branch that are not in the current branch.  The sections are
 | ||
| initially collapsed; you need to explicitly open them with `TAB' (or
 | ||
| similar) to show the lists of commits.
 | ||
| 
 | ||
|    When point is on a _N unmerged commits in ..._ title, the
 | ||
| corresponding branch will be offered as the default for a merge.
 | ||
| 
 | ||
|    Hitting `i' on a branch title will ignore this branch in the wazzup
 | ||
| view.  You can use `C-u w' to show all branches, including the ignored
 | ||
| ones.  Hitting `i' on an already ignored branch in that view will
 | ||
| unignore it.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Merging,  Next: Rebasing,  Prev: Wazzup,  Up: Top
 | ||
| 
 | ||
| 16 Merging
 | ||
| **********
 | ||
| 
 | ||
| Magit offers two ways to merge branches: manual and automatic.  A
 | ||
| manual merge will apply all changes to your working tree and staging
 | ||
| area, but will not commit them, while an automatic merge will go ahead
 | ||
| and commit them immediately.
 | ||
| 
 | ||
|    Type `m m' to initiate merge.
 | ||
| 
 | ||
|    After initiating a merge, the header of the status buffer might
 | ||
| remind you that the next commit will be a merge commit (with more than
 | ||
| one parent).  If you want to abort a manual merge, just do a hard reset
 | ||
| to HEAD with `X'.
 | ||
| 
 | ||
|    Merges can fail if the two branches you want to merge introduce
 | ||
| conflicting changes.  In that case, the automatic merge stops before the
 | ||
| commit, essentially falling back to a manual merge.  You need to resolve
 | ||
| the conflicts for example with `e' and stage the resolved files, for
 | ||
| example with `S'.
 | ||
| 
 | ||
|    You can not stage individual hunks one by one as you resolve them,
 | ||
| you can only stage whole files once all conflicts in them have been
 | ||
| resolved.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Rebasing,  Next: Interactive Rebasing,  Prev: Merging,  Up: Top
 | ||
| 
 | ||
| 17 Rebasing
 | ||
| ***********
 | ||
| 
 | ||
| Typing `R' in the status buffer will initiate a rebase or, if one is
 | ||
| already in progress, ask you how to continue.
 | ||
| 
 | ||
|    When a rebase is stopped in the middle because of a conflict, the
 | ||
| header of the status buffer will indicate how far along you are in the
 | ||
| series of commits that are being replayed.  When that happens, you
 | ||
| should resolve the conflicts and stage everything and hit `R c' to
 | ||
| continue the rebase.  Alternatively, hitting `c' or `C' while in the
 | ||
| middle of a rebase will also ask you whether to continue the rebase.
 | ||
| 
 | ||
|    Of course, you can initiate a rebase in any number of ways, by
 | ||
| configuring `git pull' to rebase instead of merge, for example.  Such a
 | ||
| rebase can be finished with `R' as well.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Interactive Rebasing,  Next: Rewriting,  Prev: Rebasing,  Up: Top
 | ||
| 
 | ||
| 18 Interactive Rebasing
 | ||
| ***********************
 | ||
| 
 | ||
| Typing `E' in the status buffer will initiate an interactive rebase.
 | ||
| This is equivalent to running `git rebase --interactive' at the command
 | ||
| line.  The `git-rebase-todo' file will be opened in an Emacs buffer for
 | ||
| you to edit.  This file is opened using `emacsclient', so just edit
 | ||
| this file as you normally would, then call the `server-edit' function
 | ||
| (typically bound to `C-x #') to tell Emacs you are finished editing,
 | ||
| and the rebase will proceed as usual.
 | ||
| 
 | ||
|    If you have loaded `rebase-mode.el' (which is included in the Magit
 | ||
| distribution), the `git-rebase-todo' buffer will be in `rebase-mode'.
 | ||
| This mode disables normal text editing but instead provides single-key
 | ||
| commands (shown in the buffer) to perform all the edits that you would
 | ||
| normally do manually, including changing the operation to be performed
 | ||
| each commit ("pick", "squash", etc.), deleting (commenting out) commits
 | ||
| from the list, and reordering commits.  You can finish editing the
 | ||
| buffer and proceed with the rebase by pressing `C-c C-c', which is
 | ||
| bound to `server-edit' in this mode, and you can abort the rebase with
 | ||
| `C-c C-k', just like when editing a commit message in Magit.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Rewriting,  Next: Pushing and Pulling,  Prev: Interactive Rebasing,  Up: Top
 | ||
| 
 | ||
| 19 Rewriting
 | ||
| ************
 | ||
| 
 | ||
| As hinted at earlier, you can rewrite your commit history.  For
 | ||
| example, you can reset the current head to an earlier commit with `x'.
 | ||
| This leaves the working tree unchanged, and the status buffer will show
 | ||
| all the changes that have been made since that new value of the current
 | ||
| head.  You can commit these changes again, possibly splitting them into
 | ||
| multiple commits as you go along.
 | ||
| 
 | ||
|    Amending your last commit is a common special case of rewriting
 | ||
| history like this.
 | ||
| 
 | ||
|    Another common way to rewrite history is to reset the head to an
 | ||
| earlier commit, and then to cherry pick the previous commits in a
 | ||
| different order.  You could pick them from the reflog, for example.
 | ||
| 
 | ||
|    Magit has several commands that can simplify the book keeping
 | ||
| associated with rewriting.  These commands all start with the `r'
 | ||
| prefix key.
 | ||
| 
 | ||
|    (Unless you already do so, we recommend that you don't use the
 | ||
| functionality described here.  It is semi-deprecated and will be
 | ||
| removed once its unique features have been ported to the `git rebase
 | ||
| --interactive' workflow.  Even now the latter is almost always the
 | ||
| better option.)
 | ||
| 
 | ||
|    Typing `r b' will start a rewrite operation.  You will be prompted
 | ||
| for a _base_ commit.  This commit and all subsequent commits up until
 | ||
| the current head are then put in a list of _Pending commits_, after
 | ||
| which the current head will be reset to the _parent_ of the base
 | ||
| commit.  This can be configured to behave like `git rebase', i.e.
 | ||
| exclude the selected base commit from the rewrite operation, with the
 | ||
| `magit-rewrite-inclusive' variable.
 | ||
| 
 | ||
|    You would then typically use `a' and `A' to cherry pick commits from
 | ||
| the list of pending commits in the desired order, until all have been
 | ||
| applied.  Magit shows which commits have been applied by changing their
 | ||
| marker from `*' to `.'.
 | ||
| 
 | ||
|    Using `A' will immediately commit the commit (as usual).  If you
 | ||
| want to combine multiple previous commits into a single new one, use
 | ||
| `a' to apply them all to your working tree, and then commit them
 | ||
| together.
 | ||
| 
 | ||
|    Magit has no explicit support for rewriting merge commits.  It will
 | ||
| happily include merge commits in the list of pending commits, but there
 | ||
| is no way of replaying them automatically.  You have to redo the merge
 | ||
| explicitly.
 | ||
| 
 | ||
|    You can also use `v' to revert a commit when you have changed your
 | ||
| mind.  This will change the `.' mark back to `*'.
 | ||
| 
 | ||
|    Once you are done with the rewrite, type `r s' to remove the book
 | ||
| keeping information from the status buffer.
 | ||
| 
 | ||
|    If you rather wish to start over, type `r a'.  This will abort the
 | ||
| rewriting, resetting the current head back to the value it had before
 | ||
| the rewrite was started with `r b'.
 | ||
| 
 | ||
|    Typing `r f' will _finish_ the rewrite: it will apply all unused
 | ||
| commits one after the other, as if you would use `A' with all of them.
 | ||
| 
 | ||
|    You can change the `*' and `.' marks of a pending commit explicitly
 | ||
| with `r *' and `r .'.
 | ||
| 
 | ||
|    In addition to a list of pending commits, the status buffer will show
 | ||
| the _Pending changes_.  This section shows the diff between the
 | ||
| original head and the current head.  You can use it to review the
 | ||
| changes that you still need to rewrite, and you can apply hunks from
 | ||
| it, like from any other diff.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Pushing and Pulling,  Next: Submodules,  Prev: Rewriting,  Up: Top
 | ||
| 
 | ||
| 20 Pushing and Pulling
 | ||
| **********************
 | ||
| 
 | ||
| Magit will run `git push' when you type `P P'.  If you give a prefix
 | ||
| argument to `P P', you will be prompted for the repository to push to.
 | ||
| When no default remote repository has been configured yet for the
 | ||
| current branch, you will be prompted as well.  Typing `P P' will only
 | ||
| push the current branch to the remote.  In other words, it will run
 | ||
| `git push <remote> <branch>'.  The branch will be created in the remote
 | ||
| if it doesn't exist already.  The local branch will be configured so
 | ||
| that it pulls from the new remote branch.  If you give a double prefix
 | ||
| argument to `P P', you will be prompted in addition for the target
 | ||
| branch to push to.  In other words, it will run `git push <remote>
 | ||
| <branch>:<target>'.
 | ||
| 
 | ||
|    Typing `f f' will run `git fetch'.  It will prompt for the name of
 | ||
| the remote to update if there is no default one.  Typing `f o' will
 | ||
| always prompt for the remote.  Typing `F F' will run `git pull'.  When
 | ||
| you don't have a default branch configured to be pulled into the
 | ||
| current one, you will be asked for it.
 | ||
| 
 | ||
|    If there is a default remote repository for the current branch, Magit
 | ||
| will show that repository in the status buffer header.
 | ||
| 
 | ||
|    In this case, the status buffer will also have a _Unpushed commits_
 | ||
| section that shows the commits on your current head that are not in the
 | ||
| branch named `<remote>/<branch>'.  This section works just like the
 | ||
| history buffer: you can see details about a commit with `RET', compare
 | ||
| two of them with `.' and `=', and you can reset your current head to
 | ||
| one of them with `x', for example.  If you want to push the changes
 | ||
| then type `P P'.
 | ||
| 
 | ||
|    When the remote branch has changes that are not in the current
 | ||
| branch, Magit shows them in a section called _Unpulled changes_.  Typing
 | ||
| `F F' will fetch and merge them into the current branch.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Submodules,  Next: Bisecting,  Prev: Pushing and Pulling,  Up: Top
 | ||
| 
 | ||
| 21 Submodules
 | ||
| *************
 | ||
| 
 | ||
| `o u'
 | ||
|      Update the submodules, with a prefix argument it will also
 | ||
|      initialize them.
 | ||
| 
 | ||
| `o i'
 | ||
|      Initialize the submodules.
 | ||
| 
 | ||
| `o b'
 | ||
|      Update and initialize the submodules in one go (same as C-u o u).
 | ||
| 
 | ||
| `o s'
 | ||
|      Synchronizes submodules' remote URL configuration setting to the
 | ||
|      value specified in .gitmodules.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Bisecting,  Next: Finding commits not merged upstream,  Prev: Submodules,  Up: Top
 | ||
| 
 | ||
| 22 Bisecting
 | ||
| ************
 | ||
| 
 | ||
| Magit supports bisecting by showing how many revisions and steps are
 | ||
| left to be tested in the status buffer.  You can control the bisect
 | ||
| session from both the status and from log buffers with the `B' key menu.
 | ||
| 
 | ||
|    Typing `B s' will start a bisect session.  You will be prompted for
 | ||
| a revision that is known to be bad (defaults to _HEAD_) and for a
 | ||
| revision that is known to be good (defaults to the revision at point if
 | ||
| there is one).  git will select a revision for you to test, and Magit
 | ||
| will update its status buffer accordingly.
 | ||
| 
 | ||
|    You can tell git that the current revision is good with `B g', that
 | ||
| it is bad with `B b' or that git should skip it with `B k'.  You can
 | ||
| also tell git to go into full automatic mode by giving it the name of a
 | ||
| script to run for each revision to test with `B u'.
 | ||
| 
 | ||
|    The current status can be shown as a log with `B l'.  It contains
 | ||
| the revisions that have already been tested and your decisions about
 | ||
| their state.
 | ||
| 
 | ||
|    The revisions left to test can be visualized in gitk with `B v'.
 | ||
| 
 | ||
|    When you're finished bisecting you have to reset the session with `B
 | ||
| r'.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Finding commits not merged upstream,  Next: Using Magit Extensions,  Prev: Bisecting,  Up: Top
 | ||
| 
 | ||
| 23 Finding commits not merged upstream
 | ||
| **************************************
 | ||
| 
 | ||
| One of the comforts of git is that it can tell you which commits have
 | ||
| been merged upstream but not locally and vice versa.  Git's sub-command
 | ||
| for this is `cherry' (not to be confused with `cherry-pick').  Magit
 | ||
| has support for this by invoking `magit-cherry' which is bound to `y'
 | ||
| by default.
 | ||
| 
 | ||
|    Magit will then ask you first for the upstream revision (which
 | ||
| defaults to the currently tracked remote branch if any) and the head
 | ||
| revision (which defaults to the current branch) to use in the
 | ||
| comparison.  You will then see a new buffer in which all commits are
 | ||
| listed with a directional marker, their revision and the commit
 | ||
| message's first line.  The directional marker is either `+' indicating
 | ||
| a commit that's present in upstream but not in head or `-' which
 | ||
| indicates a commit present in head but not in upstream.
 | ||
| 
 | ||
|    From this list you can use the usual key bindings for cherry-picking
 | ||
| individual commits (`a' for cherry-picking without committing and `A'
 | ||
| for the same plus the automatic commit).  The buffer is refreshed
 | ||
| automatically after each cherry-pick.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Using Magit Extensions,  Next: Using Git Directly,  Prev: Finding commits not merged upstream,  Up: Top
 | ||
| 
 | ||
| 24 Magit Extensions
 | ||
| *******************
 | ||
| 
 | ||
| * Menu:
 | ||
| 
 | ||
| * Activating extensions::
 | ||
| * Interfacing with Subversion::
 | ||
| * Interfacing with Topgit::
 | ||
| * Interfacing with StGit::
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Activating extensions,  Next: Interfacing with Subversion,  Up: Using Magit Extensions
 | ||
| 
 | ||
| 24.1 Activating extensions
 | ||
| ==========================
 | ||
| 
 | ||
| Magit comes with a couple of shipped extensions that allow interaction
 | ||
| with `git-svn', `topgit' and `stgit'.  See following sections for
 | ||
| specific details on how to use them.
 | ||
| 
 | ||
|    Extensions can be activated globally or on a per-repository basis.
 | ||
| Since those extensions are implemented as minor modes, one can use for
 | ||
| example `M-x magit-topgit-mode' to toggle the `topgit' extension,
 | ||
| making the corresponding section and commands (un)available.
 | ||
| 
 | ||
|    In order to do that automatically (and for every repository), one can
 | ||
| use for example:
 | ||
| 
 | ||
|      (add-hook 'magit-mode-hook 'turn-on-magit-topgit)
 | ||
| 
 | ||
|    Magit also allows configuring different extensions, based on the git
 | ||
| repository configuration.
 | ||
| 
 | ||
|      (add-hook 'magit-mode-hook 'magit-load-config-extensions)
 | ||
| 
 | ||
|    This will read git configuration variables and activate the relevant
 | ||
| extensions.
 | ||
| 
 | ||
|    For example, after running the following commands, the `topgit'
 | ||
| extension will be loaded for every repository, while the `svn' one will
 | ||
| be loaded only for the current one.
 | ||
| 
 | ||
|      $ git config --global --add magit.extension topgit
 | ||
|      $ git config --add magit.extension svn
 | ||
| 
 | ||
|    Note the `--add' flag, which means that each extension gets its own
 | ||
| line in the `config' file.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Interfacing with Subversion,  Next: Interfacing with Topgit,  Prev: Activating extensions,  Up: Using Magit Extensions
 | ||
| 
 | ||
| 24.2 Interfacing with Subversion
 | ||
| ================================
 | ||
| 
 | ||
| Typing `N r' runs `git svn rebase', typing `N c' runs `git svn dcommit'
 | ||
| and typing `N f' runs `git svn fetch'.
 | ||
| 
 | ||
|    `N s' will prompt you for a (numeric, Subversion) revision and then
 | ||
| search for a corresponding Git sha1 for the commit.  This is limited to
 | ||
| the path of the remote Subversion repository.  With a prefix (`C-u N s'
 | ||
| the user will also be prompted for a branch to search in.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Interfacing with Topgit,  Next: Interfacing with StGit,  Prev: Interfacing with Subversion,  Up: Using Magit Extensions
 | ||
| 
 | ||
| 24.3 Interfacing with Topgit
 | ||
| ============================
 | ||
| 
 | ||
| Topgit (http://repo.or.cz/r/topgit.git) is a patch queue manager that
 | ||
| aims at being close as possible to raw Git, which makes it easy to use
 | ||
| with Magit.  In particular, it does not require to use a different set
 | ||
| of commands for "commit", "update", and other operations.
 | ||
| 
 | ||
|    `magit-topgit.el' provides basic integration with Magit, mostly by
 | ||
| providing a "Topics" section.
 | ||
| 
 | ||
|    Topgit branches can be created the regular way, by using a "t/"
 | ||
| prefix by convention.  So, creating a "t/foo" branch will actually
 | ||
| populate the "Topics" section with one more branch after committing
 | ||
| `.topdeps' and `.topmsg'.
 | ||
| 
 | ||
|    Also, the way we pull (see *note Pushing and Pulling::) such a
 | ||
| branch is slightly different, since it requires updating the various
 | ||
| dependencies of that branch.  This should be mostly transparent, except
 | ||
| in case of conflicts.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Interfacing with StGit,  Prev: Interfacing with Topgit,  Up: Using Magit Extensions
 | ||
| 
 | ||
| 24.4 Interfacing with StGit
 | ||
| ===========================
 | ||
| 
 | ||
| StGit (http://www.procode.org/stgit) is a Python application providing
 | ||
| similar functionality to Quilt (i.e. pushing/popping patches to/from a
 | ||
| stack) on top of Git.  These operations are performed using Git
 | ||
| commands and the patches are stored as Git commit objects, allowing
 | ||
| easy merging of the StGit patches into other repositories using
 | ||
| standard Git functionality.
 | ||
| 
 | ||
|    `magit-stgit.el' provides basic integration with Magit, mostly by
 | ||
| providing a "Series" section, whose patches can be seen as regular
 | ||
| commits through the "visit" action.
 | ||
| 
 | ||
|    You can change the current patch in a series with the "apply" action,
 | ||
| as well as you can delete them using the "discard" action.
 | ||
| 
 | ||
|    Additionally, the `magit-stgit-refresh' and `magit-stgit-rebase'
 | ||
| commands let you perform the respective StGit operations.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: Using Git Directly,  Next: GNU Free Documentation License,  Prev: Using Magit Extensions,  Up: Top
 | ||
| 
 | ||
| 25 Using Git Directly
 | ||
| *********************
 | ||
| 
 | ||
| For situations when Magit doesn't do everything you need, you can run
 | ||
| raw Git commands using `:'.  This will prompt for a Git command, run
 | ||
| it, and refresh the status buffer.  The output can be viewed by typing
 | ||
| `$'.
 | ||
| 
 | ||
| 
 | ||
| File: magit.info,  Node: GNU Free Documentation License,  Prev: Using Git Directly,  Up: Top
 | ||
| 
 | ||
| Appendix A GNU Free Documentation License
 | ||
| *****************************************
 | ||
| 
 | ||
|                       Version 1.2, November 2002
 | ||
| 
 | ||
|      Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
 | ||
|      51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
 | ||
| 
 | ||
|      Everyone is permitted to copy and distribute verbatim copies
 | ||
|      of this license document, but changing it is not allowed.
 | ||
| 
 | ||
|   0. PREAMBLE
 | ||
| 
 | ||
|      The purpose of this License is to make a manual, textbook, or other
 | ||
|      functional and useful document "free" in the sense of freedom: to
 | ||
|      assure everyone the effective freedom to copy and redistribute it,
 | ||
|      with or without modifying it, either commercially or
 | ||
|      noncommercially.  Secondarily, this License preserves for the
 | ||
|      author and publisher a way to get credit for their work, while not
 | ||
|      being considered responsible for modifications made by others.
 | ||
| 
 | ||
|      This License is a kind of "copyleft", which means that derivative
 | ||
|      works of the document must themselves be free in the same sense.
 | ||
|      It complements the GNU General Public License, which is a copyleft
 | ||
|      license designed for free software.
 | ||
| 
 | ||
|      We have designed this License in order to use it for manuals for
 | ||
|      free software, because free software needs free documentation: a
 | ||
|      free program should come with manuals providing the same freedoms
 | ||
|      that the software does.  But this License is not limited to
 | ||
|      software manuals; it can be used for any textual work, regardless
 | ||
|      of subject matter or whether it is published as a printed book.
 | ||
|      We recommend this License principally for works whose purpose is
 | ||
|      instruction or reference.
 | ||
| 
 | ||
|   1. APPLICABILITY AND DEFINITIONS
 | ||
| 
 | ||
|      This License applies to any manual or other work, in any medium,
 | ||
|      that contains a notice placed by the copyright holder saying it
 | ||
|      can be distributed under the terms of this License.  Such a notice
 | ||
|      grants a world-wide, royalty-free license, unlimited in duration,
 | ||
|      to use that work under the conditions stated herein.  The
 | ||
|      "Document", below, refers to any such manual or work.  Any member
 | ||
|      of the public is a licensee, and is addressed as "you".  You
 | ||
|      accept the license if you copy, modify or distribute the work in a
 | ||
|      way requiring permission under copyright law.
 | ||
| 
 | ||
|      A "Modified Version" of the Document means any work containing the
 | ||
|      Document or a portion of it, either copied verbatim, or with
 | ||
|      modifications and/or translated into another language.
 | ||
| 
 | ||
|      A "Secondary Section" is a named appendix or a front-matter section
 | ||
|      of the Document that deals exclusively with the relationship of the
 | ||
|      publishers or authors of the Document to the Document's overall
 | ||
|      subject (or to related matters) and contains nothing that could
 | ||
|      fall directly within that overall subject.  (Thus, if the Document
 | ||
|      is in part a textbook of mathematics, a Secondary Section may not
 | ||
|      explain any mathematics.)  The relationship could be a matter of
 | ||
|      historical connection with the subject or with related matters, or
 | ||
|      of legal, commercial, philosophical, ethical or political position
 | ||
|      regarding them.
 | ||
| 
 | ||
|      The "Invariant Sections" are certain Secondary Sections whose
 | ||
|      titles are designated, as being those of Invariant Sections, in
 | ||
|      the notice that says that the Document is released under this
 | ||
|      License.  If a section does not fit the above definition of
 | ||
|      Secondary then it is not allowed to be designated as Invariant.
 | ||
|      The Document may contain zero Invariant Sections.  If the Document
 | ||
|      does not identify any Invariant Sections then there are none.
 | ||
| 
 | ||
|      The "Cover Texts" are certain short passages of text that are
 | ||
|      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
 | ||
|      that says that the Document is released under this License.  A
 | ||
|      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
 | ||
|      be at most 25 words.
 | ||
| 
 | ||
|      A "Transparent" copy of the Document means a machine-readable copy,
 | ||
|      represented in a format whose specification is available to the
 | ||
|      general public, that is suitable for revising the document
 | ||
|      straightforwardly with generic text editors or (for images
 | ||
|      composed of pixels) generic paint programs or (for drawings) some
 | ||
|      widely available drawing editor, and that is suitable for input to
 | ||
|      text formatters or for automatic translation to a variety of
 | ||
|      formats suitable for input to text formatters.  A copy made in an
 | ||
|      otherwise Transparent file format whose markup, or absence of
 | ||
|      markup, has been arranged to thwart or discourage subsequent
 | ||
|      modification by readers is not Transparent.  An image format is
 | ||
|      not Transparent if used for any substantial amount of text.  A
 | ||
|      copy that is not "Transparent" is called "Opaque".
 | ||
| 
 | ||
|      Examples of suitable formats for Transparent copies include plain
 | ||
|      ASCII without markup, Texinfo input format, LaTeX input format,
 | ||
|      SGML or XML using a publicly available DTD, and
 | ||
|      standard-conforming simple HTML, PostScript or PDF designed for
 | ||
|      human modification.  Examples of transparent image formats include
 | ||
|      PNG, XCF and JPG.  Opaque formats include proprietary formats that
 | ||
|      can be read and edited only by proprietary word processors, SGML or
 | ||
|      XML for which the DTD and/or processing tools are not generally
 | ||
|      available, and the machine-generated HTML, PostScript or PDF
 | ||
|      produced by some word processors for output purposes only.
 | ||
| 
 | ||
|      The "Title Page" means, for a printed book, the title page itself,
 | ||
|      plus such following pages as are needed to hold, legibly, the
 | ||
|      material this License requires to appear in the title page.  For
 | ||
|      works in formats which do not have any title page as such, "Title
 | ||
|      Page" means the text near the most prominent appearance of the
 | ||
|      work's title, preceding the beginning of the body of the text.
 | ||
| 
 | ||
|      A section "Entitled XYZ" means a named subunit of the Document
 | ||
|      whose title either is precisely XYZ or contains XYZ in parentheses
 | ||
|      following text that translates XYZ in another language.  (Here XYZ
 | ||
|      stands for a specific section name mentioned below, such as
 | ||
|      "Acknowledgements", "Dedications", "Endorsements", or "History".)
 | ||
|      To "Preserve the Title" of such a section when you modify the
 | ||
|      Document means that it remains a section "Entitled XYZ" according
 | ||
|      to this definition.
 | ||
| 
 | ||
|      The Document may include Warranty Disclaimers next to the notice
 | ||
|      which states that this License applies to the Document.  These
 | ||
|      Warranty Disclaimers are considered to be included by reference in
 | ||
|      this License, but only as regards disclaiming warranties: any other
 | ||
|      implication that these Warranty Disclaimers may have is void and
 | ||
|      has no effect on the meaning of this License.
 | ||
| 
 | ||
|   2. VERBATIM COPYING
 | ||
| 
 | ||
|      You may copy and distribute the Document in any medium, either
 | ||
|      commercially or noncommercially, provided that this License, the
 | ||
|      copyright notices, and the license notice saying this License
 | ||
|      applies to the Document are reproduced in all copies, and that you
 | ||
|      add no other conditions whatsoever to those of this License.  You
 | ||
|      may not use technical measures to obstruct or control the reading
 | ||
|      or further copying of the copies you make or distribute.  However,
 | ||
|      you may accept compensation in exchange for copies.  If you
 | ||
|      distribute a large enough number of copies you must also follow
 | ||
|      the conditions in section 3.
 | ||
| 
 | ||
|      You may also lend copies, under the same conditions stated above,
 | ||
|      and you may publicly display copies.
 | ||
| 
 | ||
|   3. COPYING IN QUANTITY
 | ||
| 
 | ||
|      If you publish printed copies (or copies in media that commonly
 | ||
|      have printed covers) of the Document, numbering more than 100, and
 | ||
|      the Document's license notice requires Cover Texts, you must
 | ||
|      enclose the copies in covers that carry, clearly and legibly, all
 | ||
|      these Cover Texts: Front-Cover Texts on the front cover, and
 | ||
|      Back-Cover Texts on the back cover.  Both covers must also clearly
 | ||
|      and legibly identify you as the publisher of these copies.  The
 | ||
|      front cover must present the full title with all words of the
 | ||
|      title equally prominent and visible.  You may add other material
 | ||
|      on the covers in addition.  Copying with changes limited to the
 | ||
|      covers, as long as they preserve the title of the Document and
 | ||
|      satisfy these conditions, can be treated as verbatim copying in
 | ||
|      other respects.
 | ||
| 
 | ||
|      If the required texts for either cover are too voluminous to fit
 | ||
|      legibly, you should put the first ones listed (as many as fit
 | ||
|      reasonably) on the actual cover, and continue the rest onto
 | ||
|      adjacent pages.
 | ||
| 
 | ||
|      If you publish or distribute Opaque copies of the Document
 | ||
|      numbering more than 100, you must either include a
 | ||
|      machine-readable Transparent copy along with each Opaque copy, or
 | ||
|      state in or with each Opaque copy a computer-network location from
 | ||
|      which the general network-using public has access to download
 | ||
|      using public-standard network protocols a complete Transparent
 | ||
|      copy of the Document, free of added material.  If you use the
 | ||
|      latter option, you must take reasonably prudent steps, when you
 | ||
|      begin distribution of Opaque copies in quantity, to ensure that
 | ||
|      this Transparent copy will remain thus accessible at the stated
 | ||
|      location until at least one year after the last time you
 | ||
|      distribute an Opaque copy (directly or through your agents or
 | ||
|      retailers) of that edition to the public.
 | ||
| 
 | ||
|      It is requested, but not required, that you contact the authors of
 | ||
|      the Document well before redistributing any large number of
 | ||
|      copies, to give them a chance to provide you with an updated
 | ||
|      version of the Document.
 | ||
| 
 | ||
|   4. MODIFICATIONS
 | ||
| 
 | ||
|      You may copy and distribute a Modified Version of the Document
 | ||
|      under the conditions of sections 2 and 3 above, provided that you
 | ||
|      release the Modified Version under precisely this License, with
 | ||
|      the Modified Version filling the role of the Document, thus
 | ||
|      licensing distribution and modification of the Modified Version to
 | ||
|      whoever possesses a copy of it.  In addition, you must do these
 | ||
|      things in the Modified Version:
 | ||
| 
 | ||
|        A. Use in the Title Page (and on the covers, if any) a title
 | ||
|           distinct from that of the Document, and from those of
 | ||
|           previous versions (which should, if there were any, be listed
 | ||
|           in the History section of the Document).  You may use the
 | ||
|           same title as a previous version if the original publisher of
 | ||
|           that version gives permission.
 | ||
| 
 | ||
|        B. List on the Title Page, as authors, one or more persons or
 | ||
|           entities responsible for authorship of the modifications in
 | ||
|           the Modified Version, together with at least five of the
 | ||
|           principal authors of the Document (all of its principal
 | ||
|           authors, if it has fewer than five), unless they release you
 | ||
|           from this requirement.
 | ||
| 
 | ||
|        C. State on the Title page the name of the publisher of the
 | ||
|           Modified Version, as the publisher.
 | ||
| 
 | ||
|        D. Preserve all the copyright notices of the Document.
 | ||
| 
 | ||
|        E. Add an appropriate copyright notice for your modifications
 | ||
|           adjacent to the other copyright notices.
 | ||
| 
 | ||
|        F. Include, immediately after the copyright notices, a license
 | ||
|           notice giving the public permission to use the Modified
 | ||
|           Version under the terms of this License, in the form shown in
 | ||
|           the Addendum below.
 | ||
| 
 | ||
|        G. Preserve in that license notice the full lists of Invariant
 | ||
|           Sections and required Cover Texts given in the Document's
 | ||
|           license notice.
 | ||
| 
 | ||
|        H. Include an unaltered copy of this License.
 | ||
| 
 | ||
|        I. Preserve the section Entitled "History", Preserve its Title,
 | ||
|           and add to it an item stating at least the title, year, new
 | ||
|           authors, and publisher of the Modified Version as given on
 | ||
|           the Title Page.  If there is no section Entitled "History" in
 | ||
|           the Document, create one stating the title, year, authors,
 | ||
|           and publisher of the Document as given on its Title Page,
 | ||
|           then add an item describing the Modified Version as stated in
 | ||
|           the previous sentence.
 | ||
| 
 | ||
|        J. Preserve the network location, if any, given in the Document
 | ||
|           for public access to a Transparent copy of the Document, and
 | ||
|           likewise the network locations given in the Document for
 | ||
|           previous versions it was based on.  These may be placed in
 | ||
|           the "History" section.  You may omit a network location for a
 | ||
|           work that was published at least four years before the
 | ||
|           Document itself, or if the original publisher of the version
 | ||
|           it refers to gives permission.
 | ||
| 
 | ||
|        K. For any section Entitled "Acknowledgements" or "Dedications",
 | ||
|           Preserve the Title of the section, and preserve in the
 | ||
|           section all the substance and tone of each of the contributor
 | ||
|           acknowledgements and/or dedications given therein.
 | ||
| 
 | ||
|        L. Preserve all the Invariant Sections of the Document,
 | ||
|           unaltered in their text and in their titles.  Section numbers
 | ||
|           or the equivalent are not considered part of the section
 | ||
|           titles.
 | ||
| 
 | ||
|        M. Delete any section Entitled "Endorsements".  Such a section
 | ||
|           may not be included in the Modified Version.
 | ||
| 
 | ||
|        N. Do not retitle any existing section to be Entitled
 | ||
|           "Endorsements" or to conflict in title with any Invariant
 | ||
|           Section.
 | ||
| 
 | ||
|        O. Preserve any Warranty Disclaimers.
 | ||
| 
 | ||
|      If the Modified Version includes new front-matter sections or
 | ||
|      appendices that qualify as Secondary Sections and contain no
 | ||
|      material copied from the Document, you may at your option
 | ||
|      designate some or all of these sections as invariant.  To do this,
 | ||
|      add their titles to the list of Invariant Sections in the Modified
 | ||
|      Version's license notice.  These titles must be distinct from any
 | ||
|      other section titles.
 | ||
| 
 | ||
|      You may add a section Entitled "Endorsements", provided it contains
 | ||
|      nothing but endorsements of your Modified Version by various
 | ||
|      parties--for example, statements of peer review or that the text
 | ||
|      has been approved by an organization as the authoritative
 | ||
|      definition of a standard.
 | ||
| 
 | ||
|      You may add a passage of up to five words as a Front-Cover Text,
 | ||
|      and a passage of up to 25 words as a Back-Cover Text, to the end
 | ||
|      of the list of Cover Texts in the Modified Version.  Only one
 | ||
|      passage of Front-Cover Text and one of Back-Cover Text may be
 | ||
|      added by (or through arrangements made by) any one entity.  If the
 | ||
|      Document already includes a cover text for the same cover,
 | ||
|      previously added by you or by arrangement made by the same entity
 | ||
|      you are acting on behalf of, you may not add another; but you may
 | ||
|      replace the old one, on explicit permission from the previous
 | ||
|      publisher that added the old one.
 | ||
| 
 | ||
|      The author(s) and publisher(s) of the Document do not by this
 | ||
|      License give permission to use their names for publicity for or to
 | ||
|      assert or imply endorsement of any Modified Version.
 | ||
| 
 | ||
|   5. COMBINING DOCUMENTS
 | ||
| 
 | ||
|      You may combine the Document with other documents released under
 | ||
|      this License, under the terms defined in section 4 above for
 | ||
|      modified versions, provided that you include in the combination
 | ||
|      all of the Invariant Sections of all of the original documents,
 | ||
|      unmodified, and list them all as Invariant Sections of your
 | ||
|      combined work in its license notice, and that you preserve all
 | ||
|      their Warranty Disclaimers.
 | ||
| 
 | ||
|      The combined work need only contain one copy of this License, and
 | ||
|      multiple identical Invariant Sections may be replaced with a single
 | ||
|      copy.  If there are multiple Invariant Sections with the same name
 | ||
|      but different contents, make the title of each such section unique
 | ||
|      by adding at the end of it, in parentheses, the name of the
 | ||
|      original author or publisher of that section if known, or else a
 | ||
|      unique number.  Make the same adjustment to the section titles in
 | ||
|      the list of Invariant Sections in the license notice of the
 | ||
|      combined work.
 | ||
| 
 | ||
|      In the combination, you must combine any sections Entitled
 | ||
|      "History" in the various original documents, forming one section
 | ||
|      Entitled "History"; likewise combine any sections Entitled
 | ||
|      "Acknowledgements", and any sections Entitled "Dedications".  You
 | ||
|      must delete all sections Entitled "Endorsements."
 | ||
| 
 | ||
|   6. COLLECTIONS OF DOCUMENTS
 | ||
| 
 | ||
|      You may make a collection consisting of the Document and other
 | ||
|      documents released under this License, and replace the individual
 | ||
|      copies of this License in the various documents with a single copy
 | ||
|      that is included in the collection, provided that you follow the
 | ||
|      rules of this License for verbatim copying of each of the
 | ||
|      documents in all other respects.
 | ||
| 
 | ||
|      You may extract a single document from such a collection, and
 | ||
|      distribute it individually under this License, provided you insert
 | ||
|      a copy of this License into the extracted document, and follow
 | ||
|      this License in all other respects regarding verbatim copying of
 | ||
|      that document.
 | ||
| 
 | ||
|   7. AGGREGATION WITH INDEPENDENT WORKS
 | ||
| 
 | ||
|      A compilation of the Document or its derivatives with other
 | ||
|      separate and independent documents or works, in or on a volume of
 | ||
|      a storage or distribution medium, is called an "aggregate" if the
 | ||
|      copyright resulting from the compilation is not used to limit the
 | ||
|      legal rights of the compilation's users beyond what the individual
 | ||
|      works permit.  When the Document is included in an aggregate, this
 | ||
|      License does not apply to the other works in the aggregate which
 | ||
|      are not themselves derivative works of the Document.
 | ||
| 
 | ||
|      If the Cover Text requirement of section 3 is applicable to these
 | ||
|      copies of the Document, then if the Document is less than one half
 | ||
|      of the entire aggregate, the Document's Cover Texts may be placed
 | ||
|      on covers that bracket the Document within the aggregate, or the
 | ||
|      electronic equivalent of covers if the Document is in electronic
 | ||
|      form.  Otherwise they must appear on printed covers that bracket
 | ||
|      the whole aggregate.
 | ||
| 
 | ||
|   8. TRANSLATION
 | ||
| 
 | ||
|      Translation is considered a kind of modification, so you may
 | ||
|      distribute translations of the Document under the terms of section
 | ||
|      4.  Replacing Invariant Sections with translations requires special
 | ||
|      permission from their copyright holders, but you may include
 | ||
|      translations of some or all Invariant Sections in addition to the
 | ||
|      original versions of these Invariant Sections.  You may include a
 | ||
|      translation of this License, and all the license notices in the
 | ||
|      Document, and any Warranty Disclaimers, provided that you also
 | ||
|      include the original English version of this License and the
 | ||
|      original versions of those notices and disclaimers.  In case of a
 | ||
|      disagreement between the translation and the original version of
 | ||
|      this License or a notice or disclaimer, the original version will
 | ||
|      prevail.
 | ||
| 
 | ||
|      If a section in the Document is Entitled "Acknowledgements",
 | ||
|      "Dedications", or "History", the requirement (section 4) to
 | ||
|      Preserve its Title (section 1) will typically require changing the
 | ||
|      actual title.
 | ||
| 
 | ||
|   9. TERMINATION
 | ||
| 
 | ||
|      You may not copy, modify, sublicense, or distribute the Document
 | ||
|      except as expressly provided for under this License.  Any other
 | ||
|      attempt to copy, modify, sublicense or distribute the Document is
 | ||
|      void, and will automatically terminate your rights under this
 | ||
|      License.  However, parties who have received copies, or rights,
 | ||
|      from you under this License will not have their licenses
 | ||
|      terminated so long as such parties remain in full compliance.
 | ||
| 
 | ||
|  10. FUTURE REVISIONS OF THIS LICENSE
 | ||
| 
 | ||
|      The Free Software Foundation may publish new, revised versions of
 | ||
|      the GNU Free Documentation License from time to time.  Such new
 | ||
|      versions will be similar in spirit to the present version, but may
 | ||
|      differ in detail to address new problems or concerns.  See
 | ||
|      `http://www.gnu.org/copyleft/'.
 | ||
| 
 | ||
|      Each version of the License is given a distinguishing version
 | ||
|      number.  If the Document specifies that a particular numbered
 | ||
|      version of this License "or any later version" applies to it, you
 | ||
|      have the option of following the terms and conditions either of
 | ||
|      that specified version or of any later version that has been
 | ||
|      published (not as a draft) by the Free Software Foundation.  If
 | ||
|      the Document does not specify a version number of this License,
 | ||
|      you may choose any version ever published (not as a draft) by the
 | ||
|      Free Software Foundation.
 | ||
| 
 | ||
| ADDENDUM: How to use this License for your documents
 | ||
| ====================================================
 | ||
| 
 | ||
| To use this License in a document you have written, include a copy of
 | ||
| the License in the document and put the following copyright and license
 | ||
| notices just after the title page:
 | ||
| 
 | ||
|        Copyright (C)  YEAR  YOUR NAME.
 | ||
|        Permission is granted to copy, distribute and/or modify this document
 | ||
|        under the terms of the GNU Free Documentation License, Version 1.2
 | ||
|        or any later version published by the Free Software Foundation;
 | ||
|        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
 | ||
|        Texts.  A copy of the license is included in the section entitled ``GNU
 | ||
|        Free Documentation License''.
 | ||
| 
 | ||
|    If you have Invariant Sections, Front-Cover Texts and Back-Cover
 | ||
| Texts, replace the "with...Texts." line with this:
 | ||
| 
 | ||
|          with the Invariant Sections being LIST THEIR TITLES, with
 | ||
|          the Front-Cover Texts being LIST, and with the Back-Cover Texts
 | ||
|          being LIST.
 | ||
| 
 | ||
|    If you have Invariant Sections without Cover Texts, or some other
 | ||
| combination of the three, merge those two alternatives to suit the
 | ||
| situation.
 | ||
| 
 | ||
|    If your document contains nontrivial examples of program code, we
 | ||
| recommend releasing these examples in parallel under your choice of
 | ||
| free software license, such as the GNU General Public License, to
 | ||
| permit their use in free software.
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| Tag Table:
 | ||
| Node: Top1609
 | ||
| Node: Introduction3622
 | ||
| Node: Acknowledgments5115
 | ||
| Node: Sections5663
 | ||
| Node: Status8213
 | ||
| Node: Untracked files10952
 | ||
| Node: Staging and Committing12157
 | ||
| Node: History15562
 | ||
| Node: Reflogs18744
 | ||
| Node: Commit Buffer19148
 | ||
| Node: Diffing20474
 | ||
| Node: Tagging21461
 | ||
| Node: Resetting21911
 | ||
| Node: Stashing23435
 | ||
| Node: Branches and Remotes24506
 | ||
| Node: Branches Popup25327
 | ||
| Node: Remotes Popup26589
 | ||
| Node: Branches in the Branch Manager26940
 | ||
| Node: Remotes in the Branch Manager28112
 | ||
| Node: Wazzup28673
 | ||
| Node: Merging29466
 | ||
| Node: Rebasing30516
 | ||
| Node: Interactive Rebasing31342
 | ||
| Node: Rewriting32637
 | ||
| Node: Pushing and Pulling35947
 | ||
| Node: Submodules37877
 | ||
| Node: Bisecting38325
 | ||
| Node: Finding commits not merged upstream39560
 | ||
| Node: Using Magit Extensions40826
 | ||
| Node: Activating extensions41122
 | ||
| Node: Interfacing with Subversion42507
 | ||
| Node: Interfacing with Topgit43107
 | ||
| Node: Interfacing with StGit44145
 | ||
| Node: Using Git Directly45114
 | ||
| Node: GNU Free Documentation License45502
 | ||
| 
 | ||
| End Tag Table
 | ||
| 
 | ||
| 
 | ||
| Local Variables:
 | ||
| coding: utf-8
 | ||
| End:
 |