Add a --hard flag to stg reset
[stgit] / Documentation / stg.txt
... / ...
CommitLineData
1stg(1)
2======
3Yann Dirson <ydirson@altern.org>
4v0.12.1, February 2007
5
6NAME
7----
8stg - manage stacks of patches using the GIT content tracker
9
10SYNOPSIS
11--------
12[verse]
13'stg' [--version | --help]
14'stg' [--help <command> | <command> --help]
15'stg' <command> [COMMAND OPTIONS] [ARGS]
16
17DESCRIPTION
18-----------
19
20StGIT (Stacked GIT) is an application providing similar functionality
21to Quilt (i.e. pushing/popping patches to/from a stack), on top of
22GIT. These operations are performed using GIT commands and the patches
23are stored as GIT commit objects, allowing easy merging of the StGIT
24patches into other repositories using standard GIT functionality.
25
26An StGIT stack is a GIT branch with additional information to help
27making changes to individual patches you already committed, rather
28than making changes by adding new commits. It is thus a
29non-forwarding, or rewinding branch: the old head of the branch is
30often not reachable as one of the new head's ancestors.
31
32Typical uses of StGIT include:
33
34Tracking branch::
35 Tracking changes from a remote branch, while maintaining local
36 modifications against that branch, possibly with the intent of
37 sending some patches upstream. StGIT assists in preparing and
38 cleaning up patches until they are acceptable upstream, as
39 well as maintaining local patches not meant to be sent
40 upstream.
41+
42In such a setup, typically all commits on your branch are StGIT
43patches; the stack base is the branch point where your changes "fork"
44off their parent branch.
45
46Development branch::
47 Preparing and testing your commits before publishing them,
48 separating your features from unrelated bugfixes collected
49 while developping.
50+
51In such a setup, not all commits on your branch need to be StGIT
52patches; there may be regular GIT commits below your stack base.
53
54Patches
55~~~~~~~
56
57Many StGIT commands take references to StGIT patches as arguments.
58Patches in the stack are identified with short names, each of which
59must be unique in the stack.
60
61Patches in the current stack are just referred to by their name. Some
62commands allow you to specify a patch in another stack of the repository;
63this is done by suffixing the patch name with an '@' sign followed by the
64branch name (eg. 'thispatch@otherbranch').
65
66A number of positions in the stack related to the patch are also
67accessible through '//' suffixes. For example, 'patch//top' is
68equivalent to 'patch', and 'patch//bottom' refers to the commit below
69'patch' (i.e. the patch below, or the stack base if this is the
70bottom-most patch). Similarly '//top.old' and '//bottom.old'
71refer to the previous version of the patch (before the last
72stglink:push[] or stglink:refresh[] operation). When referring to the
73current patch, its name can be omitted (eg. 'currentpatch//bottom.old'
74can be abbreviated as 'bottom.old').
75
76If you need to pass a given StGIT reference to a git command,
77stglink:id[] will convert it to a git commit id.
78
79OPTIONS
80-------
81
82The following generic option flags are available. Additional options
83are available per-command, and documented in the command-specific
84documentation.
85
86--version::
87 Prints the StGIT suite version that the 'stg' program came
88 from, as well as version of other components used, such as GIT
89 and Python.
90
91--help::
92 Prints the synopsis and a list of all commands. If a git
93 command is given this option will display the specific help
94 for that command.
95
96STGIT COMMANDS
97--------------
98
99We divide StGIT commands in thematic groups, according to the primary
100type of object they create or change.
101
102ifdef::backend-docbook[]
103Here is a short description of each command. A more detailed
104description is available in individual command manpages. Those
105manpages are named 'stg-<command>(1)'.
106endif::backend-docbook[]
107
108include::command-list.txt[]
109
110CONFIGURATION MECHANISM
111-----------------------
112
113Starting with 0.12, StGIT uses the same configuration mechanism as
114GIT. See link:git[7] for more details.
115
116TEMPLATES
117---------
118
119A number of StGIT commands make use of template files to provide
120useful default texts to be edited by the user. These '<name>.tmpl'
121template files are searched in the following directories:
122
123 $GITDIR/
124 $HOME/.stgit/templates/
125 /usr/share/stgit/templates/