'\" t
.\"     Title: git-update-ref
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\"      Date: 04/19/2017
.\"    Manual: Git Manual
.\"    Source: Git 2.13.0.rc0
.\"  Language: English
.\"
.TH "GIT\-UPDATE\-REF" "1" "04/19/2017" "Git 2\&.13\&.0\&.rc0" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-update-ref \- Update the object name stored in a ref safely
.SH "SYNOPSIS"
.sp
.nf
\fIgit update\-ref\fR [\-m <reason>] (\-d <ref> [<oldvalue>] | [\-\-no\-deref] [\-\-create\-reflog] <ref> <newvalue> [<oldvalue>] | \-\-stdin [\-z])
.fi
.sp
.SH "DESCRIPTION"
.sp
Given two arguments, stores the <newvalue> in the <ref>, possibly dereferencing the symbolic refs\&. E\&.g\&. \fBgit update\-ref HEAD <newvalue>\fR updates the current branch head to the new object\&.
.sp
Given three arguments, stores the <newvalue> in the <ref>, possibly dereferencing the symbolic refs, after verifying that the current value of the <ref> matches <oldvalue>\&. E\&.g\&. \fBgit update\-ref refs/heads/master <newvalue> <oldvalue>\fR updates the master branch head to <newvalue> only if its current value is <oldvalue>\&. You can specify 40 "0" or an empty string as <oldvalue> to make sure that the ref you are creating does not exist\&.
.sp
It also allows a "ref" file to be a symbolic pointer to another ref file by starting with the four\-byte header sequence of "ref:"\&.
.sp
More importantly, it allows the update of a ref file to follow these symbolic pointers, whether they are symlinks or these "regular file symbolic refs"\&. It follows \fBreal\fR symlinks only if they start with "refs/": otherwise it will just try to read them and update them as a regular file (i\&.e\&. it will allow the filesystem to follow them, but will overwrite such a symlink to somewhere else with a regular filename)\&.
.sp
If \-\-no\-deref is given, <ref> itself is overwritten, rather than the result of following the symbolic pointers\&.
.sp
In general, using
.sp
.if n \{\
.RS 4
.\}
.nf
git update\-ref HEAD "$head"
.fi
.if n \{\
.RE
.\}
.sp
should be a \fIlot\fR safer than doing
.sp
.if n \{\
.RS 4
.\}
.nf
echo "$head" > "$GIT_DIR/HEAD"
.fi
.if n \{\
.RE
.\}
.sp
both from a symlink following standpoint \fBand\fR an error checking standpoint\&. The "refs/" rule for symlinks means that symlinks that point to "outside" the tree are safe: they\(cqll be followed for reading but not for writing (so we\(cqll never write through a ref symlink to some other tree, if you have copied a whole archive by creating a symlink tree)\&.
.sp
With \fB\-d\fR flag, it deletes the named <ref> after verifying it still contains <oldvalue>\&.
.sp
With \fB\-\-stdin\fR, update\-ref reads instructions from standard input and performs all modifications together\&. Specify commands of the form:
.sp
.if n \{\
.RS 4
.\}
.nf
update SP <ref> SP <newvalue> [SP <oldvalue>] LF
create SP <ref> SP <newvalue> LF
delete SP <ref> [SP <oldvalue>] LF
verify SP <ref> [SP <oldvalue>] LF
option SP <opt> LF
.fi
.if n \{\
.RE
.\}
.sp
With \fB\-\-create\-reflog\fR, update\-ref will create a reflog for each ref even if one would not ordinarily be created\&.
.sp
Quote fields containing whitespace as if they were strings in C source code; i\&.e\&., surrounded by double\-quotes and with backslash escapes\&. Use 40 "0" characters or the empty string to specify a zero value\&. To specify a missing value, omit the value and its preceding SP entirely\&.
.sp
Alternatively, use \fB\-z\fR to specify in NUL\-terminated format, without quoting:
.sp
.if n \{\
.RS 4
.\}
.nf
update SP <ref> NUL <newvalue> NUL [<oldvalue>] NUL
create SP <ref> NUL <newvalue> NUL
delete SP <ref> NUL [<oldvalue>] NUL
verify SP <ref> NUL [<oldvalue>] NUL
option SP <opt> NUL
.fi
.if n \{\
.RE
.\}
.sp
In this format, use 40 "0" to specify a zero value, and use the empty string to specify a missing value\&.
.sp
In either format, values can be specified in any form that Git recognizes as an object name\&. Commands in any other format or a repeated <ref> produce an error\&. Command meanings are:
.PP
update
.RS 4
Set <ref> to <newvalue> after verifying <oldvalue>, if given\&. Specify a zero <newvalue> to ensure the ref does not exist after the update and/or a zero <oldvalue> to make sure the ref does not exist before the update\&.
.RE
.PP
create
.RS 4
Create <ref> with <newvalue> after verifying it does not exist\&. The given <newvalue> may not be zero\&.
.RE
.PP
delete
.RS 4
Delete <ref> after verifying it exists with <oldvalue>, if given\&. If given, <oldvalue> may not be zero\&.
.RE
.PP
verify
.RS 4
Verify <ref> against <oldvalue> but do not change it\&. If <oldvalue> zero or missing, the ref must not exist\&.
.RE
.PP
option
.RS 4
Modify behavior of the next command naming a <ref>\&. The only valid option is
\fBno\-deref\fR
to avoid dereferencing a symbolic ref\&.
.RE
.sp
If all <ref>s can be locked with matching <oldvalue>s simultaneously, all modifications are performed\&. Otherwise, no modifications are performed\&. Note that while each individual <ref> is updated or deleted atomically, a concurrent reader may still see a subset of the modifications\&.
.SH "LOGGING UPDATES"
.sp
If config parameter "core\&.logAllRefUpdates" is true and the ref is one under "refs/heads/", "refs/remotes/", "refs/notes/", or the symbolic ref HEAD; or the file "$GIT_DIR/logs/<ref>" exists then \fBgit update\-ref\fR will append a line to the log file "$GIT_DIR/logs/<ref>" (dereferencing all symbolic refs before creating the log name) describing the change in ref value\&. Log lines are formatted as:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
oldsha1 SP newsha1 SP committer LF
.sp
Where "oldsha1" is the 40 character hexadecimal value previously stored in <ref>, "newsha1" is the 40 character hexadecimal value of <newvalue> and "committer" is the committer\(cqs name, email address and date in the standard Git committer ident format\&.
.RE
.sp
Optionally with \-m:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
oldsha1 SP newsha1 SP committer TAB message LF
.sp
Where all fields are as described above and "message" is the value supplied to the \-m option\&.
.RE
.sp
An update will fail (without changing <ref>) if the current user is unable to create a new log file, append to the existing log file or does not have committer information available\&.
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
