GITCLI - Online Linux Manual PageSection : 7
Updated : 2023−03−13
Source : Git 2​.40​.0
Note : Git Manual

NAMEgitcli − Git command−line interface and conventions

SYNOPSISgitcli

DESCRIPTIONThis manual describes the convention used throughout Git CLI​. Many commands take revisions (most often "commits", but sometimes "tree−ish", depending on the context and command) and paths as their arguments​. Here are the rules: •  Options come first and then args​. A subcommand may take dashed options (which may take their own arguments, e​.g​. "−−max−parents 2") and arguments​. You SHOULD give dashed options first and then arguments​. Some commands may accept dashed options after you have already gave non−option arguments (which may make the command ambiguous), but you should not rely on it (because eventually we may find a way to fix these ambiguity by enforcing the "options then args" rule)​. •  Revisions come first and then paths​. E​.g​. in git diff v1​.0 v2​.0 arch/x86 include/asm−x86, v1​.0 and v2​.0 are revisions and arch/x86 and include/asm−x86 are paths​. •  When an argument can be misunderstood as either a revision or a path, they can be disambiguated by placing −− between them​. E​.g​. git diff −− HEAD is, "I have a file called HEAD in my work tree​. Please show changes between the version I staged in the index and what I have in the work tree for that file", not "show difference between the HEAD commit and the work tree as a whole"​. You can say git diff HEAD −− to ask for the latter​. •  Without disambiguating −−, Git makes a reasonable guess, but errors out and asking you to disambiguate when ambiguous​. E​.g​. if you have a file called HEAD in your work tree, git diff HEAD is ambiguous, and you have to say either git diff HEAD −− or git diff −− HEAD to disambiguate​. •  Because −− disambiguates revisions and paths in some commands, it cannot be used for those commands to separate options and revisions​. You can use −−end−of−options for this (it also works for commands that do not distinguish between revisions in paths, in which case it is simply an alias for −−)​. When writing a script that is expected to handle random user−input, it is a good practice to make it explicit which arguments are which by placing disambiguating −− at appropriate places​. •  Many commands allow wildcards in paths, but you need to protect them from getting globbed by the shell​. These two mean different things: $ git restore *​.c $ git restore \*​.cThe former lets your shell expand the fileglob, and you are asking the dot−C files in your working tree to be overwritten with the version in the index​. The latter passes the *​.c to Git, and you are asking the paths in the index that match the pattern to be checked out to your working tree​. After running git add hello​.c; rm hello​.c, you will not see hello​.c in your working tree with the former, but with the latter you will​. •  Just as the filesystem ​. (period) refers to the current directory, using a ​. as a repository name in Git (a dot−repository) is a relative path and means your current repository​. Here are the rules regarding the "flags" that you should follow when you are scripting Git: •  Its preferred to use the non−dashed form of Git commands, which means that you should prefer git foo to git−foo​. •  Splitting short options to separate words (prefer git foo −a −b to git foo −ab, the latter may not even work)​. •  When a command−line option takes an argument, use the stuck form​. In other words, write git foo −oArg instead of git foo −o Arg for short options, and git foo −−long−opt=Arg instead of git foo −−long−opt Arg for long options​. An option that takes optional option−argument must be written in the stuck form​. •  When you give a revision parameter to a command, make sure the parameter is not ambiguous with a name of a file in the work tree​. E​.g​. do not write git log −1 HEAD but write git log −1 HEAD −−; the former will not work if you happen to have a file called HEAD in the work tree​. •  Many commands allow a long option −−option to be abbreviated only to their unique prefix (e​.g​. if there is no other option whose name begins with opt, you may be able to spell −−opt to invoke the −−option flag), but you should fully spell them out when writing your scripts; later versions of Git may introduce a new option whose name shares the same prefix, e​.g​. −−optimize, to make a short prefix that used to be unique no longer unique​.

ENHANCED OPTION PARSERFrom the Git 1​.5​.4 series and further, many Git commands (not all of them at the time of the writing though) come with an enhanced option parser​. Here is a list of the facilities provided by this option parser​.

Magic OptionsCommands which have the enhanced option parser activated all understand a couple of magic command−line options: −h gives a pretty printed usage of the command​. $ git describe −h usage: git describe [<options>] <commit−ish>* or: git describe [<options>] −−dirty −−contains find the tag that comes after the commit −−debug debug search strategy on stderr −−all use any ref −−tags use any tag, even unannotated −−long always use long format −−abbrev[=<n>] use <n> digits to display SHA−1sNote that some subcommand (e​.g​. git grep) may behave differently when there are things on the command line other than −h, but git subcmd −h without anything else on the command line is meant to consistently give the usage​. −−help−all Some Git commands take options that are only used for plumbing or that are deprecated, and such options are hidden from the default usage​. This option gives the full list of options​.

Negating optionsOptions with long option names can be negated by prefixing −−no−​. For example, git branch has the option −−track which is on by default​. You can use −−no−track to override that behaviour​. The same goes for −−color and −−no−color​.

Aggregating short optionsCommands that support the enhanced option parser allow you to aggregate short options​. This means that you can for example use git rm −rf or git clean −fdx​.

Abbreviating long optionsCommands that support the enhanced option parser accepts unique prefix of a long option as if it is fully spelled out, but use this with a caution​. For example, git commit −−amen behaves as if you typed git commit −−amend, but that is true only until a later version of Git introduces another option that shares the same prefix, e​.g​. git commit −−amenity option​.

Separating argument from the optionYou can write the mandatory option parameter to an option as a separate word on the command line​. That means that all the following uses work: $ git foo −−long−opt=Arg $ git foo −−long−opt Arg $ git foo −oArg $ git foo −o ArgHowever, this is NOT allowed for switches with an optional value, where the stuck form must be used: $ git describe −−abbrev HEAD # correct $ git describe −−abbrev=10 HEAD # correct $ git describe −−abbrev 10 HEAD # NOT WHAT YOU MEANT

NOTES ON FREQUENTLY CONFUSED OPTIONSMany commands that can work on files in the working tree and/or in the index can take −−cached and/or −−index options​. Sometimes people incorrectly think that, because the index was originally called cache, these two are synonyms​. They are not — these two options mean very different things​. •  The −−cached option is used to ask a command that usually works on files in the working tree to only work with the index​. For example, git grep, when used without a commit to specify from which commit to look for strings in, usually works on files in the working tree, but with the −−cached option, it looks for strings in the index​. •  The −−index option is used to ask a command that usually works on files in the working tree to also affect the index​. For example, git stash apply usually merges changes recorded in a stash entry to the working tree, but with the −−index option, it also merges changes to the index as well​. git apply command can be used with −−cached and −−index (but not at the same time)​. Usually the command only affects the files in the working tree, but with −−index, it patches both the files and their index entries, and with −−cached, it modifies only the index entries​. See also https://lore​.kernel​.org/git/7v64clg5u9​.fsf@assigned−by−dhcp​.cox​.net/ and https://lore​.kernel​.org/git/7vy7ej9g38​.fsf@gitster​.siamese​.dyndns​.org/ for further information​. Some other commands that also work on files in the working tree and/or in the index can take −−staged and/or −−worktree​. •  −−staged is exactly like −−cached, which is used to ask a command to only work on the index, not the working tree​. •  −−worktree is the opposite, to ask a command to work on the working tree only, not the index​. •  The two options can be specified together to ask a command to work on both the index and the working tree​.

GITPart of the git(1) suite
0
Johanes Gumabo
Data Size   :   31,291 byte
man-gitcli.7Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 204,174
Visitor ID   :     :  
Visitor IP   :   18.225.55.42   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.