.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
.\" Instead of manually editing it, you probably should edit the DocBook XML
.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "GIT\-PUSH" "1" "09/06/2007" "Git 1.5.3.1.19.gb5ef6" "Git Manual"
+.TH "GIT\-PUSH" "1" "09/19/2007" "Git 1.5.3.1.153.g89df5" "Git Manual"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
The local ref that matches <src> is used to fast forward the remote ref that matches <dst>. If the optional plus + is used, the remote ref is updated even if it does not result in a fast forward update.
-Note: If no explicit refspec is found, (that is neither on the command line nor in any Push line of the corresponding remotes file\-\-\-see below), then all the refs that exist both on the local side and on the remote side are updated.
+Note: If no explicit refspec is found, (that is neither on the command line nor in any Push line of the corresponding remotes file\-\-\-see below), then all the heads that exist both on the local side and on the remote side are updated.
tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.
Pushing an empty <src> allows you to delete the <dst> ref from the remote repository.
.TP
\-\-all
-Instead of naming each ref to push, specifies that all refs be pushed.
+Instead of naming each ref to push, specifies that all refs under $GIT_DIR/refs/heads/ be pushed.
.TP
\-\-tags
All refs under $GIT_DIR/refs/tags are pushed, in addition to refspecs explicitly listed on the command line.
.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
.\" Instead of manually editing it, you probably should edit the DocBook XML
.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "GIT\-SEND\-PACK" "1" "07/19/2007" "Git 1.5.3.rc2.19.gc4fba" "Git Manual"
+.TH "GIT\-SEND\-PACK" "1" "09/19/2007" "Git 1.5.3.1.153.g89df5" "Git Manual"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
Same as \-\-receive\-pack=<git\-receive\-pack>.
.TP
\-\-all
-Instead of explicitly specifying which refs to update, update all refs that locally exist.
+Instead of explicitly specifying which refs to update, update all heads that locally exist.
.TP
\-\-force
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.
With \fI\-\-all\fR flag, all refs that exist locally are transferred to the remote side. You cannot specify any \fI<ref>\fR if you use this flag.
-Without \fI\-\-all\fR and without any \fI<ref>\fR, the refs that exist both on the local side and on the remote side are updated.
+Without \fI\-\-all\fR and without any \fI<ref>\fR, the heads that exist both on the local side and on the remote side are updated.
When one or more \fI<ref>\fR are specified explicitly, it can be either a single pattern, or a pair of such pattern separated by a colon ":" (this means that a ref name cannot have a colon in it). A single pattern \fI<name>\fR is just a shorthand for \fI<name>:<name>\fR.
.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
.\" Instead of manually editing it, you probably should edit the DocBook XML
.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "GIT\-SVN" "1" "08/29/2007" "Git 1.5.3.rc7" "Git Manual"
+.TH "GIT\-SVN" "1" "09/19/2007" "Git 1.5.3.1.153.g89df5" "Git Manual"
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
If you use \fIgit\-svn set\-tree A..B\fR to commit several diffs and you do not have the latest remotes/git\-svn merged into my\-branch, you should use \fIgit\-svn rebase\fR to update your work branch instead of \fIgit pull\fR or \fIgit merge\fR. \fIpull/merge\fR can cause non\-linear history to be flattened when committing into SVN, which can lead to merge commits reversing previous commits in SVN.
.SH "DESIGN PHILOSOPHY"
-Merge tracking in Subversion is lacking and doing branched development with Subversion is cumbersome as a result. git\-svn does not do automated merge/branch tracking by default and leaves it entirely up to the user on the git side. git\-svn does however follow copy history of the directory that it is tracking, however (much like how \fIsvn log\fR works).
+Merge tracking in Subversion is lacking and doing branched development with Subversion can be cumbersome as a result. While git\-svn can track copy history (including branches and tags) for repositories adopting a standard layout, it cannot yet represent merge history that happened inside git back upstream to SVN users. Therefore it is advised that users keep history as linear as possible inside git to ease compatibility with SVN (see the CAVEATS section below).
.SH "CAVEATS"
For the sake of simplicity and interoperating with a less\-capable system (SVN), it is recommended that all git\-svn users clone, fetch and dcommit directly from the SVN server, and avoid all git\-clone/pull/merge/push operations between git repositories and branches. The recommended method of exchanging code between git branches and users is git\-format\-patch and git\-am, or just dcommiting to the SVN repository.