GitSharp Abstract base class of all git commands. It provides basic infrastructure Abbreviates a ref-name, used in internal output long ref abbreviate as remote Performs upward recursive lookup to return git directory. Honors the environment variable GIT_DIR. Execute the git command. Returns the value of the process' environment variable GIT_DIR This command's output stream. If not explicitly set, the command writes to Git.OutputStream out. The git repository that is either result of the command (init, clone) or subject to alteration (all other commands). If not explicitly set, the command uses Git.Commands.Repository. Note: InitCommand and CloneCommand ignore this property and overwrite it as a result of Execute. The git directory. If not explicitly set, the command uses Git.GitDirectory. Get the directory where the Init command will initialize the repository. if GitDirectory is null ActualDirectory is used to initialize the repository. Not implemented Don't actually add the file(s), just show if they exist. Not implemented Be verbose. Not implemented Allow adding otherwise ignored files. Not implemented Add modified contents in the working tree interactively to the index. Optional path arguments may be supplied to limit operation to a subset of the working tree. See ``Interactive mode'' for details. Not implemented Interactively choose hunks of patch between the index and the work tree and add them to the index. This gives the user a chance to review the difference before adding modified contents to the index. + This effectively runs `add --interactive`, but bypasses the initial command menu and directly jumps to the `patch` subcommand. See ``Interactive mode'' for details. Not implemented Open the diff vs. the index in an editor and let the user edit it. After the editor was closed, adjust the hunk headers and apply the patch to the index. + *NOTE*: Obviously, if you change anything else than the first character on lines beginning with a space or a minus, the patch will no longer apply. Not implemented Update only files that git already knows about, staging modified content for commit and marking deleted files for removal. This is similar to what "git commit -a" does in preparation for making a commit, except that the update is limited to paths specified on the command line. If no paths are specified, all tracked files in the current directory and its subdirectories are updated. Not implemented Update files that git already knows about (same as '\--update') and add all untracked files that are not ignored by '.gitignore' mechanism. Not implemented Record only the fact that the path will be added later. An entry for the path is placed in the index with no content. This is useful for, among other things, showing the unstaged content of such files with 'git diff' and committing them with 'git commit -a'. Not implemented Don't add the file(s), but only refresh their stat() information in the index. Not implemented If some files could not be added because of errors indexing them, do not abort the operation, but continue adding the others. The command shall still exit with non-zero status. Not implemented Add a `Signed-off-by:` line to the commit message, using the committer identity of yourself. Not implemented Pass `-k` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). Not implemented Remove everything in body before a scissors line (see linkgit:git-mailinfo[1]). Not implemented Ignore scissors lines (see linkgit:git-mailinfo[1]). Not implemented Be quiet. Only print error messages. Not implemented Pass `-u` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). The proposed commit log message taken from the e-mail is re-coded into UTF-8 encoding (configuration variable `i18n.commitencoding` can be used to specify project's preferred encoding if it is not UTF-8). + This was optional in prior versions of git, but now it is the default. You can use `--no-utf8` to override this. Not implemented Pass `-n` flag to 'git-mailinfo' (see linkgit:git-mailinfo[1]). Not implemented When the patch does not apply cleanly, fall back on 3-way merge if the patch records the identity of blobs it is supposed to apply to and we have those blobs available locally. Not implemented These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) program that applies the patch. Not implemented These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) program that applies the patch. Not implemented These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) program that applies the patch. Not implemented These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) program that applies the patch. Not implemented These flags are passed to the 'git-apply' (see linkgit:git-apply[1]) program that applies the patch. Not implemented Run interactively. Not implemented By default the command records the date from the e-mail message as the commit author date, and uses the time of commit creation as the committer date. This allows the user to lie about the committer date by using the same value as the author date. Not implemented By default the command records the date from the e-mail message as the commit author date, and uses the time of commit creation as the committer date. This allows the user to lie about the author date by using the same value as the committer date. Not implemented Skip the current patch. This is only meaningful when restarting an aborted patch. Not implemented After a patch failure (e.g. attempting to apply conflicting patch), the user has applied it by hand and the index file stores the result of the application. Make a commit using the authorship and commit log extracted from the e-mail message and the current index file, and continue. Not implemented When a patch failure occurs, <msg> will be printed to the screen before exiting. This overrides the standard message informing you to use `--resolved` or `--skip` to handle the failure. This is solely for internal use between 'git-rebase' and 'git-am'. Not implemented Restore the original branch and abort the patching operation. Not implemented Show blank SHA-1 for boundary commits. This can also be controlled via the `blame.blankboundary` config option. Not implemented Do not treat root commits as boundaries. This can also be controlled via the `blame.showroot` config option. Not implemented Include additional statistics at the end of blame output. Not implemented Annotate only the given line range. <start> and <end> can take one of these forms: Not implemented Show long rev (Default: off). Not implemented Show raw timestamp (Default: off). Not implemented Use revisions from revs-file instead of calling linkgit:git-rev-list[1]. Not implemented Walk history forward instead of backward. Instead of showing the revision in which a line appeared, this shows the last revision in which a line has existed. This requires a range of revision like START..END where the path to blame exists in START. Not implemented Show in a format designed for machine consumption. Not implemented Show the result incrementally in a format designed for machine consumption. Not implemented Specifies the encoding used to output author names and commit summaries. Setting it to `none` makes blame output unconverted data. For more information see the discussion about encoding in the linkgit:git-log[1] manual page. Not implemented When <rev> is not specified, the command annotates the changes starting backwards from the working tree copy. This flag makes the command pretend as if the working tree copy has the contents of the named file (specify `-` to make the command read from the standard input). Not implemented The value is one of the following alternatives: {relative,local,default,iso,rfc,short}. If --date is not provided, the value of the blame.date config variable is used. If the blame.date config variable is also not set, the iso format is used. For more information, See the discussion of the --date option at linkgit:git-log[1]. Not implemented Detect moving lines in the file as well. When a commit moves a block of lines in a file (e.g. the original file has A and then B, and the commit changes it to B and then A), the traditional 'blame' algorithm typically blames the lines that were moved up (i.e. B) to the parent and assigns blame to the lines that were moved down (i.e. A) to the child commit. With this option, both groups of lines are blamed on the parent. + alphanumeric characters that git must detect as moving within a file for it to associate those lines with the parent commit. Not implemented In addition to `-M`, detect lines copied from other files that were modified in the same commit. This is useful when you reorganize your program and move code around across files. When this option is given twice, the command additionally looks for copies from all other files in the parent for the commit that creates the file. + alphanumeric characters that git must detect as moving between files for it to associate those lines with the parent commit. Not implemented Show help message. Not implemented Instead of applying the patch, output diffstat for the input. Turns off "apply". Not implemented Similar to `--stat`, but shows the number of added and deleted lines in decimal notation and the pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Turns off "apply". Not implemented Instead of applying the patch, output a condensed summary of information obtained from git diff extended headers, such as creations, renames and mode changes. Turns off "apply". Not implemented Instead of applying the patch, see if the patch is applicable to the current working tree and/or the index file and detects errors. Turns off "apply". Not implemented When `--check` is in effect, or when applying the patch (which is the default when none of the options that disables it is in effect), make sure the patch is applicable to what the current index file records. If the file to be patched in the working tree is not up-to-date, it is flagged as an error. This flag also causes the index file to be updated. Not implemented Apply a patch without touching the working tree. Instead take the cached data, apply the patch, and store the result in the index without using the working tree. This implies `--index`. Not implemented Newer 'git-diff' output has embedded 'index information' for each blob to help identify the original version that the patch applies to. When this flag is given, and if the original versions of the blobs are available locally, builds a temporary index containing those blobs. + When a pure mode change is encountered (which has no index information), the information is read from the current index instead. Not implemented Apply the patch in reverse. Not implemented For atomicity, 'git-apply' by default fails the whole patch and does not touch the working tree when some of the hunks do not apply. This option makes it apply the parts of the patch that are applicable, and leave the rejected hunks in corresponding *.rej files. Not implemented When `--numstat` has been given, do not munge pathnames, but use a NUL-terminated machine-readable format. + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Remove <n> leading slashes from traditional diff paths. The default is 1. Not implemented Ensure at least <n> lines of surrounding context match before and after each change. When fewer lines of surrounding context exist they all must match. By default no context is ever ignored. Not implemented By default, 'git-apply' expects that the patch being applied is a unified diff with at least one line of context. This provides good safety measures, but breaks down when applying a diff generated with `--unified=0`. To bypass these checks use `--unidiff-zero`. + Note, for the reasons stated above usage of context-free patches is discouraged. Not implemented If you use any of the options marked "Turns off 'apply'" above, 'git-apply' reads and outputs the requested information without actually applying the patch. Give this flag after those flags to also apply the patch. Not implemented When applying a patch, ignore additions made by the patch. This can be used to extract the common part between two files by first running 'diff' on them and applying the result with this option, which would apply the deletion part but not the addition part. Not implemented Historically we did not allow binary patch applied without an explicit permission from the user, and this flag was the way to do so. Currently we always allow binary patch application, so this is a no-op. Not implemented Historically we did not allow binary patch applied without an explicit permission from the user, and this flag was the way to do so. Currently we always allow binary patch application, so this is a no-op. Not implemented Don't apply changes to files matching the given path pattern. This can be useful when importing patchsets, where you want to exclude certain files or directories. Not implemented Apply changes to files matching the given path pattern. This can be useful when importing patchsets, where you want to include certain files or directories. + When `--exclude` and `--include` patterns are used, they are examined in the order they appear on the command line, and the first match determines if a patch to each path is used. A patch to a path that does not match any on the command line, and ignored if there is any include pattern. Not implemented When applying a patch, ignore changes in whitespace in context lines if necessary. Context lines will preserve their whitespace, and they will not undergo whitespace fixing regardless of the value of the `--whitespace` option. New lines will still be fixed, though. Not implemented When applying a patch, ignore changes in whitespace in context lines if necessary. Context lines will preserve their whitespace, and they will not undergo whitespace fixing regardless of the value of the `--whitespace` option. New lines will still be fixed, though. Not implemented When applying a patch, detect a new or modified line that has whitespace errors. What are considered whitespace errors is controlled by `core.whitespace` configuration. By default, trailing whitespaces (including lines that solely consist of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors. + By default, the command outputs warning messages but applies the patch. When `git-apply` is used for statistics and not applying a patch, it defaults to `nowarn`. + You can use different `<action>` values to control this behavior: + * `nowarn` turns off the trailing whitespace warning. * `warn` outputs warnings for a few such errors, but applies the Not implemented Format of the resulting archive: 'tar' or 'zip'. If this option is not given, and the output file is specified, the format is inferred from the filename if possible (e.g. writing to "foo.zip" makes the output to be in the zip format). Otherwise the output format is `tar`. Not implemented Show all available formats. Not implemented Report progress to stderr. Not implemented Prepend <prefix>/ to each filename in the archive. Not implemented Write the archive to <file> instead of stdout. Not implemented Look for attributes in .gitattributes in working directory too. Not implemented Instead of making a tar archive from the local repository, retrieve a tar archive from a remote repository. Not implemented Used with --remote to specify the path to the 'git-upload-archive' on the remote side. Not implemented Use the same output mode as linkgit:git-annotate[1] (Default: off). Not implemented Include debugging information related to the movement of lines between files (see `-C`) and lines moved within a file (see `-M`). The first number listed is the score. This is the number of alphanumeric characters detected as having been moved between or within files. This must be above a certain threshold for 'git-blame' to consider those lines of code to have been moved. Not implemented Show the filename in the original commit. By default the filename is shown if there is any line that came from a file with a different name, due to rename detection. Not implemented Show the line number in the original commit (Default: off). Not implemented Suppress the author name and timestamp from the output. Not implemented Ignore whitespace when comparing the parent's version and the child's to find where the lines came from. Not implemented Show blank SHA-1 for boundary commits. This can also be controlled via the `blame.blankboundary` config option. Not implemented Do not treat root commits as boundaries. This can also be controlled via the `blame.showroot` config option. Not implemented Include additional statistics at the end of blame output. Not implemented Annotate only the given line range. <start> and <end> can take one of these forms: Not implemented Show long rev (Default: off). Not implemented Show raw timestamp (Default: off). Not implemented Use revisions from revs-file instead of calling linkgit:git-rev-list[1]. Not implemented Walk history forward instead of backward. Instead of showing the revision in which a line appeared, this shows the last revision in which a line has existed. This requires a range of revision like START..END where the path to blame exists in START. Not implemented Show in a format designed for machine consumption. Not implemented Show the result incrementally in a format designed for machine consumption. Not implemented Specifies the encoding used to output author names and commit summaries. Setting it to `none` makes blame output unconverted data. For more information see the discussion about encoding in the linkgit:git-log[1] manual page. Not implemented When <rev> is not specified, the command annotates the changes starting backwards from the working tree copy. This flag makes the command pretend as if the working tree copy has the contents of the named file (specify `-` to make the command read from the standard input). Not implemented The value is one of the following alternatives: {relative,local,default,iso,rfc,short}. If --date is not provided, the value of the blame.date config variable is used. If the blame.date config variable is also not set, the iso format is used. For more information, See the discussion of the --date option at linkgit:git-log[1]. Not implemented Detect moving lines in the file as well. When a commit moves a block of lines in a file (e.g. the original file has A and then B, and the commit changes it to B and then A), the traditional 'blame' algorithm typically blames the lines that were moved up (i.e. B) to the parent and assigns blame to the lines that were moved down (i.e. A) to the child commit. With this option, both groups of lines are blamed on the parent. + alphanumeric characters that git must detect as moving within a file for it to associate those lines with the parent commit. Not implemented In addition to `-M`, detect lines copied from other files that were modified in the same commit. This is useful when you reorganize your program and move code around across files. When this option is given twice, the command additionally looks for copies from all other files in the parent for the commit that creates the file. + alphanumeric characters that git must detect as moving between files for it to associate those lines with the parent commit. Not implemented Show help message. Not implemented Delete a branch. The branch must be fully merged in HEAD. Not implemented Delete a branch irrespective of its merged status. Not implemented Create the branch's reflog. This activates recording of all changes made to the branch ref, enabling use of date based sha1 expressions such as "<branchname<@\{yesterday}". Not implemented Reset <branchname> to <startpoint> if <branchname> exists already. Without `-f` 'git-branch' refuses to change an existing branch. Not implemented Move/rename a branch and the corresponding reflog. Not implemented Move/rename a branch even if the new branch name already exists. Not implemented Color branches to highlight current, local, and remote branches. Not implemented Turn off branch colors, even when the configuration file gives the default to color output. Not implemented List or delete (if used with -d) the remote-tracking branches. Not implemented List both remote-tracking branches and local branches. Not implemented Show sha1 and commit subject line for each head, along with relationship to upstream branch (if any). If given twice, print the name of the upstream branch, as well. Not implemented Alter the sha1's minimum display length in the output listing. The default value is 7. Not implemented Display the full sha1s in the output listing rather than abbreviating them. Not implemented When creating a new branch, set up configuration to mark the start-point branch as "upstream" from the new branch. This configuration will tell git to show the relationship between the two branches in `git status` and `git branch -v`. Furthermore, it directs `git pull` without arguments to pull from the upstream when the new branch is checked out. + This behavior is the default when the start point is a remote branch. Set the branch.autosetupmerge configuration variable to `false` if you want `git checkout` and `git branch` to always behave as if '--no-track' were given. Set it to `always` if you want this behavior when the start-point is either a local or remote branch. Not implemented Do not set up "upstream" configuration, even if the branch.autosetupmerge configuration variable is true. Not implemented Only list branches which contain the specified commit. Not implemented Only list branches whose tips are reachable from the specified commit (HEAD if not specified). Not implemented Only list branches whose tips are not reachable from the specified commit (HEAD if not specified). Not implemented Instead of the content, show the object type identified by <object>. Not implemented Instead of the content, show the object size identified by <object<. Not implemented Suppress all output; instead exit with zero status if <object> exists and is a valid object. Not implemented Pretty-print the contents of <object> based on its type. Not implemented Print the SHA1, type, size, and contents of each object provided on stdin. May not be combined with any other options or arguments. Not implemented Print the SHA1, type, and size of each object provided on stdin. May not be combined with any other options or arguments. Quiet, suppress feedback messages. Not implemented When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes. + When checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored. Not implemented When checking out paths from the index, check out stage #2 ('ours') or #3 ('theirs') for unmerged paths. Not implemented When checking out paths from the index, check out stage #2 ('ours') or #3 ('theirs') for unmerged paths. Not implemented Create a new branch named <new_branch> and start it at <start_point>; see linkgit:git-branch[1] for details. Not implemented When creating a new branch, set up "upstream" configuration. See "--track" in linkgit:git-branch[1] for details. + If no '-b' option is given, the name of the new branch will be derived from the remote branch. If "remotes/" or "refs/remotes/" is prefixed it is stripped away, and then the part up to the next slash (which would be the nickname of the remote) is removed. This would tell us to use "hack" as the local branch when branching off of "origin/hack" (or "remotes/origin/hack", or even "refs/remotes/origin/hack"). If the given name has no slash, or the above guessing results in an empty name, the guessing is aborted. You can explicitly give a name with '-b' in such a case. Not implemented Do not set up "upstream" configuration, even if the branch.autosetupmerge configuration variable is true. Not implemented Create the new branch's reflog; see linkgit:git-branch[1] for details. Not implemented When switching branches, if you have local modifications to one or more files that are different between the current branch and the branch to which you are switching, the command refuses to switch branches in order to preserve your modifications in context. However, with this option, a three-way merge between the current branch, your working tree contents, and the new branch is done, and you will be on the new branch. + When a merge conflict happens, the index entries for conflicting paths are left unmerged, and you need to resolve the conflicts and mark the resolved paths with `git add` (or `git rm` if the merge should result in deletion of the path). + When checking out paths from the index, this option lets you recreate the conflicted merge in the specified paths. Not implemented The same as --merge option above, but changes the way the conflicting hunks are presented, overriding the merge.conflictstyle configuration variable. Possible values are "merge" (default) and "diff3" (in addition to what is shown by "merge" style, shows the original contents). Not implemented Interactively select hunks in the difference between the <tree-ish> (or the index, if unspecified) and the working tree. The chosen hunks are then applied in reverse to the working tree (and if a <tree-ish> was specified, the index). + This means that you can use `git checkout -p` to selectively discard edits from your current working tree. Not implemented update stat information for the checked out entries in the index file. Not implemented be quiet if files exist or are not in the index Not implemented forces overwrite of existing files Not implemented checks out all files in the index. Cannot be used together with explicit filenames. Not implemented Don't checkout new files, only refresh files already checked out. Not implemented When creating files, prepend <string> (usually a directory including a trailing /) Not implemented Instead of checking out unmerged entries, copy out the files from named stage. <number> must be between 1 and 3. Note: --stage=all automatically implies --temp. Not implemented Instead of copying the files to the working directory write the content to temporary files. The temporary name associations will be written to stdout. Not implemented Instead of taking list of paths from the command line, read list of paths from the standard input. Paths are separated by LF (i.e. one path per line) by default. Not implemented Only meaningful with `--stdin`; paths are separated with NUL character instead of LF. Not implemented Verbose. Not implemented With this option, 'git-cherry-pick' will let you edit the commit message prior to committing. Not implemented When recording the commit, append to the original commit message a note that indicates which commit this change was cherry-picked from. Append the note only for cherry picks without conflicts. Do not use this option if you are cherry-picking from your private branch because the information is useless to the recipient. If on the other hand you are cherry-picking between two publicly visible branches (e.g. backporting a fix to a maintenance branch for an older release from a development branch), adding this information can be useful. Not implemented It used to be that the command defaulted to do `-x` described above, and `-r` was to disable it. Now the default is not to do `-x` so this option is a no-op. Not implemented Usually you cannot cherry-pick a merge because you do not know which side of the merge should be considered the mainline. This option specifies the parent number (starting from 1) of the mainline and allows cherry-pick to replay the change relative to the specified parent. Not implemented Usually the command automatically creates a commit. This flag applies the change necessary to cherry-pick the named commit to your working tree and the index, but does not make the commit. In addition, when this option is used, your index does not have to match the HEAD commit. The cherry-pick is done against the beginning state of your index. + This is useful when cherry-picking more than one commits' effect to your index in a row. Not implemented Add Signed-off-by line at the end of the commit message. Not implemented Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory. Not implemented If the git configuration specifies clean.requireForce as true, 'git-clean' will refuse to run unless given -f or -n. Not implemented Don't actually remove anything, just show what would be done. Not implemented Be quiet, only report errors, but not the files that are successfully removed. Not implemented Don't use the ignore rules. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with 'git-reset') to create a pristine working directory to test a clean build. Not implemented Remove only files ignored by git. This may be useful to rebuild everything from scratch, but keep manually created files. Represents git's clone command line interface command. Do it. The name of a new directory to clone into. The (possibly remote) repository to clone from. Not implemented When the repository to clone from is on a local machine, this flag bypasses normal "git aware" transport mechanism and clones the repository by making a copy of HEAD and everything under objects and refs directories. The files under .git/objects/ directory are hardlinked to save space when possible. This is now the default when the source repository is specified with /path/to/repo syntax, so it essentially is a no-op option. To force copying instead of hardlinking (which may be desirable if you are trying to make a back-up of your repository), but still avoid the usual "git aware" transport mechanism, --no-hardlinks can be used. Not implemented Optimize the cloning process from a repository on a local filesystem by copying files under .git/objects directory. Not implemented When the repository to clone is on the local machine, instead of using hard links, automatically setup .git/objects/info/alternates to share the objects with the source repository. The resulting repository starts out without any object of its own. NOTE: this is a possibly dangerous operation; do not use it unless you understand what it does. If you clone your repository using this option and then delete branches (or use any other git command that makes any existing commit unreferenced) in the source repository, some objects may become unreferenced (or dangling). These objects may be removed by normal git operations (such as git-commit) which automatically call git gc --auto. (See git-gc(1).) If these objects are removed and were referenced by the cloned repository, then the cloned repository will become corrupt. Not implemented If the reference repository is on the local machine automatically setup .git/objects/info/alternates to obtain objects from the reference repository. Using an already existing repository as an alternate will require fewer objects to be copied from the repository being cloned, reducing network and local storage costs. NOTE: see NOTE to --shared option. Operate quietly. This flag is also passed to the `rsync' command when given. Display the progressbar, even in case the standard output is not a terminal. No checkout of HEAD is performed after the clone is complete. Make a bare GIT repository. That is, instead of creating "directory" and placing the administrative files in "directory"/.git, make the "directory" itself the $GIT_DIR. This obviously implies the -n because there is nowhere to check out the working tree. Also the branch heads at the remote are copied directly to corresponding local branch heads, without mapping them to refs/remotes/origin/. When this option is used, neither remote-tracking branches nor the related configuration variables are created. Set up a mirror of the remote repository. This implies --bare. Instead of using the remote name origin to keep track of the upstream repository, use "name". Not implemented. When given, and the repository to clone from is accessed via ssh, this specifies a non-default path for the command run on the other end. Not implemented. Specify the directory from which templates will be used; if unset the templates are taken from the installation defined default, typically /usr/share/git-core/templates. Not implemented. Create a shallow clone with a history truncated to the specified number of revisions. A shallow repository has a number of limitations (you cannot clone or fetch from it, nor push from nor into it), but is adequate if you are only interested in the recent history of a large project with a long history, and would want to send in fixes as patches. Not implemented Tell the command to automatically stage files that have been modified and deleted, but new files you have not told git about are not affected. Not implemented Take an existing commit object, and reuse the log message and the authorship information (including the timestamp) when creating the commit. Not implemented Like '-C', but with '-c' the editor is invoked, so that the user can further edit the commit message. Not implemented When used with -C/-c/--amend options, declare that the authorship of the resulting commit now belongs of the committer. This also renews the author timestamp. Not implemented Take the commit message from the given file. Use '-' to read the message from the standard input. Not implemented Override the author name used in the commit. You can use the standard `A U Thor <author@example.com>` format. Otherwise, an existing commit that matches the given string and its author name is used. Not implemented Use the given <msg> as the commit message. Not implemented Use the contents of the given file as the initial version of the commit message. The editor is invoked and you can make subsequent changes. If a message is specified using the `-m` or `-F` options, this option has no effect. This overrides the `commit.template` configuration variable. Not implemented Add Signed-off-by line by the committer at the end of the commit log message. Not implemented This option bypasses the pre-commit and commit-msg hooks. See also linkgit:githooks[5]. Not implemented Usually recording a commit that has the exact same tree as its sole parent commit is a mistake, and the command prevents you from making such a commit. This option bypasses the safety, and is primarily for use by foreign scm interface scripts. Not implemented This option sets how the commit message is cleaned up. The '<mode>' can be one of 'verbatim', 'whitespace', 'strip', and 'default'. The 'default' mode will strip leading and trailing empty lines and #commentary from the commit message only if the message is to be edited. Otherwise only whitespace removed. The 'verbatim' mode does not change message at all, 'whitespace' removes just leading/trailing whitespace lines and 'strip' removes both whitespace and commentary. Not implemented The message taken from file with `-F`, command line with `-m`, and from file with `-C` are usually used as the commit log message unmodified. This option lets you further edit the message taken from these sources. Not implemented Used to amend the tip of the current branch. Prepare the tree object you would want to replace the latest commit as usual (this includes the usual -i/-o and explicit paths), and the commit log editor is seeded with the commit message from the tip of the current branch. The commit you create replaces the current tip -- if it was a merge, it will have the parents of the current tip as parents -- so the current top commit is discarded. + Not implemented Each '-p' indicates the id of a parent commit object. Displays list of all the variables set in the config file Not implemented. For multi-line options only. Not implemented In addition to the number of loose objects and disk space consumed, it reports the number of in-pack objects, number of packs, disk space consumed by those packs, and number of objects that can be removed by running `git prune-packed`. Not implemented Instead of using only the annotated tags, use any ref found in `.git/refs/`. This option enables matching any known branch, remote branch, or lightweight tag. Not implemented Instead of using only the annotated tags, use any tag found in `.git/refs/tags`. This option enables matching a lightweight (non-annotated) tag. Not implemented Instead of finding the tag that predates the commit, find the tag that comes after the commit, and thus contains it. Automatically implies --tags. Not implemented Instead of using the default 7 hexadecimal digits as the abbreviated object name, use <n> digits, or as many digits as needed to form a unique object name. An <n> of 0 will suppress long format, only showing the closest tag. Not implemented Instead of considering only the 10 most recent tags as candidates to describe the input committish consider up to <n> candidates. Increasing <n> above 10 will take slightly longer but may produce a more accurate result. An <n> of 0 will cause only exact matches to be output. Not implemented Only output exact matches (a tag directly references the supplied commit). This is a synonym for --candidates=0. Not implemented Verbosely display information about the searching strategy being employed to standard error. The tag name will still be printed to standard out. Not implemented Always output the long format (the tag, the number of commits and the abbreviated commit name) even when it matches a tag. This is useful when you want to see parts of the commit object name in "describe" output, even when the commit in question happens to be a tagged version. Instead of just emitting the tag name, it will describe such a commit as v1.2-0-gdeadbee (0th commit since tag v1.2 that points at object deadbee....). Not implemented Only consider tags matching the given pattern (can be used to avoid leaking private tags made from the repository). Not implemented Show uniquely abbreviated commit object as fallback. Not implemented ifdef::git-format-patch[] Generate plain patches without any diffstats. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented Generate diffs with <n> lines of context instead of the usual three. ifndef::git-format-patch[] Implies `-p`. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate the raw format. {git-diff-core? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] Not implemented Generate a diff using the "patience diff" algorithm. Not implemented Generate a diffstat. You can override the default output width for 80-column terminal by `--stat=width`. The width of the filename part can be controlled by giving another width to it separated by a comma. Not implemented Similar to `\--stat`, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Not implemented Output only the last line of the `--stat` format containing total number of modified files, as well as number of added and deleted lines. Not implemented Output the distribution of relative amount of changes (number of lines added or removed) for each sub-directory. Directories with changes below a cut-off percent (3% by default) are not shown. The cut-off percent can be set with `--dirstat=limit`. Changes in a child directory is not counted for the parent directory, unless `--cumulative` is used. Not implemented Same as `--dirstat`, but counts changed files instead of lines. Not implemented Output a condensed summary of extended header information such as creations, renames and mode changes. Not implemented ifndef::git-format-patch[] Synonym for `-p --stat`. endif::git-format-patch[] Not implemented ifdef::git-log[] Separate the commits with NULs instead of with new newlines. + Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] When `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Show only names of changed files. Not implemented Show only names and status of changed files. See the description of the `--diff-filter` option on what the status letters mean. Not implemented Chose the output format for submodule differences. <format> can be one of 'short' and 'log'. 'short' just shows pairs of commit names, this format is used when this option is not given. 'log' is the default value for this option and lists the commits in that commit range like the 'summary' option of linkgit:git-submodule[1] does. Not implemented Show colored diff. Not implemented Turn off colored diff, even when the configuration file gives the default to color output. Not implemented Show colored word diff, i.e., color words which have changed. By default, words are separated by whitespace. + When a <regex> is specified, every non-overlapping match of the considered whitespace and ignored(!) for the purposes of finding differences. You may want to append `|[^[:space:]]` to your regular expression to make sure that it matches all non-whitespace characters. A match that contains a newline is silently truncated(!) at the newline. + The regex can also be set via a diff driver or configuration option, see linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly overrides any diff driver or configuration setting. Diff drivers override configuration settings. endif::git-format-patch[] Not implemented Turn off rename detection, even when the configuration file gives the default to do so. Not implemented ifndef::git-format-patch[] Warn if changes introduce trailing whitespace or an indent that uses a space before a tab. Exits with non-zero status if problems are found. Not compatible with --exit-code. endif::git-format-patch[] Not implemented Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output. Not implemented In addition to `--full-index`, output a binary diff that can be applied with `git-apply`. Not implemented Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show only a partial prefix. This is independent of the `--full-index` option above, which controls the diff-patch output format. Non default number of digits can be specified with `--abbrev=<n>`. Not implemented Break complete rewrite changes into pairs of delete and create. Not implemented Detect renames. Not implemented Detect copies as well as renames. See also `--find-copies-harder`. Not implemented ifndef::git-format-patch[] Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), have their type (i.e. regular file, symlink, submodule, ...) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters may be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. endif::git-format-patch[] Not implemented For performance reasons, by default, `-C` option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one `-C` option has the same effect. Not implemented The `-M` and `-C` options require O(n^2) processing time where n is the number of potential rename/copy targets. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number. Not implemented ifndef::git-format-patch[] Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the 'pickaxe' entry in linkgit:gitdiffcore[7] for more details. Not implemented When `-S` finds a change, show all the changes in that changeset, not just the files that contain the change in <string>. Not implemented Make the <string> not a plain string but an extended POSIX regex to match. endif::git-format-patch[] Not implemented Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line. Not implemented ifndef::git-format-patch[] Swap two inputs; that is, show differences from index or on-disk file to tree contents. Not implemented When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. endif::git-format-patch[] Not implemented Treat all files as text. Not implemented Ignore changes in whitespace at EOL. Not implemented Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent. Not implemented Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none. Not implemented Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other. Not implemented ifndef::git-format-patch[] Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences. Not implemented Disable all output of the program. Implies `--exit-code`. endif::git-format-patch[] Not implemented Allow an external diff helper to be executed. If you set an external diff driver with linkgit:gitattributes[5], you need to use this option with linkgit:git-log[1] and friends. Not implemented Disallow external diff drivers. Not implemented Ignore changes to submodules in the diff generation. Not implemented Show the given source prefix instead of "a/". Not implemented Show the given destination prefix instead of "b/". Not implemented Do not show any source or destination prefix. Not implemented Diff against the "base" version, "our branch" or "their branch" respectively. With these options, diffs for merged entries are not shown. + The default is to diff against our branch (-2) and the cleanly resolved paths. The option -0 can be given to omit diff output for unmerged entries and just show "Unmerged". Not implemented Diff against the "base" version, "our branch" or "their branch" respectively. With these options, diffs for merged entries are not shown. + The default is to diff against our branch (-2) and the cleanly resolved paths. The option -0 can be given to omit diff output for unmerged entries and just show "Unmerged". Not implemented Diff against the "base" version, "our branch" or "their branch" respectively. With these options, diffs for merged entries are not shown. + The default is to diff against our branch (-2) and the cleanly resolved paths. The option -0 can be given to omit diff output for unmerged entries and just show "Unmerged". Not implemented Diff against the "base" version, "our branch" or "their branch" respectively. With these options, diffs for merged entries are not shown. + The default is to diff against our branch (-2) and the cleanly resolved paths. The option -0 can be given to omit diff output for unmerged entries and just show "Unmerged". Not implemented This compares stage 2 (our branch), stage 3 (their branch) and the working tree file and outputs a combined diff, similar to the way 'diff-tree' shows a merge commit with these flags. Not implemented Remain silent even on nonexistent files Not implemented ifdef::git-format-patch[] Generate plain patches without any diffstats. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented Generate diffs with <n> lines of context instead of the usual three. ifndef::git-format-patch[] Implies `-p`. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate the raw format. {git-diff-core? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] Not implemented Generate a diff using the "patience diff" algorithm. Not implemented Generate a diffstat. You can override the default output width for 80-column terminal by `--stat=width`. The width of the filename part can be controlled by giving another width to it separated by a comma. Not implemented Similar to `\--stat`, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Not implemented Output only the last line of the `--stat` format containing total number of modified files, as well as number of added and deleted lines. Not implemented Output the distribution of relative amount of changes (number of lines added or removed) for each sub-directory. Directories with changes below a cut-off percent (3% by default) are not shown. The cut-off percent can be set with `--dirstat=limit`. Changes in a child directory is not counted for the parent directory, unless `--cumulative` is used. Not implemented Same as `--dirstat`, but counts changed files instead of lines. Not implemented Output a condensed summary of extended header information such as creations, renames and mode changes. Not implemented ifndef::git-format-patch[] Synonym for `-p --stat`. endif::git-format-patch[] Not implemented ifdef::git-log[] Separate the commits with NULs instead of with new newlines. + Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] When `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Show only names of changed files. Not implemented Show only names and status of changed files. See the description of the `--diff-filter` option on what the status letters mean. Not implemented Chose the output format for submodule differences. <format> can be one of 'short' and 'log'. 'short' just shows pairs of commit names, this format is used when this option is not given. 'log' is the default value for this option and lists the commits in that commit range like the 'summary' option of linkgit:git-submodule[1] does. Not implemented Show colored diff. Not implemented Turn off colored diff, even when the configuration file gives the default to color output. Not implemented Show colored word diff, i.e., color words which have changed. By default, words are separated by whitespace. + When a <regex> is specified, every non-overlapping match of the considered whitespace and ignored(!) for the purposes of finding differences. You may want to append `|[^[:space:]]` to your regular expression to make sure that it matches all non-whitespace characters. A match that contains a newline is silently truncated(!) at the newline. + The regex can also be set via a diff driver or configuration option, see linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly overrides any diff driver or configuration setting. Diff drivers override configuration settings. endif::git-format-patch[] Not implemented Turn off rename detection, even when the configuration file gives the default to do so. Not implemented ifndef::git-format-patch[] Warn if changes introduce trailing whitespace or an indent that uses a space before a tab. Exits with non-zero status if problems are found. Not compatible with --exit-code. endif::git-format-patch[] Not implemented Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output. Not implemented In addition to `--full-index`, output a binary diff that can be applied with `git-apply`. Not implemented Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show only a partial prefix. This is independent of the `--full-index` option above, which controls the diff-patch output format. Non default number of digits can be specified with `--abbrev=<n>`. Not implemented Break complete rewrite changes into pairs of delete and create. Not implemented Detect renames. Not implemented Detect copies as well as renames. See also `--find-copies-harder`. Not implemented ifndef::git-format-patch[] Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), have their type (i.e. regular file, symlink, submodule, ...) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters may be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. endif::git-format-patch[] Not implemented For performance reasons, by default, `-C` option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one `-C` option has the same effect. Not implemented The `-M` and `-C` options require O(n^2) processing time where n is the number of potential rename/copy targets. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number. Not implemented ifndef::git-format-patch[] Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the 'pickaxe' entry in linkgit:gitdiffcore[7] for more details. Not implemented When `-S` finds a change, show all the changes in that changeset, not just the files that contain the change in <string>. Not implemented Make the <string> not a plain string but an extended POSIX regex to match. endif::git-format-patch[] Not implemented Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line. Not implemented ifndef::git-format-patch[] Swap two inputs; that is, show differences from index or on-disk file to tree contents. Not implemented When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. endif::git-format-patch[] Not implemented Treat all files as text. Not implemented Ignore changes in whitespace at EOL. Not implemented Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent. Not implemented Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none. Not implemented Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other. Not implemented ifndef::git-format-patch[] Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences. Not implemented Disable all output of the program. Implies `--exit-code`. endif::git-format-patch[] Not implemented Allow an external diff helper to be executed. If you set an external diff driver with linkgit:gitattributes[5], you need to use this option with linkgit:git-log[1] and friends. Not implemented Disallow external diff drivers. Not implemented Ignore changes to submodules in the diff generation. Not implemented Show the given source prefix instead of "a/". Not implemented Show the given destination prefix instead of "b/". Not implemented Do not show any source or destination prefix. Not implemented do not consider the on-disk file at all Not implemented By default, files recorded in the index but not checked out are reported as deleted. This flag makes 'git-diff-index' say that all non-checked-out files are up to date. Not implemented ifdef::git-format-patch[] Generate plain patches without any diffstats. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented Generate diffs with <n> lines of context instead of the usual three. ifndef::git-format-patch[] Implies `-p`. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate the raw format. {git-diff-core? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] Not implemented Generate a diff using the "patience diff" algorithm. Not implemented Generate a diffstat. You can override the default output width for 80-column terminal by `--stat=width`. The width of the filename part can be controlled by giving another width to it separated by a comma. Not implemented Similar to `\--stat`, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Not implemented Output only the last line of the `--stat` format containing total number of modified files, as well as number of added and deleted lines. Not implemented Output the distribution of relative amount of changes (number of lines added or removed) for each sub-directory. Directories with changes below a cut-off percent (3% by default) are not shown. The cut-off percent can be set with `--dirstat=limit`. Changes in a child directory is not counted for the parent directory, unless `--cumulative` is used. Not implemented Same as `--dirstat`, but counts changed files instead of lines. Not implemented Output a condensed summary of extended header information such as creations, renames and mode changes. Not implemented ifndef::git-format-patch[] Synonym for `-p --stat`. endif::git-format-patch[] Not implemented ifdef::git-log[] Separate the commits with NULs instead of with new newlines. + Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] When `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Show only names of changed files. Not implemented Show only names and status of changed files. See the description of the `--diff-filter` option on what the status letters mean. Not implemented Chose the output format for submodule differences. <format> can be one of 'short' and 'log'. 'short' just shows pairs of commit names, this format is used when this option is not given. 'log' is the default value for this option and lists the commits in that commit range like the 'summary' option of linkgit:git-submodule[1] does. Not implemented Show colored diff. Not implemented Turn off colored diff, even when the configuration file gives the default to color output. Not implemented Show colored word diff, i.e., color words which have changed. By default, words are separated by whitespace. + When a <regex> is specified, every non-overlapping match of the considered whitespace and ignored(!) for the purposes of finding differences. You may want to append `|[^[:space:]]` to your regular expression to make sure that it matches all non-whitespace characters. A match that contains a newline is silently truncated(!) at the newline. + The regex can also be set via a diff driver or configuration option, see linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly overrides any diff driver or configuration setting. Diff drivers override configuration settings. endif::git-format-patch[] Not implemented Turn off rename detection, even when the configuration file gives the default to do so. Not implemented ifndef::git-format-patch[] Warn if changes introduce trailing whitespace or an indent that uses a space before a tab. Exits with non-zero status if problems are found. Not compatible with --exit-code. endif::git-format-patch[] Not implemented Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output. Not implemented In addition to `--full-index`, output a binary diff that can be applied with `git-apply`. Not implemented Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show only a partial prefix. This is independent of the `--full-index` option above, which controls the diff-patch output format. Non default number of digits can be specified with `--abbrev=<n>`. Not implemented Break complete rewrite changes into pairs of delete and create. Not implemented Detect renames. Not implemented Detect copies as well as renames. See also `--find-copies-harder`. Not implemented ifndef::git-format-patch[] Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), have their type (i.e. regular file, symlink, submodule, ...) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters may be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. endif::git-format-patch[] Not implemented For performance reasons, by default, `-C` option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one `-C` option has the same effect. Not implemented The `-M` and `-C` options require O(n^2) processing time where n is the number of potential rename/copy targets. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number. Not implemented ifndef::git-format-patch[] Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the 'pickaxe' entry in linkgit:gitdiffcore[7] for more details. Not implemented When `-S` finds a change, show all the changes in that changeset, not just the files that contain the change in <string>. Not implemented Make the <string> not a plain string but an extended POSIX regex to match. endif::git-format-patch[] Not implemented Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line. Not implemented ifndef::git-format-patch[] Swap two inputs; that is, show differences from index or on-disk file to tree contents. Not implemented When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. endif::git-format-patch[] Not implemented Treat all files as text. Not implemented Ignore changes in whitespace at EOL. Not implemented Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent. Not implemented Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none. Not implemented Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other. Not implemented ifndef::git-format-patch[] Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences. Not implemented Disable all output of the program. Implies `--exit-code`. endif::git-format-patch[] Not implemented Allow an external diff helper to be executed. If you set an external diff driver with linkgit:gitattributes[5], you need to use this option with linkgit:git-log[1] and friends. Not implemented Disallow external diff drivers. Not implemented Ignore changes to submodules in the diff generation. Not implemented Show the given source prefix instead of "a/". Not implemented Show the given destination prefix instead of "b/". Not implemented Do not show any source or destination prefix. Not implemented Do not prompt before launching a diff tool. Not implemented Prompt before each invocation of the diff tool. This is the default behaviour; the option is provided to override any configuration settings. Not implemented Use the diff tool specified by <tool>. Valid merge tools are: kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge and araxis. + If a diff tool is not specified, 'git-difftool' will use the configuration variable `diff.tool`. If the configuration variable `diff.tool` is not set, 'git-difftool' will pick a suitable default. + You can explicitly provide a full path to the tool by setting the configuration variable `difftool.<tool>.path`. For example, you can configure the absolute path to kdiff3 by setting `difftool.kdiff3.path`. Otherwise, 'git-difftool' assumes the tool is available in PATH. + Instead of running one of the known diff tools, 'git-difftool' can be customized to run an alternative program by specifying the command line to invoke in a configuration variable `difftool.<tool>.cmd`. + When 'git-difftool' is invoked with this tool (either through the `-t` or `--tool` option or the `diff.tool` configuration variable) the configured command line will be invoked with the following variables available: `$LOCAL` is set to the name of the temporary file containing the contents of the diff pre-image and `$REMOTE` is set to the name of the temporary file containing the contents of the diff post-image. `$BASE` is provided for compatibility with custom merge tool commands and has the same value as `$LOCAL`. Not implemented recurse into sub-trees Not implemented show tree entry itself as well as subtrees. Implies -r. Not implemented When '--root' is specified the initial commit will be shown as a big creation event. This is equivalent to a diff against the NULL tree. Not implemented When '--stdin' is specified, the command does not take <tree-ish> arguments from the command line. Instead, it reads lines containing either two <tree>, one <commit>, or a list of <commit> from its standard input. (Use a single space as separator.) + When two trees are given, it compares the first tree with the second. When a single commit is given, it compares the commit with its parents. The remaining commits, when given, are used as if they are parents of the first commit. + When comparing two trees, the ID of both trees (separated by a space and terminated by a newline) is printed before the difference. When comparing commits, the ID of the first (or only) commit, followed by a newline, is printed. + The following flags further affect the behavior when comparing commits (but not trees). Not implemented By default, 'git-diff-tree --stdin' does not show differences for merge commits. With this flag, it shows differences to that commit from all of its parents. See also '-c'. Not implemented By default, 'git-diff-tree --stdin' shows differences, either in machine-readable form (without '-p') or in patch form (with '-p'). This output can be suppressed. It is only useful with '-v' flag. Not implemented This flag causes 'git-diff-tree --stdin' to also show the commit message before the differences. Not implemented 'git-diff-tree' outputs a line with the commit ID when applicable. This flag suppressed the commit ID output. Not implemented This flag changes the way a merge commit is displayed (which means it is useful only when the command is given one <tree-ish>, or '--stdin'). It shows the differences from each of the parents to the merge result simultaneously instead of showing pairwise diff between a parent and the result one at a time (which is what the '-m' option does). Furthermore, it lists only files which were modified from all parents. Not implemented This flag changes the way a merge commit patch is displayed, in a similar way to the '-c' option. It implies the '-c' and '-p' options and further compresses the patch output by omitting uninteresting hunks whose the contents in the parents have only two variants and the merge result picks one of them without modification. When all hunks are uninteresting, the commit itself and the commit log message is not shown, just like in any other "empty diff" case. Not implemented Show the commit itself and the commit log message even if the diff itself is empty. Not implemented ifdef::git-format-patch[] Generate plain patches without any diffstats. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented Generate diffs with <n> lines of context instead of the usual three. ifndef::git-format-patch[] Implies `-p`. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate the raw format. {git-diff-core? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] Not implemented Generate a diff using the "patience diff" algorithm. Not implemented Generate a diffstat. You can override the default output width for 80-column terminal by `--stat=width`. The width of the filename part can be controlled by giving another width to it separated by a comma. Not implemented Similar to `\--stat`, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Not implemented Output only the last line of the `--stat` format containing total number of modified files, as well as number of added and deleted lines. Not implemented Output the distribution of relative amount of changes (number of lines added or removed) for each sub-directory. Directories with changes below a cut-off percent (3% by default) are not shown. The cut-off percent can be set with `--dirstat=limit`. Changes in a child directory is not counted for the parent directory, unless `--cumulative` is used. Not implemented Same as `--dirstat`, but counts changed files instead of lines. Not implemented Output a condensed summary of extended header information such as creations, renames and mode changes. Not implemented ifndef::git-format-patch[] Synonym for `-p --stat`. endif::git-format-patch[] Not implemented ifdef::git-log[] Separate the commits with NULs instead of with new newlines. + Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] When `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Show only names of changed files. Not implemented Show only names and status of changed files. See the description of the `--diff-filter` option on what the status letters mean. Not implemented Chose the output format for submodule differences. <format> can be one of 'short' and 'log'. 'short' just shows pairs of commit names, this format is used when this option is not given. 'log' is the default value for this option and lists the commits in that commit range like the 'summary' option of linkgit:git-submodule[1] does. Not implemented Show colored diff. Not implemented Turn off colored diff, even when the configuration file gives the default to color output. Not implemented Show colored word diff, i.e., color words which have changed. By default, words are separated by whitespace. + When a <regex> is specified, every non-overlapping match of the considered whitespace and ignored(!) for the purposes of finding differences. You may want to append `|[^[:space:]]` to your regular expression to make sure that it matches all non-whitespace characters. A match that contains a newline is silently truncated(!) at the newline. + The regex can also be set via a diff driver or configuration option, see linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly overrides any diff driver or configuration setting. Diff drivers override configuration settings. endif::git-format-patch[] Not implemented Turn off rename detection, even when the configuration file gives the default to do so. Not implemented ifndef::git-format-patch[] Warn if changes introduce trailing whitespace or an indent that uses a space before a tab. Exits with non-zero status if problems are found. Not compatible with --exit-code. endif::git-format-patch[] Not implemented Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output. Not implemented In addition to `--full-index`, output a binary diff that can be applied with `git-apply`. Not implemented Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show only a partial prefix. This is independent of the `--full-index` option above, which controls the diff-patch output format. Non default number of digits can be specified with `--abbrev=<n>`. Not implemented Break complete rewrite changes into pairs of delete and create. Not implemented Detect renames. Not implemented Detect copies as well as renames. See also `--find-copies-harder`. Not implemented ifndef::git-format-patch[] Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), have their type (i.e. regular file, symlink, submodule, ...) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters may be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. endif::git-format-patch[] Not implemented For performance reasons, by default, `-C` option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one `-C` option has the same effect. Not implemented The `-M` and `-C` options require O(n^2) processing time where n is the number of potential rename/copy targets. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number. Not implemented ifndef::git-format-patch[] Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the 'pickaxe' entry in linkgit:gitdiffcore[7] for more details. Not implemented When `-S` finds a change, show all the changes in that changeset, not just the files that contain the change in <string>. Not implemented Make the <string> not a plain string but an extended POSIX regex to match. Not implemented Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line. Not implemented ifndef::git-format-patch[] Swap two inputs; that is, show differences from index or on-disk file to tree contents. Not implemented When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. endif::git-format-patch[] Not implemented Treat all files as text. Not implemented Ignore changes in whitespace at EOL. Not implemented Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent. Not implemented Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none. Not implemented Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other. Not implemented ifndef::git-format-patch[] Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences. Not implemented Disable all output of the program. Implies `--exit-code`. endif::git-format-patch[] Not implemented Allow an external diff helper to be executed. If you set an external diff driver with linkgit:gitattributes[5], you need to use this option with linkgit:git-log[1] and friends. Not implemented Disallow external diff drivers. Not implemented Ignore changes to submodules in the diff generation. Not implemented Show the given source prefix instead of "a/". Not implemented Show the given destination prefix instead of "b/". Not implemented Do not show any source or destination prefix. Not implemented For more detailed explanation on these common options, see also linkgit:gitdiffcore[7]. Not implemented For more detailed explanation on these common options, see also linkgit:gitdiffcore[7]. Not implemented Instead of showing the full 40-byte hexadecimal commit object name, show only a partial prefix. Non default number of digits can be specified with "--abbrev=<n>" (which also modifies diff output, if it is displayed). + This should make "--pretty=oneline" a whole lot more readable for people using 80-column terminals. Not implemented This is a shorthand for "--pretty=oneline --abbrev-commit" used together. Not implemented The commit objects record the encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Not implemented Insert 'progress' statements every <n> objects, to be shown by 'git-fast-import' during import. Not implemented Specify how to handle signed tags. Since any transformation after the export can change the tag names (which can also happen when excluding revisions) the signatures will not match. + When asking to 'abort' (which is the default), this program will die when encountering a signed tag. With 'strip', the tags will be made unsigned, with 'verbatim', they will be silently exported and with 'warn', they will be exported, but you will see a warning. Not implemented Specify how to handle tags whose tagged objectis filtered out. Since revisions and files to export can be limited by path, tagged objects may be filtered completely. + When asking to 'abort' (which is the default), this program will die when encountering such a tag. With 'drop' it will omit such tags from the output. With 'rewrite', if the tagged object is a commit, it will rewrite the tag to tag an ancestor commit (via parent rewriting; see linkgit:git-rev-list[1]) Not implemented Perform move and/or copy detection, as described in the linkgit:git-diff[1] manual page, and use it to generate rename and copy commands in the output dump. + Note that earlier versions of this command did not complain and produced incorrect results if you gave these options. Not implemented Perform move and/or copy detection, as described in the linkgit:git-diff[1] manual page, and use it to generate rename and copy commands in the output dump. + Note that earlier versions of this command did not complain and produced incorrect results if you gave these options. Not implemented Dumps the internal marks table to <file> when complete. Marks are written one per line as `:markid SHA-1`. Only marks for revisions are dumped; marks for blobs are ignored. Backends can use this file to validate imports after they have been completed, or to save the marks table across incremental runs. As <file> is only opened and truncated at completion, the same path can also be safely given to \--import-marks. Not implemented Before processing any input, load the marks specified in <file>. The input file must exist, must be readable, and must use the same format as produced by \--export-marks. + Any commits that have already been marked will not be exported again. If the backend uses a similar \--import-marks file, this allows for incremental bidirectional exporting of the repository by keeping the marks the same across runs. Not implemented Some old repositories have tags without a tagger. The fast-import protocol was pretty strict about that, and did not allow that. So fake a tagger to be able to fast-import the output. Not implemented Skip output of blob objects and instead refer to blobs via their original SHA-1 hash. This is useful when rewriting the directory structure or history of a repository without touching the contents of individual files. Note that the resulting stream can only be used by a repository which already contains the necessary objects. Not implemented Specify the type of dates the frontend will supply to fast-import within `author`, `committer` and `tagger` commands. See ``Date Formats'' below for details about which formats are supported, and their syntax. Not implemented Force updating modified existing branches, even if doing so would cause commits to be lost (as the new commit does not contain the old commit). Not implemented Maximum size of each output packfile, expressed in MiB. The default is 4096 (4 GiB) as that is the maximum allowed packfile size (due to file format limitations). Some importers may wish to lower this, such as to ensure the resulting packfiles fit on CDs. Not implemented Maximum delta depth, for blob and tree deltification. Default is 10. Not implemented Maximum number of branches to maintain active at once. See ``Memory Utilization'' below for details. Default is 5. Not implemented Dumps the internal marks table to <file> when complete. Marks are written one per line as `:markid SHA-1`. Frontends can use this file to validate imports after they have been completed, or to save the marks table across incremental runs. As <file> is only opened and truncated at checkpoint (or completion) the same path can also be safely given to \--import-marks. Not implemented Before processing any input, load the marks specified in <file>. The input file must exist, must be readable, and must use the same format as produced by \--export-marks. Multiple options may be supplied to import more than one set of marks. If a mark is defined to different values, the last file wins. Not implemented After creating a packfile, print a line of data to <file> listing the filename of the packfile and the last commit on each branch that was written to that packfile. This information may be useful after importing projects whose total object set exceeds the 4 GiB packfile limit, as these commits can be used as edge points during calls to 'git-pack-objects'. Not implemented Disable all non-fatal output, making fast-import silent when it is successful. This option disables the output shown by \--stats. Not implemented Display some basic statistics about the objects fast-import has created, the packfiles they were stored into, and the memory used by fast-import during this run. Showing this output is currently the default, but can be disabled with \--quiet. Not implemented Fetch all remote refs. Not implemented Pass '-q' flag to 'git-unpack-objects'; this makes the cloning process less verbose. Not implemented Do not invoke 'git-unpack-objects' on received data, but create a single packfile out of it instead, and store it in the object database. If provided twice then the pack is locked against repacking. Not implemented Spend extra cycles to minimize the number of objects to be sent. Use it on slower connection. Not implemented If the remote side supports it, annotated tags objects will be downloaded on the same connection as the other objects if the object the tag references is downloaded. The caller must otherwise determine the tags this option made available. Not implemented Use this to specify the path to 'git-upload-pack' on the remote side, if is not found on your $PATH. Installations of sshd ignores the user's environment setup scripts for login shells (e.g. .bash_profile) and your privately installed git may not be found on the system default $PATH. Another workaround suggested is to set up your $PATH in ".bashrc", but this flag is for people who do not want to pay the overhead for non-interactive shells by having a lean .bashrc file (they set most of the things up in .bash_profile). Not implemented Same as \--upload-pack=<git-upload-pack>. Not implemented Limit fetching to ancestor-chains not longer than n. Not implemented Do not show the progress. Not implemented Run verbosely. Not implemented This filter may be used if you only need to modify the environment in which the commit will be performed. Specifically, you might want to rewrite the author/committer name/email/time environment variables (see linkgit:git-commit[1] for details). Do not forget to re-export the variables. Not implemented This is the filter for rewriting the tree and its contents. The argument is evaluated in shell with the working directory set to the root of the checked out tree. The new tree is then used as-is (new files are auto-added, disappeared files are auto-removed - neither .gitignore files nor any other ignore rules *HAVE ANY EFFECT*!). Not implemented This is the filter for rewriting the index. It is similar to the tree filter but does not check out the tree, which makes it much faster. Frequently used with `git rm \--cached \--ignore-unmatch ...`, see EXAMPLES below. For hairy cases, see linkgit:git-update-index[1]. Not implemented This is the filter for rewriting the commit's parent list. It will receive the parent string on stdin and shall output the new parent string on stdout. The parent string is in the format described in linkgit:git-commit-tree[1]: empty for the initial commit, "-p parent" for a normal commit and "-p parent1 -p parent2 -p parent3 ..." for a merge commit. Not implemented This is the filter for rewriting the commit messages. The argument is evaluated in the shell with the original commit message on standard input; its standard output is used as the new commit message. Not implemented This is the filter for performing the commit. If this filter is specified, it will be called instead of the 'git-commit-tree' command, with arguments of the form "<TREE_ID> [-p <PARENT_COMMIT_ID>]..." and the log message on stdin. The commit id is expected on stdout. + As a special extension, the commit filter may emit multiple commit ids; in that case, the rewritten children of the original commit will have all of them as parents. + You can use the 'map' convenience function in this filter, and other convenience functions, too. For example, calling 'skip_commit "$@"' will leave out the current commit (but not its changes! If you want that, use 'git-rebase' instead). + You can also use the 'git_commit_non_empty_tree "$@"' instead of 'git commit-tree "$@"' if you don't wish to keep commits with a single parent and that makes no change to the tree. Not implemented This is the filter for rewriting tag names. When passed, it will be called for every tag ref that points to a rewritten object (or to a tag object which points to a rewritten object). The original tag name is passed via standard input, and the new tag name is expected on standard output. + The original tags are not deleted, but can be overwritten; use "--tag-name-filter cat" to simply update the tags. In this case, be very careful and make sure you have the old tags backed up in case the conversion has run afoul. + Nearly proper rewriting of tag objects is supported. If the tag has a message attached, a new tag object will be created with the same message, author, and timestamp. If the tag has a signature attached, the signature will be stripped. It is by definition impossible to preserve signatures. The reason this is "nearly" proper, is because ideally if the tag did not change (points to the same object, has the same name, etc.) it should retain any signature. That is not the case, signatures will always be removed, buyer beware. There is also no support for changing the author or timestamp (or the tag message for that matter). Tags which point to other tags will be rewritten to point to the underlying commit. Not implemented Only look at the history which touches the given subdirectory. The result will contain that directory (and only that) as its project root. Implies --remap-to-ancestor. Not implemented Rewrite refs to the nearest rewritten ancestor instead of ignoring them. + Normally, positive refs on the command line are only changed if the commit they point to was rewritten. However, you can limit the extent of this rewriting by using linkgit:rev-list[1] arguments, e.g., path limiters. Refs pointing to such excluded commits would then normally be ignored. With this option, they are instead rewritten to point at the nearest ancestor that was not excluded. Not implemented Some kind of filters will generate empty commits, that left the tree untouched. This switch allow git-filter-branch to ignore such commits. Though, this switch only applies for commits that have one and only one parent, it will hence keep merges points. Also, this option is not compatible with the use of '--commit-filter'. Though you just need to use the function 'git_commit_non_empty_tree "$@"' instead of the 'git commit-tree "$@"' idiom in your commit filter to make that happen. Not implemented Use this option to set the namespace where the original commits will be stored. The default value is 'refs/original'. Not implemented Use this option to set the path to the temporary directory used for rewriting. When applying a tree filter, the command needs to temporarily check out the tree to some directory, which may consume considerable space in case of large projects. By default it does this in the '.git-rewrite/' directory but you can override that choice by this parameter. Not implemented 'git-filter-branch' refuses to start with an existing temporary directory or when there are already refs starting with 'refs/original/', unless forced. Not implemented If given, strings that substitute `%(fieldname)` placeholders are quoted as string literals suitable for the specified host language. This is meant to produce a scriptlet that can directly be `eval`ed. Not implemented If given, strings that substitute `%(fieldname)` placeholders are quoted as string literals suitable for the specified host language. This is meant to produce a scriptlet that can directly be `eval`ed. Not implemented If given, strings that substitute `%(fieldname)` placeholders are quoted as string literals suitable for the specified host language. This is meant to produce a scriptlet that can directly be `eval`ed. Not implemented If given, strings that substitute `%(fieldname)` placeholders are quoted as string literals suitable for the specified host language. This is meant to produce a scriptlet that can directly be `eval`ed. Not implemented Use <dir> to store the resulting files, instead of the current working directory. Not implemented Name output in '[PATCH n/m]' format, even with a single patch. Not implemented Name output in '[PATCH]' format. Not implemented Start numbering the patches at <n> instead of 1. Not implemented Output file names will be a simple number sequence without the default first line of the commit appended. Not implemented Do not strip/add '[PATCH]' from the first line of the commit log message. Not implemented Add `Signed-off-by:` line to the commit message, using the committer identity of yourself. Not implemented Print all commits to the standard output in mbox format, instead of creating a file for each one. Not implemented Create multipart/mixed attachment, the first part of which is the commit message and the patch itself in the second part, with `Content-Disposition: attachment`. Not implemented Disable the creation of an attachment, overriding the configuration setting. Not implemented Create multipart/mixed attachment, the first part of which is the commit message and the patch itself in the second part, with `Content-Disposition: inline`. Not implemented Controls addition of `In-Reply-To` and `References` headers to make the second and subsequent mails appear as replies to the first. Also controls generation of the `Message-Id` header to reference. + The optional <style> argument can be either `shallow` or `deep`. 'shallow' threading makes every mail a reply to the head of the series, where the head is chosen from the cover letter, the `\--in-reply-to`, and the first patch mail, in this order. 'deep' threading makes every mail a reply to the previous one. + The default is `--no-thread`, unless the 'format.thread' configuration is set. If `--thread` is specified without a style, it defaults to the style specified by 'format.thread' if any, or else `shallow`. + Beware that the default for 'git send-email' is to thread emails itself. If you want `git format-patch` to take care of threading, you will want to ensure that threading is disabled for `git send-email`. chrome Not implemented Controls addition of `In-Reply-To` and `References` headers to make the second and subsequent mails appear as replies to the first. Also controls generation of the `Message-Id` header to reference. + The optional <style> argument can be either `shallow` or `deep`. 'shallow' threading makes every mail a reply to the head of the series, where the head is chosen from the cover letter, the `\--in-reply-to`, and the first patch mail, in this order. 'deep' threading makes every mail a reply to the previous one. + The default is `--no-thread`, unless the 'format.thread' configuration is set. If `--thread` is specified without a style, it defaults to the style specified by 'format.thread' if any, or else `shallow`. + Beware that the default for 'git send-email' is to thread emails itself. If you want `git format-patch` to take care of threading, you will want to ensure that threading is disabled for `git send-email`. Not implemented Make the first mail (or all the mails with `--no-thread`) appear as a reply to the given Message-Id, which avoids breaking threads to provide a new patch series. Not implemented Do not include a patch that matches a commit in <until>..<since>. This will examine all patches reachable from <since> but not from <until> and compare them with the patches being generated, and any patch that matches is ignored. Not implemented Instead of the standard '[PATCH]' prefix in the subject line, instead use '[<Subject-Prefix>]'. This allows for useful naming of a patch series, and can be combined with the `--numbered` option. Not implemented Add a `Cc:` header to the email headers. This is in addition to any configured headers, and may be used multiple times. Not implemented Add an arbitrary header to the email headers. This is in addition to any configured headers, and may be used multiple times. For example, `--add-header="Organization: git-foo"` Not implemented In addition to the patches, generate a cover letter file containing the shortlog and the overall diffstat. You can fill in a description in the file before sending it out. Not implemented Instead of using `.patch` as the suffix for generated filenames, use specified suffix. A common alternative is `--suffix=.txt`. Leaving this empty will remove the `.patch` suffix. + Note that the leading character does not have to be a dot; for example, you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`. Not implemented Do not output contents of changes in binary files, instead display a notice that those files changed. Patches generated using this option cannot be applied properly, but they are still useful for code review. Not implemented Treat the revision argument as a <revision range>, even if it is just a single commit (that would normally be treated as a <since>). Note that root commits included in the specified range are always formatted as creation patches, independently of this flag. // Please don't remove this comment as asciidoc behaves badly when // the first non-empty line is ifdef/ifndef. The symptom is that // without this comment the <git-diff-core> attribute conditionally // defined below ends up being defined unconditionally. // Last checked with asciidoc 7.0.2. Not implemented ifdef::git-format-patch[] Generate plain patches without any diffstats. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented Generate diffs with <n> lines of context instead of the usual three. ifndef::git-format-patch[] Implies `-p`. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate the raw format. {git-diff-core? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] Not implemented Generate a diff using the "patience diff" algorithm. Not implemented Generate a diffstat. You can override the default output width for 80-column terminal by `--stat=width`. The width of the filename part can be controlled by giving another width to it separated by a comma. Not implemented Similar to `\--stat`, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Not implemented Output only the last line of the `--stat` format containing total number of modified files, as well as number of added and deleted lines. Not implemented Output the distribution of relative amount of changes (number of lines added or removed) for each sub-directory. Directories with changes below a cut-off percent (3% by default) are not shown. The cut-off percent can be set with `--dirstat=limit`. Changes in a child directory is not counted for the parent directory, unless `--cumulative` is used. Not implemented Same as `--dirstat`, but counts changed files instead of lines. Not implemented Output a condensed summary of extended header information such as creations, renames and mode changes. Not implemented ifndef::git-format-patch[] Synonym for `-p --stat`. endif::git-format-patch[] Not implemented ifdef::git-log[] Separate the commits with NULs instead of with new newlines. + Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] When `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Show only names of changed files. Not implemented Show only names and status of changed files. See the description of the `--diff-filter` option on what the status letters mean. Not implemented Chose the output format for submodule differences. <format> can be one of 'short' and 'log'. 'short' just shows pairs of commit names, this format is used when this option is not given. 'log' is the default value for this option and lists the commits in that commit range like the 'summary' option of linkgit:git-submodule[1] does. Not implemented Show colored diff. Not implemented Turn off colored diff, even when the configuration file gives the default to color output. Not implemented Show colored word diff, i.e., color words which have changed. By default, words are separated by whitespace. + When a <regex> is specified, every non-overlapping match of the considered whitespace and ignored(!) for the purposes of finding differences. You may want to append `|[^[:space:]]` to your regular expression to make sure that it matches all non-whitespace characters. A match that contains a newline is silently truncated(!) at the newline. + The regex can also be set via a diff driver or configuration option, see linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly overrides any diff driver or configuration setting. Diff drivers override configuration settings. endif::git-format-patch[] Not implemented Turn off rename detection, even when the configuration file gives the default to do so. Not implemented ifndef::git-format-patch[] Warn if changes introduce trailing whitespace or an indent that uses a space before a tab. Exits with non-zero status if problems are found. Not compatible with --exit-code. endif::git-format-patch[] Not implemented Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output. Not implemented In addition to `--full-index`, output a binary diff that can be applied with `git-apply`. Not implemented Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show only a partial prefix. This is independent of the `--full-index` option above, which controls the diff-patch output format. Non default number of digits can be specified with `--abbrev=<n>`. Not implemented Break complete rewrite changes into pairs of delete and create. Not implemented Detect renames. Not implemented Detect copies as well as renames. See also `--find-copies-harder`. Not implemented ifndef::git-format-patch[] Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), have their type (i.e. regular file, symlink, submodule, ...) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters may be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. endif::git-format-patch[] Not implemented For performance reasons, by default, `-C` option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one `-C` option has the same effect. Not implemented The `-M` and `-C` options require O(n^2) processing time where n is the number of potential rename/copy targets. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number. Not implemented ifndef::git-format-patch[] Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the 'pickaxe' entry in linkgit:gitdiffcore[7] for more details. Not implemented When `-S` finds a change, show all the changes in that changeset, not just the files that contain the change in <string>. Not implemented Make the <string> not a plain string but an extended POSIX regex to match. endif::git-format-patch[] Not implemented Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line. Not implemented Swap two inputs; that is, show differences from index or on-disk file to tree contents. Not implemented When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. Not implemented Treat all files as text. Not implemented Ignore changes in whitespace at EOL. Not implemented Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent. Not implemented Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none. Not implemented Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other. Not implemented ifndef::git-format-patch[] Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences. Not implemented Disable all output of the program. Implies `--exit-code`. endif::git-format-patch[] Not implemented Allow an external diff helper to be executed. If you set an external diff driver with linkgit:gitattributes[5], you need to use this option with linkgit:git-log[1] and friends. Not implemented Disallow external diff drivers. Not implemented Ignore changes to submodules in the diff generation. Not implemented Show the given source prefix instead of "a/". Not implemented Show the given destination prefix instead of "b/". Not implemented Do not show any source or destination prefix. Not implemented Print out objects that exist but that aren't readable from any of the reference nodes. Not implemented Report root nodes. Not implemented Report tags. Not implemented Consider any object recorded in the index also as a head node for an unreachability trace. Not implemented Do not consider commits that are referenced only by an entry in a reflog to be reachable. This option is meant only to search for commits that used to be in a ref, but now aren't, but are still in that corresponding reflog. Not implemented Check not just objects in GIT_OBJECT_DIRECTORY ($GIT_DIR/objects), but also the ones found in alternate object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES or $GIT_DIR/objects/info/alternates, and in packed git archives found in $GIT_DIR/objects/pack and corresponding pack subdirectories in alternate object pools. This is now default; you can turn it off with --no-full. Not implemented Enable more strict checking, namely to catch a file mode recorded with g+w bit set, which was created by older versions of git. Existing repositories, including the Linux kernel, git itself, and sparse repository have old objects that triggers this check, but it is recommended to check new projects with this flag. Not implemented Be chatty. Not implemented Write dangling objects into .git/lost-found/commit/ or .git/lost-found/other/, depending on type. If the object is a blob, the contents are written into the file, rather than its object name. Not implemented Usually 'git-gc' runs very quickly while providing good disk space utilization and performance. This option will cause 'git-gc' to more aggressively optimize the repository at the expense of taking much more time. The effects of this optimization are persistent, so this option only needs to be used occasionally; every few hundred changesets or so. Not implemented With this option, 'git-gc' checks whether any housekeeping is required; if not, it exits without performing any work. Some git commands run `git gc --auto` after performing operations that could create many loose objects. + Housekeeping is required if there are too many loose objects or too many packs in the repository. If the number of loose objects exceeds the value of the `gc.auto` configuration variable, then all loose objects are combined into a single pack using 'git-repack -d -l'. Setting the value of `gc.auto` to 0 disables automatic packing of loose objects. + If the number of packs exceeds the value of `gc.autopacklimit`, then existing packs (except those marked with a `.keep` file) are consolidated into a single pack by using the `-A` option of 'git-repack'. Setting `gc.autopacklimit` to 0 disables automatic consolidation of packs. Not implemented Prune loose objects older than date (default is 2 weeks ago, overridable by the config variable `gc.pruneExpire`). This option is on by default. Not implemented Do not prune any loose objects. Not implemented Suppress all progress reports. Not implemented Instead of searching in the working tree files, check the blobs registered in the index file. Not implemented Process binary files as if they were text. Not implemented Ignore case differences between the patterns and the files. Not implemented Don't match the pattern in binary files. Not implemented For each pathspec given on command line, descend at most <depth> levels of directories. A negative value means no limit. Not implemented Match the pattern only at word boundary (either begin at the beginning of a line, or preceded by a non-word character; end at the end of a line or followed by a non-word character). Not implemented Select non-matching lines. Not implemented By default, the command shows the filename for each match. `-h` option is used to suppress this output. `-H` is there for completeness and does not do anything except it overrides `-h` given earlier on the command line. Not implemented When run from a subdirectory, the command usually outputs paths relative to the current directory. This option forces paths to be output relative to the project top directory. Not implemented Use POSIX extended/basic regexp for patterns. Default is to use basic regexp. Not implemented Use POSIX extended/basic regexp for patterns. Default is to use basic regexp. Not implemented Use fixed strings for patterns (don't interpret pattern as a regex). Not implemented Prefix the line number to matching lines. Not implemented Instead of showing every matched line, show only the names of files that contain (or do not contain) matches. For better compatibility with 'git-diff', --name-only is a synonym for --files-with-matches. Not implemented Instead of showing every matched line, show only the names of files that contain (or do not contain) matches. For better compatibility with 'git-diff', --name-only is a synonym for --files-with-matches. Not implemented Instead of showing every matched line, show only the names of files that contain (or do not contain) matches. For better compatibility with 'git-diff', --name-only is a synonym for --files-with-matches. Not implemented Output \0 instead of the character that normally follows a file name. Not implemented Instead of showing every matched line, show the number of lines that match. Not implemented Show colored matches. Not implemented Turn off match highlighting, even when the configuration file gives the default to color output. Not implemented Show `context` trailing (`A` -- after), or leading (`B` -- before), or both (`C` -- context) lines, and place a line containing `--` between contiguous groups of matches. Not implemented Show `context` trailing (`A` -- after), or leading (`B` -- before), or both (`C` -- context) lines, and place a line containing `--` between contiguous groups of matches. Not implemented Show `context` trailing (`A` -- after), or leading (`B` -- before), or both (`C` -- context) lines, and place a line containing `--` between contiguous groups of matches. Not implemented Show the preceding line that contains the function name of the match, unless the matching line is a function name itself. The name is determined in the same way as 'git diff' works out patch hunk headers (see 'Defining a custom hunk-header' in linkgit:gitattributes[5]). Not implemented Read patterns from <file>, one per line. Not implemented The next parameter is the pattern. This option has to be used for patterns starting with - and should be used in scripts passing user input to grep. Multiple patterns are combined by 'or'. Not implemented ( ... ):: Specify how multiple patterns are combined using Boolean expressions. `--or` is the default operator. `--and` has higher precedence than `--or`. `-e` has to be used for all patterns. Not implemented ( ... ):: Specify how multiple patterns are combined using Boolean expressions. `--or` is the default operator. `--and` has higher precedence than `--or`. `-e` has to be used for all patterns. Not implemented ( ... ):: Specify how multiple patterns are combined using Boolean expressions. `--or` is the default operator. `--and` has higher precedence than `--or`. `-e` has to be used for all patterns. Not implemented When giving multiple pattern expressions combined with `--or`, this flag is specified to limit the match to files that have lines to match all of them. Not implemented Specify the type (default: "blob"). Not implemented Actually write the object into the object database. Not implemented Read the object from standard input instead of from a file. Not implemented Read file names from stdin instead of from the command-line. Not implemented Hash object as it were located at the given path. The location of file does not directly influence on the hash value, but path is used to determine what git filters should be applied to the object before it can be placed to the object database, and, as result of applying filters, the actual blob put into the object database may differ from the given file. This option is mainly useful for hashing temporary files located outside of the working directory or files read from stdin. Not implemented Hash the contents as is, ignoring any input filter that would have been chosen by the attributes mechanism, including crlf conversion. If the file is read from standard input then this is always implied, unless the --path option is given. Not implemented Be verbose about what is going on, including progress status. Not implemented Write the generated pack index into the specified file. Without this option the name of pack index file is constructed from the name of packed archive file by replacing .pack with .idx (and the program fails if the name of packed archive does not end with .pack). Not implemented When this flag is provided, the pack is read from stdin instead and a copy is then written to <pack-file>. If <pack-file> is not specified, the pack is written to objects/pack/ directory of the current git repository with a default name determined from the pack content. If <pack-file> is not specified consider using --keep to prevent a race condition between this process and 'git-repack'. Not implemented It is possible for 'git-pack-objects' to build "thin" pack, which records objects in deltified form based on objects not included in the pack to reduce network traffic. Those objects are expected to be present on the receiving end and they must be included in the pack for that pack to be self contained and indexable. Without this option any attempt to index a thin pack will fail. This option only makes sense in conjunction with --stdin. Not implemented Before moving the index into its final destination create an empty .keep file for the associated pack file. This option is usually necessary with --stdin to prevent a simultaneous 'git-repack' process from deleting the newly constructed pack and index before refs can be updated to use objects contained in the pack. Not implemented Like --keep create a .keep file before moving the index into its final destination, but rather than creating an empty file place 'why' followed by an LF into the .keep file. The 'why' message can later be searched for within all .keep files to locate any which have outlived their usefulness. Not implemented This is intended to be used by the test suite only. It allows to force the version for the generated pack index, and to force 64-bit index entries on objects located above the given offset. Not implemented Die, if the pack contains broken objects or links. git-init - Create an empty git repository or reinitialize an existing one Execute the command. Get the directory where the Init command will initialize the repository. if GitDirectory is null ActualDirectory is used to initialize the repository. Only print error and warning messages, all other output will be suppressed. Is True by default. Create a bare repository. If GIT_DIR environment is not set, it is set to the current working directory. Is False by default. NOT IMPLEMENTED! Provide the directory from which templates will be used. The default template directory is /usr/share/git-core/templates. When specified, is used as the source of the template files rather than the default. The template files include some directory structure, some suggested "exclude patterns", and copies of non-executing "hook" files. The suggested patterns and hook files are all modifiable and extensible. NOT IMPLEMENTED! Specify that the git repository is to be shared amongst several users. This allows users belonging to the same group to push into that repository. When specified, the config variable "core.sharedRepository" is set so that files and directories under $GIT_DIR are created with the requested permissions. When not specified, git will use permissions reported by umask(2). The option can have the following values, defaulting to group if no value is given: * umask (or false): Use permissions reported by umask(2). The default, when --shared is not specified. * group (or true): Make the repository group-writable, (and g+sx, since the git group may be not the primary group of all users). This is used to loosen the permissions of an otherwise safe umask(2) value. Note that the umask still applies to the other permission bits (e.g. if umask is 0022, using group will not remove read privileges from other (non-group) users). See 0xxx for how to exactly specify the repository permissions. * all (or world or everybody): Same as group, but make the repository readable by all users. * 0xxx: 0xxx is an octal number and each file will have mode 0xxx. 0xxx will override users' umask(2) value (and not only loosen permissions as group and all does). 0640 will create a repository which is group-readable, but not group-writable or accessible to others. 0660 will create a repo that is readable and writable to the current user and group, but inaccessible to others. By default, the configuration flag receive.denyNonFastForwards is enabled in shared repositories, so that you cannot force a non fast-forwarding push into it. Not implemented Limits the number of commits to show. Not implemented Print out the ref names of any commits that are shown. If 'short' is specified, the ref name prefixes 'refs/heads/', 'refs/tags/' and 'refs/remotes/' will not be printed. If 'full' is specified, the full ref name (including prefix) will be printed. The default option is 'short'. Not implemented Print out the ref name given on the command line by which each commit was reached. Not implemented Without this flag, "git log -p <path>..." shows commits that touch the specified paths, and diffs about the same specified paths. With this, the full diff is shown for commits that touch the specified paths; this means that "<path>..." limits only commits, and doesn't limit diff for those commits. Not implemented Continue listing the history of a file beyond renames. Not implemented Before the log message print out its size in bytes. Intended mainly for porcelain tools consumption. If git is unable to produce a valid value size is set to zero. Note that only message is considered, if also a diff is shown its size is not included. Not implemented ifdef::git-format-patch[] Generate plain patches without any diffstats. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate patch (see section on generating patches). {git-diff? This is the default.} endif::git-format-patch[] Not implemented Generate diffs with <n> lines of context instead of the usual three. ifndef::git-format-patch[] Implies `-p`. endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Generate the raw format. {git-diff-core? This is the default.} endif::git-format-patch[] Not implemented ifndef::git-format-patch[] Synonym for `-p --raw`. endif::git-format-patch[] Not implemented Generate a diff using the "patience diff" algorithm. Not implemented Generate a diffstat. You can override the default output width for 80-column terminal by `--stat=width`. The width of the filename part can be controlled by giving another width to it separated by a comma. Not implemented Similar to `\--stat`, but shows number of added and deleted lines in decimal notation and pathname without abbreviation, to make it more machine friendly. For binary files, outputs two `-` instead of saying `0 0`. Not implemented Output only the last line of the `--stat` format containing total number of modified files, as well as number of added and deleted lines. Not implemented Output the distribution of relative amount of changes (number of lines added or removed) for each sub-directory. Directories with changes below a cut-off percent (3% by default) are not shown. The cut-off percent can be set with `--dirstat=limit`. Changes in a child directory is not counted for the parent directory, unless `--cumulative` is used. Not implemented Same as `--dirstat`, but counts changed files instead of lines. Not implemented Output a condensed summary of extended header information such as creations, renames and mode changes. Not implemented ifndef::git-format-patch[] Synonym for `-p --stat`. endif::git-format-patch[] Not implemented ifdef::git-log[] Separate the commits with NULs instead of with new newlines. + Also, when `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] ifndef::git-log[] When `--raw` or `--numstat` has been given, do not munge pathnames and use NULs as output field terminators. endif::git-log[] + Without this option, each pathname output will have TAB, LF, double quotes, and backslash characters replaced with `\t`, `\n`, `\"`, and `\\`, respectively, and the pathname will be enclosed in double quotes if any of those replacements occurred. Not implemented Show only names of changed files. Not implemented Show only names and status of changed files. See the description of the `--diff-filter` option on what the status letters mean. Not implemented Chose the output format for submodule differences. <format> can be one of 'short' and 'log'. 'short' just shows pairs of commit names, this format is used when this option is not given. 'log' is the default value for this option and lists the commits in that commit range like the 'summary' option of linkgit:git-submodule[1] does. Not implemented Show colored diff. Not implemented Turn off colored diff, even when the configuration file gives the default to color output. Not implemented Show colored word diff, i.e., color words which have changed. By default, words are separated by whitespace. + When a <regex> is specified, every non-overlapping match of the considered whitespace and ignored(!) for the purposes of finding differences. You may want to append `|[^[:space:]]` to your regular expression to make sure that it matches all non-whitespace characters. A match that contains a newline is silently truncated(!) at the newline. + The regex can also be set via a diff driver or configuration option, see linkgit:gitattributes[1] or linkgit:git-config[1]. Giving it explicitly overrides any diff driver or configuration setting. Diff drivers override configuration settings. endif::git-format-patch[] Not implemented Turn off rename detection, even when the configuration file gives the default to do so. Not implemented ifndef::git-format-patch[] Warn if changes introduce trailing whitespace or an indent that uses a space before a tab. Exits with non-zero status if problems are found. Not compatible with --exit-code. endif::git-format-patch[] Not implemented Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output. Not implemented In addition to `--full-index`, output a binary diff that can be applied with `git-apply`. Not implemented Instead of showing the full 40-byte hexadecimal object name in diff-raw format output and diff-tree header lines, show only a partial prefix. This is independent of the `--full-index` option above, which controls the diff-patch output format. Non default number of digits can be specified with `--abbrev=<n>`. Not implemented Break complete rewrite changes into pairs of delete and create. Not implemented Detect renames. Not implemented Detect copies as well as renames. See also `--find-copies-harder`. Not implemented ifndef::git-format-patch[] Select only files that are Added (`A`), Copied (`C`), Deleted (`D`), Modified (`M`), Renamed (`R`), have their type (i.e. regular file, symlink, submodule, ...) changed (`T`), are Unmerged (`U`), are Unknown (`X`), or have had their pairing Broken (`B`). Any combination of the filter characters may be used. When `*` (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in the comparison; if there is no file that matches other criteria, nothing is selected. endif::git-format-patch[] Not implemented For performance reasons, by default, `-C` option finds copies only if the original file of the copy was modified in the same changeset. This flag makes the command inspect unmodified files as candidates for the source of copy. This is a very expensive operation for large projects, so use it with caution. Giving more than one `-C` option has the same effect. Not implemented The `-M` and `-C` options require O(n^2) processing time where n is the number of potential rename/copy targets. This option prevents rename/copy detection from running if the number of rename/copy targets exceeds the specified number. Not implemented ifndef::git-format-patch[] Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the 'pickaxe' entry in linkgit:gitdiffcore[7] for more details. Not implemented When `-S` finds a change, show all the changes in that changeset, not just the files that contain the change in <string>. Not implemented Make the <string> not a plain string but an extended POSIX regex to match. endif::git-format-patch[] Not implemented Output the patch in the order specified in the <orderfile>, which has one shell glob pattern per line. Not implemented ifndef::git-format-patch[] Swap two inputs; that is, show differences from index or on-disk file to tree contents. Not implemented When run from a subdirectory of the project, it can be told to exclude changes outside the directory and show pathnames relative to it with this option. When you are not in a subdirectory (e.g. in a bare repository), you can name which subdirectory to make the output relative to by giving a <path> as an argument. endif::git-format-patch[] Not implemented Treat all files as text. Not implemented Ignore changes in whitespace at EOL. Not implemented Ignore changes in amount of whitespace. This ignores whitespace at line end, and considers all other sequences of one or more whitespace characters to be equivalent. Not implemented Ignore whitespace when comparing lines. This ignores differences even if one line has whitespace where the other line has none. Not implemented Show the context between diff hunks, up to the specified number of lines, thereby fusing hunks that are close to each other. Not implemented ifndef::git-format-patch[] Make the program exit with codes similar to diff(1). That is, it exits with 1 if there were differences and 0 means no differences. Not implemented Disable all output of the program. Implies `--exit-code`. endif::git-format-patch[] Not implemented Allow an external diff helper to be executed. If you set an external diff driver with linkgit:gitattributes[5], you need to use this option with linkgit:git-log[1] and friends. Not implemented Disallow external diff drivers. Not implemented Ignore changes to submodules in the diff generation. Not implemented Show the given source prefix instead of "a/". Not implemented Show the given destination prefix instead of "b/". Not implemented Do not show any source or destination prefix. Not implemented Show cached files in the output (default) Not implemented Show deleted files in the output Not implemented Show modified files in the output Not implemented Show other (i.e. untracked) files in the output Not implemented Show only ignored files in the output. When showing files in the index, print only those matched by an exclude pattern. When showing "other" files, show only those matched by an exclude pattern. Not implemented Show staged contents' object name, mode bits and stage number in the output. Not implemented If a whole directory is classified as "other", show just its name (with a trailing slash) and not its whole contents. Not implemented Do not list empty directories. Has no effect without --directory. Not implemented Show unmerged files in the output (forces --stage) Not implemented Show files on the filesystem that need to be removed due to file/directory conflicts for checkout-index to succeed. Not implemented \0 line termination on output. Not implemented Skips files matching pattern. Note that pattern is a shell wildcard pattern. Not implemented exclude patterns are read from <file>; 1 per line. Not implemented read additional exclude patterns that apply only to the directory and its subdirectories in <file>. Not implemented Add the standard git exclusions: .git/info/exclude, .gitignore in each directory, and the user's global exclusion file. Not implemented If any <file> does not appear in the index, treat this as an error (return 1). Not implemented When using --error-unmatch to expand the user supplied <file> (i.e. path pattern) arguments to paths, pretend that paths which were removed in the index since the named <tree-ish> are still present. Using this option with `-s` or `-u` options does not make any sense. Not implemented Identify the file status with the following tags (followed by a space) at the start of each line: H::cached M::unmerged R::removed/deleted C::modified/changed K::to be killed ?::other Not implemented Similar to `-t`, but use lowercase letters for files that are marked as 'assume unchanged' (see linkgit:git-update-index[1]). Not implemented When run from a subdirectory, the command usually outputs paths relative to the current directory. This option forces paths to be output relative to the project top directory. Not implemented Instead of showing the full 40-byte hexadecimal object lines, show only a partial prefix. Non default number of digits can be specified with --abbrev=<n>. Not implemented Limit to only refs/heads and refs/tags, respectively. These options are _not_ mutually exclusive; when given both, references stored in refs/heads and refs/tags are displayed. Not implemented Limit to only refs/heads and refs/tags, respectively. These options are _not_ mutually exclusive; when given both, references stored in refs/heads and refs/tags are displayed. Not implemented Specify the full path of 'git-upload-pack' on the remote host. This allows listing references from repositories accessed via SSH and where the SSH daemon does not use the PATH configured by the user. Not implemented Show only the named tree entry itself, not its children. Not implemented Recurse into sub-trees. Not implemented Show tree entries even when going to recurse them. Has no effect if '-r' was not passed. '-d' implies '-t'. Not implemented Show object size of blob (file) entries. Not implemented \0 line termination on output. Not implemented List only filenames (instead of the "long" output), one per line. Not implemented List only filenames (instead of the "long" output), one per line. Not implemented Instead of showing the full 40-byte hexadecimal object lines, show only a partial prefix. Non default number of digits can be specified with --abbrev=<n>. Not implemented Instead of showing the path names relative to the current working directory, show the full path names. Not implemented Do not limit the listing to the current working directory. Implies --full-name. Not implemented Usually the program 'cleans up' the Subject: header line to extract the title line for the commit log message, among which (1) remove 'Re:' or 're:', (2) leading whitespaces, (3) '[' up to ']', typically '[PATCH]', and then prepends "[PATCH] ". This flag forbids this munging, and is most useful when used to read back 'git-format-patch -k' output. Not implemented When -k is not in effect, all leading strings bracketed with '[' and ']' pairs are stripped. This option limits the stripping to only the pairs whose bracketed string contains the word "PATCH". Not implemented The commit log message, author name and author email are taken from the e-mail, and after minimally decoding MIME transfer encoding, re-coded in UTF-8 by transliterating them. This used to be optional but now it is the default. + Note that the patch is always used as-is without charset conversion, even with this flag. Not implemented Similar to -u but if the local convention is different from what is specified by i18n.commitencoding, this flag can be used to override it. Not implemented Disable all charset re-coding of the metadata. Not implemented Remove everything in body before a scissors line. A line that mainly consists of scissors (either ">8" or "8<") and perforation (dash "-") marks is called a scissors line, and is used to request the reader to cut the message at that line. If such a line appears in the body of the message before the patch, everything before it (including the scissors line itself) is ignored when this option is used. + This is useful if you want to begin your message in a discussion thread with comments and suggestions on the message you are responding to, and to conclude it with a patch submission, separating the discussion and the beginning of the proposed commit log message with a scissors line. + This can enabled by default with the configuration option mailinfo.scissors. Not implemented Ignore scissors lines. Useful for overriding mailinfo.scissors settings. Not implemented Directory in which to place the individual messages. Not implemented If any file doesn't begin with a From line, assume it is a single mail message instead of signaling error. Not implemented Instead of the default 4 digits with leading zeros, different precision can be specified for the generated filenames. Not implemented Skip the first <nn> numbers, for example if -f3 is specified, start the numbering with 0004. Not implemented Output all merge bases for the commits, instead of just one. Commit message of the merge. If left empty or null a good default message will be provided by the merge command. The branches to merge. This automatically sets the Commits property. The commits to merge, set this only if you can not specify the branches. With NoCommit=true MergeCommand performs the merge but pretends the merge failed and does not autocommit, to give the user a chance to inspect and further tweak the merge result before committing. By default MergeCommand performs the merge and committs the result (the default value is false). When true Generate a merge commit even if the merge resolved as a fast-forward. MergeCommand by default does not generate a merge commit if the merge resolved as a fast-forward, only updates the branch pointer (the default value is false). True if the merge was sucessful. In case of conflicts or the strategy not being able to conduct the merge this is false. Result object of the merge command. If MergeOptions.NoCommit == true this is null. Resulting tree. This property is especially useful when merging with option NoCommit == true. Not implemented This option may be given up to three times, and specifies labels to be used in place of the corresponding file names in conflict reports. That is, `git merge-file -L x -L y -L z a b c` generates output that looks like it came from files x, y and z instead of from files a, b and c. Not implemented Send results to standard output instead of overwriting `<current-file>`. Not implemented Quiet; do not warn about conflicts. Not implemented Run merge against all files in the index that need merging. Not implemented Instead of stopping at the first failed merge, do all of them in one shot - continue with merging even when previous merges returned errors, and only return the error code after all the merges. Not implemented Do not complain about a failed merge program (a merge program failure usually indicates conflicts during the merge). This is for porcelains which might want to emit custom messages. Not implemented Use the merge resolution program specified by <tool>. Valid merge tools are: kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, tortoisemerge, opendiff, p4merge and araxis. + If a merge resolution program is not specified, 'git-mergetool' will use the configuration variable `merge.tool`. If the configuration variable `merge.tool` is not set, 'git-mergetool' will pick a suitable default. + You can explicitly provide a full path to the tool by setting the configuration variable `mergetool.<tool>.path`. For example, you can configure the absolute path to kdiff3 by setting `mergetool.kdiff3.path`. Otherwise, 'git-mergetool' assumes the tool is available in PATH. + Instead of running one of the known merge tool programs, 'git-mergetool' can be customized to run an alternative program by specifying the command line to invoke in a configuration variable `mergetool.<tool>.cmd`. + When 'git-mergetool' is invoked with this tool (either through the `-t` or `--tool` option or the `merge.tool` configuration variable) the configured command line will be invoked with `$BASE` set to the name of a temporary file containing the common base for the merge, if available; `$LOCAL` set to the name of a temporary file containing the contents of the file on the current branch; `$REMOTE` set to the name of a temporary file containing the contents of the file to be merged, and `$MERGED` set to the name of the file to which the merge tool should write the result of the merge resolution. + If the custom merge tool correctly indicates the success of a merge resolution with its exit code, then the configuration variable `mergetool.<tool>.trustExitCode` can be set to `true`. Otherwise, 'git-mergetool' will prompt the user to indicate the success of the resolution after the custom tool has exited. Not implemented Don't prompt before each invocation of the merge resolution program. Not implemented Prompt before each invocation of the merge resolution program. This is the default behaviour; the option is provided to override any configuration settings. Not implemented Read the NUL-terminated `ls-tree -z` output instead. Not implemented Allow missing objects. The default behaviour (without this option) is to verify that each tree entry's sha1 identifies an existing object. This option has no effect on the treatment of gitlink entries (aka "submodules") which are always allowed to be missing. Not implemented Allow building of more than one tree object before exiting. Each tree is separated by as single blank line. The final new-line is optional. Note - if the '-z' option is used, lines are terminated with NUL. Not implemented Force renaming or moving of a file even if the target exists Skip move or rename actions which would lead to an error condition. An error happens when a source is neither existing nor controlled by GIT, or when it would overwrite an existing file unless '-f' is given. Do nothing; only show what would happen Not implemented Force renaming or moving of a file even if the target exists Skip move or rename actions which would lead to an error condition. An error happens when a source is neither existing nor controlled by GIT, or when it would overwrite an existing file unless '-f' is given. Do nothing; only show what would happen Not implemented Force renaming or moving of a file even if the target exists Skip move or rename actions which would lead to an error condition. An error happens when a source is neither existing nor controlled by GIT, or when it would overwrite an existing file unless '-f' is given. Do nothing; only show what would happen Not implemented Do not use branch names, but only tags to name the commits Not implemented Only use refs whose names match a given shell pattern. Not implemented List all commits reachable from all refs Not implemented Read from stdin, append "(<rev_name>)" to all sha1's of nameable commits, and pass to stdout Not implemented Instead of printing both the SHA-1 and the name, print only the name. If given with --tags the usual tag prefix of "tags/" is also omitted from the name, matching the output of `git-describe` more closely. Not implemented Die with error code != 0 when a reference is undefined, instead of printing `undefined`. Not implemented Show uniquely abbreviated commit object as fallback. Not implemented Use the given note message (instead of prompting). If multiple `-m` (or `-F`) options are given, their values are concatenated as separate paragraphs. Not implemented Take the note message from the given file. Use '-' to read the note message from the standard input. If multiple `-F` (or `-m`) options are given, their values are concatenated as separate paragraphs. Not implemented Write the pack contents (what would have been written to .pack file) out to the standard output. Not implemented Read the revision arguments from the standard input, instead of individual object names. The revision arguments are processed the same way as 'git-rev-list' with the `--objects` flag uses its `commit` arguments to build the list of objects it outputs. The objects on the resulting list are packed. Not implemented This implies `--revs`. When processing the list of revision arguments read from the standard input, limit the objects packed to those that are not already packed. Not implemented This implies `--revs`. In addition to the list of revision arguments read from the standard input, pretend as if all refs under `$GIT_DIR/refs` are specified to be included. Not implemented Include unasked-for annotated tags if the object they reference was included in the resulting packfile. This can be useful to send new tags to native git clients. Not implemented These two options affect how the objects contained in the pack are stored using delta compression. The objects are first internally sorted by type, size and optionally names and compared against the other objects within --window to see if using delta compression saves space. --depth limits the maximum delta depth; making it too deep affects the performance on the unpacker side, because delta data needs to be applied that many times to get to the necessary object. The default value for --window is 10 and --depth is 50. Not implemented These two options affect how the objects contained in the pack are stored using delta compression. The objects are first internally sorted by type, size and optionally names and compared against the other objects within --window to see if using delta compression saves space. --depth limits the maximum delta depth; making it too deep affects the performance on the unpacker side, because delta data needs to be applied that many times to get to the necessary object. The default value for --window is 10 and --depth is 50. Not implemented This option provides an additional limit on top of `--window`; the window size will dynamically scale down so as to not take up more than N bytes in memory. This is useful in repositories with a mix of large and small objects to not run out of memory with a large window, but still be able to take advantage of the large window for the smaller objects. The size can be suffixed with "k", "m", or "g". `--window-memory=0` makes memory usage unlimited, which is the default. Not implemented Maximum size of each output packfile, expressed in MiB. If specified, multiple packfiles may be created. The default is unlimited, unless the config variable `pack.packSizeLimit` is set. Not implemented This flag causes an object already in a local pack that has a .keep file to be ignored, even if it appears in the standard input. Not implemented This flag causes an object already in a pack ignored even if it appears in the standard input. Not implemented This flag is similar to `--incremental`; instead of ignoring all packed objects, it only ignores objects that are packed and/or not in the local object store (i.e. borrowed from an alternate). Not implemented Only create a packed archive if it would contain at least one object. Not implemented Progress status is reported on the standard error stream by default when it is attached to a terminal, unless -q is specified. This flag forces progress status even if the standard error stream is not directed to a terminal. Not implemented When --stdout is specified then progress report is displayed during the object count and compression phases but inhibited during the write-out phase. The reason is that in some cases the output stream is directly linked to another command which may wish to display progress status of its own as it processes incoming pack data. This flag is like --progress except that it forces progress report for the write-out phase as well even if --stdout is used. Not implemented This is used to imply --all-progress whenever progress display is activated. Unlike --all-progress this flag doesn't actually force any progress display by itself. Not implemented This flag makes the command not to report its progress on the standard error stream. Not implemented When creating a packed archive in a repository that has existing packs, the command reuses existing deltas. This sometimes results in a slightly suboptimal pack. This flag tells the command not to reuse existing deltas but compute them from scratch. Not implemented This flag tells the command not to reuse existing object data at all, including non deltified object, forcing recompression of everything. This implies --no-reuse-delta. Useful only in the obscure case where wholesale enforcement of a different compression level on the packed data is desired. Not implemented Specifies compression level for newly-compressed data in the generated pack. If not specified, pack compression level is determined first by pack.compression, then by core.compression, and defaults to -1, the zlib default, if neither is set. Add --no-reuse-object if you want to force a uniform compression level on all data no matter the source. Not implemented A packed archive can express base object of a delta as either 20-byte object name or as an offset in the stream, but older version of git does not understand the latter. By default, 'git-pack-objects' only uses the former format for better compatibility. This option allows the command to use the latter format for compactness. Depending on the average delta chain length, this option typically shrinks the resulting packfile by 3-5 per-cent. Not implemented Specifies the number of threads to spawn when searching for best delta matches. This requires that pack-objects be compiled with pthreads otherwise this option is ignored with a warning. This is meant to reduce packing time on multiprocessor machines. The required amount of memory for the delta search window is however multiplied by the number of threads. Specifying 0 will cause git to auto-detect the number of CPU's and set the number of threads accordingly. Not implemented This is intended to be used by the test suite only. It allows to force the version for the generated pack index, and to force 64-bit index entries on objects located above the given offset. Not implemented With this option, parents that are hidden by grafts are packed nevertheless. Not implemented Processes all packs. Any filenames on the command line are ignored. Not implemented Don't require objects present in packs from alternate object directories to be present in local packs. Not implemented Outputs some statistics to stderr. Has a small performance penalty. Not implemented Not implemented Not implemented Use this to specify the path to 'git-upload-pack' on the remote side, if it is not found on your $PATH. Some installations of sshd ignores the user's environment setup scripts for login shells (e.g. .bash_profile) and your privately installed git may not be found on the system default $PATH. Another workaround suggested is to set up your $PATH in ".bashrc", but this flag is for people who do not want to pay the overhead for non-interactive shells, but prefer having a lean .bashrc file (they set most of the things up in .bash_profile). Not implemented Do not remove anything; just report what it would remove. Not implemented Report all removed objects. Not implemented Only expire loose objects older than <time>. Not implemented Don't actually remove any objects, only show those that would have been removed. Not implemented Squelch the progress indicator. Not implemented Walk through the patches in the series and warn if we cannot find all of the necessary information to commit a patch. At the time of this writing only missing author information is warned about. Not implemented The author name and email address to use when no author information can be found in the patch description. Not implemented The directory to find the quilt patches and the quilt series file. + The default for the patch directory is patches or the value of the $QUILT_PATCHES environment variable. Not implemented 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. Not implemented Same as -m, except that unmerged entries are discarded instead of failing. Not implemented After a successful merge, update the files in the work tree with the result of the merge. Not implemented Usually a merge requires the index file as well as the files in the working tree are up to date with the current head commit, in order not to lose local changes. This flag disables the check with the working tree and is meant to be used when creating a merge of trees that are not directly related to the current working tree status into a temporary index file. Not implemented Show the progress of checking files out. Not implemented 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. Not implemented 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 command to resolve a few more cases internally: + * when one side removes a path and the other side leaves the path unmodified. The resolution is to remove that path. * when both sides remove a path. The resolution is to remove that path. * when both sides adds a path identically. The resolution is to add that path. Not implemented Keep the current index contents, and read the contents of named tree-ish under directory at `<prefix>`. The original index file cannot have anything at the path `<prefix>` itself, and have nothing in `<prefix>/` directory. Note that the `<prefix>/` value must end with a slash. Not implemented When running the command with `-u` and `-m` options, the merge result may need to overwrite paths that are not tracked in the current branch. The command usually refuses to proceed with the merge to avoid losing such a path. However this safety valve sometimes gets in the way. For example, it often happens that the other branch added a file that used to be a generated file in your branch, and the safety valve triggers when you try to switch to that branch after you ran `make` but before running `make clean` to remove the generated file. This option tells the command to read per-directory exclude file (usually '.gitignore') and allows such an untracked but explicitly ignored file to be overwritten. Not implemented Instead of writing the results out to `$GIT_INDEX_FILE`, write the resulting index in the named file. While the command is operating, the original index file is locked with the same mechanism as usual. The file must allow to be rename(2)ed into from a temporary file that is created next to the usual index file; typically this means it needs to be on the same filesystem as the index file itself, and you need write permission to the directories the index file and index output file are located in. Not implemented Restart the rebasing process after having resolved a merge conflict. Not implemented Restore the original branch and abort the rebase operation. Not implemented Restart the rebasing process by skipping the current patch. Not implemented Use merging strategies to rebase. When the recursive (default) merge strategy is used, this allows rebase to be aware of renames on the upstream side. + Note that a rebase merge works by replaying each commit from the working branch on top of the <upstream> branch. Because of this, when a merge conflict happens, the side reported as 'ours' is the so-far rebased series, starting with <upstream>, and 'theirs' is the working branch. In other words, the sides are swapped. Not implemented Use the given merge strategy. If there is no `-s` option 'git-merge-recursive' is used instead. This implies --merge. + Because 'git-rebase' replays each commit from the working branch on top of the <upstream> branch using the given strategy, using the 'ours' strategy simply discards all patches from the <branch>, which makes little sense. Not implemented Be quiet. Implies --no-stat. Not implemented Be verbose. Implies --stat. Not implemented Show a diffstat of what changed upstream since the last rebase. The diffstat is also controlled by the configuration option rebase.stat. Not implemented Do not show a diffstat as part of the rebase process. Not implemented This option bypasses the pre-rebase hook. See also linkgit:githooks[5]. Not implemented Ensure at least n lines of surrounding context match before and after each change. When fewer lines of surrounding context exist they all must match. By default no context is ever ignored. Not implemented Force the rebase even if the current branch is a descendant of the commit you are rebasing onto. Normally the command will exit with the message "Current branch is up to date" in such a situation. Not implemented These flag are passed to the 'git-apply' program (see linkgit:git-apply[1]) that applies the patch. Incompatible with the --interactive option. Not implemented These flag are passed to the 'git-apply' program (see linkgit:git-apply[1]) that applies the patch. Incompatible with the --interactive option. Not implemented These flags are passed to 'git-am' to easily change the dates of the rebased commits (see linkgit:git-am[1]). Not implemented These flags are passed to 'git-am' to easily change the dates of the rebased commits (see linkgit:git-am[1]). Not implemented Make a list of the commits which are about to be rebased. Let the user edit that list before rebasing. This mode can also be used to split commits (see SPLITTING COMMITS below). Not implemented Instead of ignoring merges, try to recreate them. Not implemented Rebase all commits reachable from <branch>, instead of limiting them with an <upstream>. This allows you to rebase the root commit(s) on a branch. Must be used with --onto, and will skip changes already contained in <newbase> (instead of <upstream>). When used together with --preserve-merges, 'all' root commits will be rewritten to have <newbase> as parent instead. Not implemented This revamps the logic -- the definition of "broken commit" becomes: a commit that is not reachable from any of the refs and there is a missing object among the commit, tree, or blob objects reachable from it that is not reachable from any of the refs. + This computation involves traversing all the reachable objects, i.e. it has the same cost as 'git-prune'. Fortunately, once this is run, we should not have to ever worry about missing objects, because the current prune and pack-objects know about reflogs and protect objects referred by them. Not implemented Entries older than this time are pruned. Without the option it is taken from configuration `gc.reflogExpire`, which in turn defaults to 90 days. Not implemented Entries older than this time and not reachable from the current tip of the branch are pruned. Without the option it is taken from configuration `gc.reflogExpireUnreachable`, which in turn defaults to 30 days. Not implemented Instead of listing <refs> explicitly, prune all refs. Not implemented Update the ref with the sha1 of the top reflog entry (i.e. <ref>@\{0\}) after expiring or deleting. Not implemented While expiring or deleting, adjust each reflog entry to ensure that the `old` sha1 field points to the `new` sha1 field of the previous entry. Not implemented Print extra information on screen. Not implemented Stops if two objects with the same hash exist but have different sizes. Default is to warn and continue. Not implemented Be a little more verbose and show remote url after name. NOTE: This must be placed between `remote` and `subcommand`. Not implemented Instead of incrementally packing the unpacked objects, pack everything referenced into a single pack. Especially useful when packing a repository that is used for private development. Use with '-d'. This will clean up the objects that `git prune` leaves behind, but `git fsck --full` shows as dangling. + Note that users fetching over dumb protocols will have to fetch the whole new pack in order to get any contained object, no matter how many other objects in that pack they already have locally. Not implemented Same as `-a`, unless '-d' is used. Then any unreachable objects in a previous pack become loose, unpacked objects, instead of being left in the old pack. Unreachable objects are never intentionally added to a pack, even when repacking. This option prevents unreachable objects from being immediately deleted by way of being left in the old pack and then removed. Instead, the loose unreachable objects will be pruned according to normal expiry rules with the next 'git-gc' invocation. See linkgit:git-gc[1]. Not implemented After packing, if the newly created packs make some existing packs redundant, remove the redundant packs. Also run 'git-prune-packed' to remove redundant loose object files. Not implemented Pass the `--local` option to 'git-pack-objects'. See linkgit:git-pack-objects[1]. Not implemented Pass the `--no-reuse-object` option to `git-pack-objects`, see linkgit:git-pack-objects[1]. Not implemented Pass the `-q` option to 'git-pack-objects'. See linkgit:git-pack-objects[1]. Not implemented Do not update the server information with 'git-update-server-info'. This option skips updating local catalog files needed to publish this repository (or a direct copy of it) over HTTP or FTP. See linkgit:git-update-server-info[1]. Not implemented These two options affect how the objects contained in the pack are stored using delta compression. The objects are first internally sorted by type, size and optionally names and compared against the other objects within `--window` to see if using delta compression saves space. `--depth` limits the maximum delta depth; making it too deep affects the performance on the unpacker side, because delta data needs to be applied that many times to get to the necessary object. The default value for --window is 10 and --depth is 50. Not implemented These two options affect how the objects contained in the pack are stored using delta compression. The objects are first internally sorted by type, size and optionally names and compared against the other objects within `--window` to see if using delta compression saves space. `--depth` limits the maximum delta depth; making it too deep affects the performance on the unpacker side, because delta data needs to be applied that many times to get to the necessary object. The default value for --window is 10 and --depth is 50. Not implemented This option provides an additional limit on top of `--window`; the window size will dynamically scale down so as to not take up more than N bytes in memory. This is useful in repositories with a mix of large and small objects to not run out of memory with a large window, but still be able to take advantage of the large window for the smaller objects. The size can be suffixed with "k", "m", or "g". `--window-memory=0` makes memory usage unlimited, which is the default. Not implemented Maximum size of each output packfile, expressed in MiB. If specified, multiple packfiles may be created. The default is unlimited. Not implemented If an existing replace ref for the same object exists, it will be overwritten (instead of failing). Not implemented Delete existing replace refs for the given objects. Not implemented List replace refs for objects that match the given pattern (or all if no pattern is given). Typing "git replace" without arguments, also lists all replace refs. Not implemented Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action. Not implemented Does not touch the index file nor the working tree at all, but requires them to be in a good order. This leaves all your changed files "Changes to be committed", as 'git-status' would put it. Not implemented Matches the working tree and index to that of the tree being switched to. Any changes to tracked files in the working tree since <commit> are lost. Not implemented Resets the index to match the tree recorded by the named commit, and updates the files that are different between the named commit and the current commit in the working tree. Not implemented Interactively select hunks in the difference between the index and <commit> (defaults to HEAD). The chosen hunks are applied in reverse to the index. + This means that `git reset -p` is the opposite of `git add -p` (see linkgit:git-add[1]). Not implemented Be quiet, only report errors. Not implemented With this option, 'git-revert' will let you edit the commit message prior to committing the revert. This is the default if you run the command from a terminal. Not implemented Usually you cannot revert a merge because you do not know which side of the merge should be considered the mainline. This option specifies the parent number (starting from 1) of the mainline and allows revert to reverse the change relative to the specified parent. + Reverting a merge commit declares that you will never want the tree changes brought in by the merge. As a result, later merges will only bring in tree changes introduced by commits that are not ancestors of the previously reverted merge. This may or may not be what you want. + See the link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for more details. Not implemented With this option, 'git-revert' will not start the commit message editor. Not implemented Usually the command automatically creates a commit with a commit log message stating which commit was reverted. This flag applies the change necessary to revert the named commit to your working tree and the index, but does not make the commit. In addition, when this option is used, your index does not have to match the HEAD commit. The revert is done against the beginning state of your index. + This is useful when reverting more than one commits' effect to your index in a row. Not implemented Add Signed-off-by line at the end of the commit message. Not implemented Use 'git-rev-parse' in option parsing mode (see PARSEOPT section below). Not implemented Only meaningful in `--parseopt` mode. Tells the option parser to echo out the first `--` met instead of skipping it. Not implemented Only meaningful in `--parseopt` mode. Lets the option parser stop at the first non-option argument. This can be used to parse sub-commands that take options themself. Not implemented Use 'git-rev-parse' in shell quoting mode (see SQ-QUOTE section below). In contrast to the `--sq` option below, this mode does only quoting. Nothing else is done to command input. Not implemented Do not output flags and parameters not meant for 'git-rev-list' command. Not implemented Do not output flags and parameters meant for 'git-rev-list' command. Not implemented Do not output non-flag parameters. Not implemented Do not output flag parameters. Not implemented If there is no parameter given by the user, use `<arg>` instead. Not implemented The parameter given must be usable as a single, valid object name. Otherwise barf and abort. Not implemented Only meaningful in `--verify` mode. Do not output an error message if the first argument is not a valid object name; instead exit with non-zero status silently. Not implemented Usually the output is made one line per flag and parameter. This option makes output a single line, properly quoted for consumption by shell. Useful when you expect your parameter to contain whitespaces and newlines (e.g. when using pickaxe `-S` with 'git-diff-\*'). In contrast to the `--sq-quote` option, the command input is still interpreted as usual. Not implemented When showing object names, prefix them with '{caret}' and strip '{caret}' prefix from the object names that already have one. Not implemented Usually the object names are output in SHA1 form (with possible '{caret}' prefix); this option makes them output in a form as close to the original input as possible. Not implemented This is similar to \--symbolic, but it omits input that are not refs (i.e. branch or tag names; or more explicitly disambiguating "heads/master" form, when you want to name the "master" branch when there is an unfortunately named tag "master"), and show them as full refnames (e.g. "refs/heads/master"). Not implemented A non-ambiguous short name of the objects name. The option core.warnAmbiguousRefs is used to select the strict abbreviation mode. Not implemented Show all refs found in `$GIT_DIR/refs`. Not implemented Show branch refs found in `$GIT_DIR/refs/heads`. Not implemented Show tag refs found in `$GIT_DIR/refs/tags`. Not implemented Show tag refs found in `$GIT_DIR/refs/remotes`. Not implemented When the command is invoked from a subdirectory, show the path of the current directory relative to the top-level directory. Not implemented When the command is invoked from a subdirectory, show the path of the top-level directory relative to the current directory (typically a sequence of "../", or an empty string). Not implemented Show `$GIT_DIR` if defined else show the path to the .git directory. Not implemented When the current working directory is below the repository directory print "true", otherwise "false". Not implemented When the current working directory is inside the work tree of the repository print "true", otherwise "false". Not implemented When the repository is bare print "true", otherwise "false". Not implemented Instead of outputting the full SHA1 values of object names try to abbreviate them to a shorter unique name. When no length is specified 7 is used. The minimum length is 4. Not implemented Parse the date string, and output the corresponding --max-age= parameter for 'git-rev-list'. Not implemented Parse the date string, and output the corresponding --max-age= parameter for 'git-rev-list'. Not implemented Parse the date string, and output the corresponding --min-age= parameter for 'git-rev-list'. Not implemented Parse the date string, and output the corresponding --min-age= parameter for 'git-rev-list'. Not implemented Override the up-to-date check. Not implemented Don't actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command. Not implemented Allow recursive removal when a leading directory name is given. Not implemented Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone. Not implemented Exit with a zero status even if no files matched. Not implemented 'git-rm' normally outputs one line (in the form of an "rm" command) for each file removed. This option suppresses that output. Not implemented Path to the 'git-receive-pack' program on the remote end. Sometimes useful when pushing to a remote repository over ssh, and you do not have the program in a directory on the default $PATH. Not implemented Same as \--receive-pack=<git-receive-pack>. Not implemented Instead of explicitly specifying which refs to update, update all heads that locally exist. Not implemented Do everything except actually send the updates. Not implemented Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it. This flag disables the check. What this means is that the remote repository can lose commits; use it with care. Not implemented Run verbosely. Not implemented Spend extra cycles to minimize the number of objects to be sent. Use it on slower connection. Not implemented Print a short usage message and exit. Not implemented Sort output according to the number of commits per author instead of author alphabetic order. Not implemented Suppress commit description and provide a commit count summary only. Not implemented Show the email address of each author. Not implemented Linewrap the output by wrapping each line at `width`. The first line of each entry is indented by `indent1` spaces, and the second and subsequent lines are indented by `indent2` spaces. `width`, `indent1`, and `indent2` default to 76, 6 and 9 respectively. Not implemented Show the remote-tracking branches. Not implemented Show both remote-tracking branches and local branches. Not implemented With this option, the command includes the current branch to the list of revs to be shown when it is not given on the command line. Not implemented By default, the branches and their commits are shown in reverse chronological order. This option makes them appear in topological order (i.e., descendant commits are shown before their parents). Not implemented This option is similar to '--topo-order' in the sense that no parent comes before all of its children, but otherwise commits are ordered according to their commit date. Not implemented By default, the output omits merges that are reachable from only one tip being shown. This option makes them visible. Not implemented Usually the command stops output upon showing the commit that is the common ancestor of all the branches. This flag tells the command to go <n> more common commits beyond that. When <n> is negative, display only the <reference>s given, without showing the commit ancestry tree. Not implemented Synonym to `--more=-1` Not implemented Instead of showing the commit list, determine possible merge bases for the specified commits. All merge bases will be contained in all specified commits. This is different from how linkgit:git-merge-base[1] handles the case of three or more commits. Not implemented Among the <reference>s given, display only the ones that cannot be reached from any other <reference>. Not implemented Do not show naming strings for each commit. Not implemented Instead of naming the commits using the path to reach them from heads (e.g. "master~2" to mean the grandparent of "master"), name them with the unique prefix of their object names. Not implemented Shows only commits that are NOT on the first branch given. This helps track topic branches by hiding any commit that is already in the main line of development. When given "git show-branch --topics master topic1 topic2", this will show the revisions given by "git rev-list {caret}master topic1 topic2" Not implemented Shows <n> most recent ref-log entries for the given ref. If <base> is given, <n> entries going back from that entry. <base> can be specified as count or date. When no explicit <ref> parameter is given, it defaults to the current branch (or `HEAD` if it is detached). Not implemented Color the status sign (one of these: `*` `!` `+` `-`) of each commit corresponding to the branch it's in. Not implemented Turn off colored output, even when the configuration file gives the default to color output. Not implemented Not implemented Not implemented Instead of showing the full 40-byte hexadecimal commit object name, show only a partial prefix. Non default number of digits can be specified with "--abbrev=<n>" (which also modifies diff output, if it is displayed). + This should make "--pretty=oneline" a whole lot more readable for people using 80-column terminals. Not implemented This is a shorthand for "--pretty=oneline --abbrev-commit" used together. Not implemented The commit objects record the encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. Not implemented Not implemented Not implemented Not implemented Not implemented Not implemented Not implemented Not implemented Not implemented Not implemented In addition to empty lines, also strip lines starting with '#'. Not implemented Only print error messages. Not implemented Branch of repository to add as submodule. Not implemented This option is only valid for status and summary commands. These commands typically use the commit found in the submodule HEAD, but with this option, the commit stored in the index is used instead. Not implemented This option is only valid for the summary command. This command compares the commit in the index with that in the submodule HEAD when this option is used. Not implemented This option is only valid for the summary command. Limit the summary size (number of commits shown in total). Giving 0 will disable the summary; a negative number means unlimited (the default). This limit only applies to modified submodules. The size is always limited to 1 for added/deleted/typechanged submodules. Not implemented This option is only valid for the update command. Don't fetch new objects from the remote site. Not implemented This option is only valid for the update command. Merge the commit recorded in the superproject into the current branch of the submodule. If this option is given, the submodule's HEAD will not be detached. If a merge failure prevents this process, you will have to resolve the resulting conflicts within the submodule with the usual conflict resolution tools. If the key `submodule.$name.update` is set to `merge`, this option is implicit. Not implemented This option is only valid for the update command. Rebase the current branch onto the commit recorded in the superproject. If this option is given, the submodule's HEAD will not be detached. If a a merge failure prevents this process, you will have to resolve these failures with linkgit:git-rebase[1]. If the key `submodule.$name.update` is set to `rebase`, this option is implicit. Not implemented This option is only valid for add and update commands. These commands sometimes need to clone a remote repository. In this case, this option will be passed to the linkgit:git-clone[1] command. + *NOTE*: Do *not* use this option unless you have read the note for linkgit:git-clone[1]'s --reference and --shared options carefully. Not implemented This option is only valid for foreach, update and status commands. Traverse submodules recursively. The operation is performed not only in the submodules of the current repo, but also in any nested submodules inside those submodules (and so on). Not implemented Only used with the 'init' command. These are passed directly to 'git init'. Not implemented Only used with the 'init' command. These are passed directly to 'git init'. Not implemented Used with the 'fetch' command. + This allows revision ranges for partial/cauterized history to be supported. $NUMBER, $NUMBER1:$NUMBER2 (numeric ranges), $NUMBER:HEAD, and BASE:$NUMBER are all supported. + This can allow you to make partial mirrors when running fetch; but is generally not recommended because history will be skipped and lost. Not implemented Only used with the 'set-tree' command. + Read a list of commits from stdin and commit them in reverse order. Only the leading sha1 is read from each line, so 'git rev-list --pretty=oneline' output can be used. Not implemented Only used with the 'dcommit', 'set-tree' and 'commit-diff' commands. + Remove directories from the SVN tree if there are no files left behind. SVN can version empty directories, and they are not removed by default if there are no files left in them. git cannot version empty directories. Enabling this flag will make the commit to SVN act like git. + [verse] config key: svn.rmdir Not implemented Only used with the 'dcommit', 'set-tree' and 'commit-diff' commands. + Edit the commit message before committing to SVN. This is off by default for objects that are commits, and forced on when committing tree objects. + [verse] config key: svn.edit Not implemented Only used with the 'dcommit', 'set-tree' and 'commit-diff' commands. + They are both passed directly to 'git diff-tree'; see linkgit:git-diff-tree[1] for more information. + [verse] config key: svn.l config key: svn.findcopiesharder Not implemented Not implemented Do not issue an error message if the <name> is not a symbolic ref but a detached HEAD; instead exit with non-zero status silently. Not implemented Update the reflog for <name> with <reason>. This is valid only when creating or updating a symbolic ref. Not implemented Make an unsigned, annotated tag object Not implemented Make a GPG-signed tag, using the default e-mail address's key Not implemented Make a GPG-signed tag, using the given key Not implemented Replace an existing tag with the given name (instead of failing) Not implemented Delete existing tags with the given names. Not implemented Verify the gpg signature of the given tag names. Not implemented <num> specifies how many lines from the annotation, if any, are printed when using -l. The default is not to print any annotation lines. If no number is given to `-n`, only the first line is printed. If the tag is not annotated, the commit message is displayed instead. Not implemented List tags with names that match the given pattern (or all if no pattern is given). Typing "git tag" without arguments, also lists all tags. Not implemented Only list tags which contain the specified commit. Not implemented Use the given tag message (instead of prompting). If multiple `-m` options are given, their values are concatenated as separate paragraphs. Implies `-a` if none of `-a`, `-s`, or `-u <key-id>` is given. Not implemented Take the tag message from the given file. Use '-' to read the message from the standard input. Implies `-a` if none of `-a`, `-s`, or `-u <key-id>` is given. Not implemented Instead of making a tar archive from local repository, retrieve a tar archive from a remote repository. Not implemented Dry run. Check the pack file without actually unpacking the objects. Not implemented The command usually shows percentage progress. This flag suppresses it. Not implemented When unpacking a corrupt packfile, the command dies at the first corruption. This flag tells it to keep going and make the best effort to recover as many objects as possible. Not implemented Don't write objects with broken content or links. Not implemented If a specified file isn't in the index already then it's added. Default behaviour is to ignore new files. Not implemented If a specified file is in the index but is missing then it's removed. Default behavior is to ignore removed file. Not implemented Looks at the current index and checks to see if merges or updates are needed by checking stat() information. Not implemented Quiet. If --refresh finds that the index needs an update, the default behavior is to error out. This option makes 'git-update-index' continue anyway. Not implemented Do not try to update submodules. This option is only respected when passed before --refresh. Not implemented If --refresh finds unmerged changes in the index, the default behavior is to error out. This option makes 'git-update-index' continue anyway. Not implemented Ignores missing files during a --refresh Not implemented Directly insert the specified info into the index. Not implemented Read index information from stdin. Not implemented Set the execute permissions on the updated files. Not implemented When these flags are specified, the object names recorded for the paths are not updated. Instead, these options set and unset the "assume unchanged" bit for the paths. When the "assume unchanged" bit is on, git stops checking the working tree files for possible modifications, so you need to manually unset the bit to tell git when you change the working tree file. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e.g. cifs). + This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked files (akin to what `.gitignore` does for untracked files). You should remember that an explicit 'git add' operation will still cause the file to be refreshed from the working tree. Git will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually. Not implemented When these flags are specified, the object names recorded for the paths are not updated. Instead, these options set and unset the "assume unchanged" bit for the paths. When the "assume unchanged" bit is on, git stops checking the working tree files for possible modifications, so you need to manually unset the bit to tell git when you change the working tree file. This is sometimes helpful when working with a big project on a filesystem that has very slow lstat(2) system call (e.g. cifs). + This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked files (akin to what `.gitignore` does for untracked files). You should remember that an explicit 'git add' operation will still cause the file to be refreshed from the working tree. Git will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually. Not implemented Like '--refresh', but checks stat information unconditionally, without regard to the "assume unchanged" setting. Not implemented Runs 'git-update-index' itself on the paths whose index entries are different from those from the `HEAD` commit. Not implemented Restores the 'unmerged' or 'needs updating' state of a file during a merge if it was cleared by accident. Not implemented Do not create objects in the object database for all <file> arguments that follow this flag; just insert their object IDs into the index. Not implemented Remove the file from the index even when the working directory still has such a file. (Implies --remove.) Not implemented By default, when a file `path` exists in the index, 'git-update-index' refuses an attempt to add `path/file`. Similarly if a file `path/file` exists, a file `path` cannot be added. With --replace flag, existing entries that conflict with the entry being added are automatically removed with warning messages. Not implemented Instead of taking list of paths from the command line, read list of paths from the standard input. Paths are separated by LF (i.e. one path per line) by default. Not implemented Report what is being added and removed from index. Not implemented Only meaningful with `--stdin`; paths are separated with NUL character instead of LF. Not implemented Update the info files from scratch. Not implemented Do not try <directory>/.git/ if <directory> is no git directory. Not implemented Interrupt transfer after <n> seconds of inactivity. Not implemented Cause the logical variables to be listed. In addition, all the variables of the git configuration file .git/config are listed as well. (However, the configuration variables listing functionality is deprecated in favor of 'git config -l'.) Not implemented After verifying the pack, show list of objects contained in the pack and a histogram of delta chain length. Not implemented Do not verify the pack contents; only show the histogram of delta chain length. With `--verbose`, list of objects is also shown. Not implemented Show textual diffs, instead of the git internal diff output format that is useful only to tell the changed paths and their nature of changes. Not implemented Limit output to <n> commits. Not implemented Show git internal diff output, but for the whole tree, not just the top level. Not implemented By default, differences for merge commits are not shown. With this flag, show differences to that commit from all of its parents. + However, it is not very useful in general, although it *is* useful on a file-by-file basis. Not implemented Not implemented Not implemented Instead of showing the full 40-byte hexadecimal commit object name, show only a partial prefix. Non default number of digits can be specified with "--abbrev=<n>" (which also modifies diff output, if it is displayed). + This should make "--pretty=oneline" a whole lot more readable for people using 80-column terminals. Not implemented This is a shorthand for "--pretty=oneline --abbrev-commit" used together. Not implemented The commit objects record the encoding used for the log message in their encoding header; this option can be used to tell the command to re-code the commit log message in the encoding preferred by the user. For non plumbing commands this defaults to UTF-8. AbstractObject is the base class for the classes Blob, Commit, Tag and Tree. It proviedes test methods to identify its specialized type (i.e. IsBlob, IsCommit, etc). AbstractObject also defines comparison operators so you can safely compare git objects by using the operators == or != which internally efficiently compare the objects hashes. Internal helper function to create the right object instance for a given hash Overriding equals to reflect that different AbstractObject instances with the same hash are in fact equal. The git object's SHA1 hash. This is the long hash, See ShortHash for the abbreviated version. The git object's abbreviated SHA1 hash. True if this object is a Blob (or Leaf which is a subclass of Blob). True if this object is a Commit. True if this object is a Tag. True if the internal object is a Tree. The repository where this git object belongs to. Represents the Author or Committer of a Commit. Creates an uninitialized Author. You may use the object initializer syntax with this constructor, i.e. new Author { Name="henon", EmailAddress="henon@gitsharp.com" } Creates an Author. Preconfigured anonymous Author, which may be used by GitSharp if no Author has been configured. Represents a specific version of the content of a file tracked by git. Using a Blob you can access the contents of any git object as string or byte array. For tracked files (leaves of a git tree) it returns the content of the file. For git objects such as Commit, Tag or Tree the Blob API may be used to inspect the the uncompressed internal representation. To open a git object instantiate a Blob with the object's Hash or another valid reference (see Ref). var b=new Blob(repo, "e287f54"); Note, that new Blob( ...) does not create a new blob in the repository but rather constructs the object to manipulate an existing blob. Advanced: To create a new Blob inside the repository you can use the static create function, however, you are advised to use higher level functionality to create new revisions of files, i.e. by using the Commit.Create API (see Commit). Create a Blob object which represents an existing blob in the git repository The repository which owns the object to load The SHA1 Hash of the object to load Create a new Blob containing the given string data as content. The string will be encoded as UTF8 string to be stored in the blob Create a new Blob containing the given string data as content. The string will be encoded by the submitted encoding string to be stored in the blob Create a new Blob containing the contents of the given file. Path to the file that should be stored in the blob Create a new Blob containing exactly the raw bytes given (before compression). Uncompressed, encoded raw data to be stored in the blob Get the uncompressed contents of this Blob as string. This assumes that the contents are encoded in UTF8. Get the uncompressed original encoded raw data of the Blob as byte array. This is useful if the contents of the blob are encoded in some legacy encoding instead of UTF8. Represents a branch in git. You can create and manipulate git branches and you can manipulate your working directory using Branch. Note, that new Branch( ...) does not create a new branch in the repository but rather constructs the object to manipulate an existing branch. To create a new branch use the static Branch.Create API. Ref is a named symbolic reference that is a pointing to a specific git object. It is not resolved until you explicitly retrieve the link target. The Target is not cached. Interface for objects like Ref and Tag, which point to a different object. Updates this ref by linking it to the given ref's target. The ref this ref shall reference. Updates this ref by forwarding it to the given object. The ref this object shall reference. Check validity of a ref name. It must not contain a character that has a special meaning in a Git object reference expression. Some other dangerous characters are also excluded. Returns true if is a valid ref name. Resolve the symbolic reference and return the object that it is currently pointing at. Target is not cached in order to match the behavior of a real git ref. Open a branch by resolving a reference (such as HEAD) Open a branch by branch name (i.e. "master" or "origin/master") Merge the given branch into this Branch using the given merge strategy. Delete this branch Not yet implemented! Check out this branch into the working directory and have HEAD point to it. Rename the Branch. Not yet implemented! Reset this Branch to the current Commit using the given ResetBehavior. for explanation of the reset behavior. Reset this Branch to the named Commit using the given ResetBehavior. for explanation of the reset behavior. Reset this Branch to the given Commit using the given ResetBehavior. Reset behavior: Mixed - Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action. Soft - Does not touch the index file nor the working tree at all, but requires them to be in a good order. This leaves all your changed files "Changes to be committed", as git status would put it. Hard - Matches the working tree and index to that of the tree being switched to. Any changes to tracked files in the working tree since the commit are lost. Merge - (NOT IMPLEMENTED) Resets the index to match the tree recorded by the named commit, and updates the files that are different between the named commit and the current commit in the working tree. Create a new branch based on HEAD. The name of the branch to create (i.e. "master", not "refs/heads/master") returns the newly created Branch object Create a new branch basing on the given commit The name of the branch to create (i.e. "master", not "refs/heads/master") The commit to base the branch on. returns the newly created Branch object Get the branch's full path name relative to the .git directory Returns the latest commit on this branch, or in other words, the commit this branch is pointing to. True if the branch is the current branch of the repository True if this Ref points to a remote branch. Represents a change of a single file between two commits. Use Commit.Diff to get a list of Change objects. The commit that serves as reference for this comparison. The change reflects the difference of the other commit against this ReferenceCommit. The commit which is compared against the ReferenceCommit. The kind of change (Added, Modified, Deleted, etc. ) The revision of the file from the ReferenceCommit. It may be null in some cases i.e. for ChangeType.Added The revision of the file from the ComparedCommit. It may be null in some cases i.e. for ChangeType.Removed The file (i.e. Blob) this Change is according to. Always returns a non-null revision of the file, no matter what kind of change. It normally returns the ComparedCommit's version of the changed object except for ChangeType.Removed where it returns the ReferenceCommit's version of the object. This property is designed to release the calling code from null checking and revision selection and may be especially useful for GUI bindings. The filepath of the ChangedObject The filename of the ChangedObject Unix file permissions of the ReferenceCommit's version of the object Unix file permissions of the ComparedCommit's version of the object Returns ReferenceCommit and ComparedCommit as array Returns ReferenceObject and ComparedObject as array Returns ReferenceObject's and ComparedObject's permissions as array Represents a revision of the files and directories tracked in the repository. Checkout this commit into the working directory. Does not change HEAD. and . Check out the given paths into the working directory. Files in the working directory will be overwritten. See also to check out paths from the index. Relative paths of the files to check out. Throws a lot of IO and Security related exceptions. Compare reference commit against compared commit. You may pass in a null commit (i.e. for getting the changes of the first commit) Compares this commit against another one and returns all changes between the two. The commit message. The encoding of the commit details. The author of the change set represented by this commit. The person who committed the change set by reusing authorship information from another commit. If the commit was created by the author himself, Committer is equal to the Author. Original timestamp of the commit created by Author. Final timestamp of the commit, after Committer has re-committed Author's commit. Returns true if the commit was created by the author of the change set himself. Returns all parent commits. True if the commit has at least one parent. The first parent commit if the commit has at least one parent, null otherwise. The commit's reference to the root of the directory structure of the revision. Returns an iterator over all ancestor-commits of this commit. Returns the changes of this commit vs. it's parent commit(s). Works for the first commit too. Represents repository-, user-, and global-configuration for git Saves the config to the file system. Direct config access via git style names (i.e. "user.name") A Diff represents the line-based differences between two text sequences given as string or byte array as a list of Sections. The process of creating the diff might take a while for large files. Note: The underlying differencer operates on raw bytes. Creates a line-based diff from the given texts. The strings are expected to be encoded in UTF8. Creates a line-based diff from the contents of the given blobs. Creates a line-based diff from the the given byte arrays. Returns an enumerator that iterates through the collection. A that can be used to iterate through the collection. 1 Returns an enumerator that iterates through a collection. An object that can be used to iterate through the collection. 2 Returns true if the given file seems to be a binary file. The heuristic used is similar to that of diff on unix: it looks for 0 bytes. Of course this classifies Unicode files as binaries too. path to the file to check (absolute or relative to the current directory) True if the file seems to be binary, false if it seems to be text and null if no decision can't be made Get the changed, unchanged and conflicting sections of this Diff. Section represents a block of text that is unchanged in two text sequences, a corresponding edit in two text sequences (two-way diff) or a conflict (three-way diff). Line index (1-based) of the begin of the block A. The block starts exactly at the beginning of the spedified line. Line index (1-based) of the begin of the block B. The block starts exactly at the beginning of the spedified line. Line index (1-based) of the end of the block A. The block ends exactly at the beginning of the specified line. Line index (1-based) of the end of the block B. The block ends exactly at the beginning of the specified line. Status of the diff section. Values may be Unchanged, Different and Conflicting The static class Git provides everything to interact with git itself, such as the command line interface commands, the git configuration or properties that are affecting git globally. Clone a repository and checkout the working directory. Clone a repository and checkout the working directory only if bare == false Returns the version of GitSharp. Get or set the default output stream that all git commands are writing to. Per default this returns a StreamWriter wrapping the standard output stream. By setting your own Streamwriter one can capture the output of the commands. Get or set the default git repository for all commands. A command can override this by setting it's own Repository property. Note: Init and Clone do not respect Repository since they create a Repository as a result of Execute. Get or set the default git directory for all commands. A command can override this, however, by setting its own GitDirectory property. Represents the index of a git repository which keeps track of changes that are about to be committed. Add all untracked files to the index and stage all changes (like git add .) Adds untracked files or directories to the index and writes the index to the disk (like "git add"). For tracked files that were modified, it stages the modification. Is a no-op for tracked files that were not modified. Note: Add as many files as possible by one call of this method for best performance. Paths to add to the index Add a file to index (without relying on the working directory) by specifying the file's content as string. The added file doesn't need to exist in the working directory. Relative path in the working directory. Note: the path is encoded using PathEncoding The content as string. Note: the content is encoded using ContentEncoding Add content to the index directly without the need for a file in the working directory. encoded file path (relative to working directory) encoded content Removes files or directories from the index which are no longer to be tracked. Does not delete files from the working directory. Use to remove and delete files. Removes files or directories from the index and delete them from the working directory. Stages the given files. Untracked files are added. This is an alias for Add. This is an alias for AddContent. Unstage overwrites staged files in the index with their current version in HEAD. In case of newly added files they are removed from the index. Relative paths to files you want to unstage. Check out the index into the working directory. Any modified files will be overwritten. to checkout from a commit. Check out given paths from the index overwriting files in the working directory. Modified files might be overwritten. Writes the index to the disk. Reads the index from the disk Returns true if the index has been changed, which means there are changes to be committed. This is not to be confused with the status of the working directory. If changes in the working directory have not been staged then IsChanged is false. The encoding to be used to convert file paths from string to byte arrays. The encoding to be used to convert file contents from string to byte arrays. The number of files tracked by the repository Leaf represents a file entry in a Tree. True if the file is executable (unix). The file name The full path relative to repostiory root The unix file permissions. Todo: model this with a permission object The parent Tree. Represents a git repository Initializes the Repository object. Path to the local git repository. Check out the branch with the given name into the working directory and make it the current branch. Check out the given branch into the working directory and make it the current branch. Commit staged changes and update HEAD. The default git author from the config is used. The commit message Returns the newly created commit Commit staged changes and update HEAD The commit message The author of the content to be committed Returns the newly created commit Initializes a non-bare repository. Use GitDirectory to specify location. The initialized repository Initializes a repository. Use GitDirectory to specify the location. Default is the current directory. Initializes a repository in the current location using the provided git command's options. Checks if the directory given by the path is a valid non-bare git repository. The given path may either point to the working directory or the repository's .git directory. Returns true if the given path is a valid git repository, false otherwise. Checks if the directory given by the path is a valid git repository. Returns true if the given path is a valid git repository, false otherwise. Searches for a git repository starting at the given path. Starting at the given path, searches up the file hierarchy for the next .git directory. The path where the search should start or null to start at the current directory A path if a repository has been found or null otherwise Access a git object by name, id or path. Use the type parameter to tell what kind of object you like to get. Supported types are
    Blob Branch Commit Leaf Tag Tree AbstractObject - use this if you are not sure about the type yourself. You will get back an object of the correct type (Blob, Commit, Tag or Tree).
Branches, Commits or Tags may be accessed by name or reference expression. Currently supported are combinations of these:
  • hash - a SHA-1 hash
  • refs/... - a ref name
  • ref^n - nth parent reference
  • ref~n - distance via parent reference
  • ref@{n} - nth version of ref
  • ref^{tree} - tree references by ref
  • ref^{commit} - commit references by ref
Not supported is
  • abbreviated SHA-1
  • timestamps in reflogs, ref@{full or relative timestamp}
Tree or Leaf (Blob) objects can be addressed by long hash or by their relative repository path
Returns the path to the repository database (i.e. the .git directory). Gets or sets Head which is a symbolic reference to the active branch. Note that setting head does not automatically check out that branch into the repositories working directory. Returns true if this repository is a bare repository. Bare repositories don't have a working directory and thus do not support some operations. Returns the path to the working directory (i.e. the parent of the .git directory of a non-bare repo). Returns null if it is a bare repository. Returns the git configuration containing repository-specific, user-specific and global settings. Get a report about the differences between the working directory, the index and the current commit. Run the diff operation. Until this is called, all lists will be empty true if anything is different between index, tree, and workdir Note: wdirEntry is the non-ignored working directory entry. Note: gitignore patterns do not influence this parameter Recalculates the status List of files added to the index, which are not in the current commit List of files added to the index, which are already in the current commit with different content List of files removed from the index but are existent in the current commit List of files existent in the index but are missing in the working directory List of files with unstaged modifications. A file may be modified and staged at the same time if it has been modified after adding. List of files existing in the working directory but are neither tracked in the index nor in the current commit. List of files with staged modifications that conflict. RepositoryStatus options allow customizing of the status checking routines. If filetime and index entry time are equal forces a full content check. This can be costly for large repositories. If you want to get instant per path status info while the algorithm traverses working directry, index and commit tree set this callback. Note, that it is fired only if RepositoryStatus detects differences. Status information for a single path in the working directry or index. See RepositoryStatusOptions.PerPathNotification for more information. Relative repository path. Name of the file Reset policies for Branch.Reset (see Branch) Resets the index but not the working directory (i.e., the changed files are preserved but not marked for commit). Does not touch the index nor the working directory at all, but requires them to be in a good order. This leaves all your changed files "Changes to be committed", as git-status would put it. Matches the working directory and index to that of the commit being reset to. Any changes to tracked files in the working directory since are lost. Resets the index to match the tree recorded by the named commit, and updates the files that are different between the named commit and the current commit in the working directory. Represents a git tag. The tag name. The object that has been tagged. Represents a line-based text (delimited with standard line delimiters such as CR and/or LF) and allows access of lines by 1-based line number. Text holds a byte array internally which is used for the diff algorithms which work on byte level. Note: The first line number in the text is 1. Create a text instance from a string. The encoding UTF8 is used as default for generating the underlying byte array. Create a text instance from a string. The encoding is used for generating the underlying byte array. Returns a line of the text as encoded byte array. Note: The first line number in the text is 1 1-based line number Get a text block by lines as encoded byte array. The text block starts with begin of start_line and ends with start of end_line. Note: The first line number in the text is 1 1-based line number marking the start of the text block at the start of the specified line 1-based line number markign the end of the text block at the start of the specified line Represents a directory in the git repository. True if the tree has no parent. Entries of the tree. These are either Tree or Leaf objects representing sub-directories or files. Tree entries representing this directory's subdirectories Leaf entries representing this directory's files Find a Blob or Tree by traversing the tree along the given path. You can access not only direct children of the tree but any descendant of this tree. The path's directory seperators may be both forward or backslash, it is converted automatically to the internal representation. Throws IOException. Relative path to a file or directory in the git tree. For directories a trailing slash is allowed A tree or blob object representing the referenced object