git-update-ref(1)
=================

NAME
----
git-update-ref - Update the object name stored in a ref safely

SYNOPSIS
--------
[synopsis]
git update-ref [-m <reason>] [--no-deref] -d <ref> [<old-oid>]
git update-ref [-m <reason>] [--no-deref] [--create-reflog] <ref> <new-oid> [<old-oid>]
git update-ref [-m <reason>] [--no-deref] --stdin [-z] [--batch-updates]

DESCRIPTION
-----------
Given two arguments, stores the <new-oid> in the <ref>, possibly
dereferencing the symbolic refs.  E.g. `git update-ref HEAD
<new-oid>` updates the current branch head to the new object.

Given three arguments, stores the <new-oid> in the <ref>,
possibly dereferencing the symbolic refs, after verifying that
the current value of the <ref> matches <old-oid>.
E.g. `git update-ref refs/heads/master <new-oid> <old-oid>`
updates the master branch head to <new-oid> only if its current
value is <old-oid>.  You can specify 40 "0" or an empty string
as <old-oid> to make sure that the ref you are creating does
not exist.

The final arguments are object names; this command without any options
does not support updating a symbolic ref to point to another ref (see
linkgit:git-symbolic-ref[1]).  But `git update-ref --stdin` does have
the `symref-*` commands so that regular refs and symbolic refs can be
committed in the same transaction.

If --no-deref is given, <ref> itself is overwritten, rather than
the result of following the symbolic pointers.

With `-d`, it deletes the named <ref> after verifying that it
still contains <old-oid>.

With `--stdin`, update-ref reads instructions from standard input and
performs all modifications together.  Specify commands of the form:

	update SP <ref> SP <new-oid> [SP <old-oid>] LF
	create SP <ref> SP <new-oid> LF
	delete SP <ref> [SP <old-oid>] LF
	verify SP <ref> [SP <old-oid>] LF
	symref-update SP <ref> SP <new-target> [SP (ref SP <old-target> | oid SP <old-oid>)] LF
	symref-create SP <ref> SP <new-target> LF
	symref-delete SP <ref> [SP <old-target>] LF
	symref-verify SP <ref> [SP <old-target>] LF
	option SP <opt> LF
	start LF
	prepare LF
	commit LF
	abort LF

With `--create-reflog`, update-ref will create a reflog for each ref
even if one would not ordinarily be created.

With `--batch-updates`, update-ref executes the updates in a batch but allows
individual updates to fail due to invalid or incorrect user input, applying only
the successful updates. However, system-related errors—such as I/O failures or
memory issues—will result in a full failure of all batched updates. Any failed
updates will be reported in the following format:

	rejected SP (<old-oid> | <old-target>) SP (<new-oid> | <new-target>) SP <rejection-reason> LF

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.

Alternatively, use `-z` to specify in NUL-terminated format, without
quoting:

	update SP <ref> NUL <new-oid> NUL [<old-oid>] NUL
	create SP <ref> NUL <new-oid> NUL
	delete SP <ref> NUL [<old-oid>] NUL
	verify SP <ref> NUL [<old-oid>] NUL
	symref-update SP <ref> NUL <new-target> [NUL (ref NUL <old-target> | oid NUL <old-oid>)] NUL
	symref-create SP <ref> NUL <new-target> NUL
	symref-delete SP <ref> [NUL <old-target>] NUL
	symref-verify SP <ref> [NUL <old-target>] NUL
	option SP <opt> NUL
	start NUL
	prepare NUL
	commit NUL
	abort NUL

In this format, use 40 "0" to specify a zero value, and use the empty
string to specify a missing value.

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:

update::
	Set <ref> to <new-oid> after verifying <old-oid>, if given.
	Specify a zero <new-oid> to ensure the ref does not exist
	after the update and/or a zero <old-oid> to make sure the
	ref does not exist before the update.

create::
	Create <ref> with <new-oid> after verifying that it does not
	exist.  The given <new-oid> may not be zero.

delete::
	Delete <ref> after verifying that it exists with <old-oid>, if
	given.  If given, <old-oid> may not be zero.

symref-update::
	Set <ref> to <new-target> after verifying <old-target> or <old-oid>,
	if given. Specify a zero <old-oid> to ensure that the ref does not
	exist before the update.

verify::
	Verify <ref> against <old-oid> but do not change it.  If
	<old-oid> is zero or missing, the ref must not exist.

symref-create::
	Create symbolic ref <ref> with <new-target> after verifying that
	it does not exist.

symref-delete::
	Delete <ref> after verifying that it exists with <old-target>, if given.

symref-verify::
	Verify symbolic <ref> against <old-target> but do not change it.
	If <old-target> is missing, the ref must not exist.  Can only be
	used in `no-deref` mode.

option::
	Modify the behavior of the next command naming a <ref>.
	The only valid option is `no-deref` to avoid dereferencing
	a symbolic ref.

start::
	Start a transaction. In contrast to a non-transactional session, a
	transaction will automatically abort if the session ends without an
	explicit commit. This command may create a new empty transaction when
	the current one has been committed or aborted already.

prepare::
	Prepare to commit the transaction. This will create lock files for all
	queued reference updates. If one reference could not be locked, the
	transaction will be aborted.

commit::
	Commit all reference updates queued for the transaction, ending the
	transaction.

abort::
	Abort the transaction, releasing all locks if the transaction is in
	prepared state.

If all <ref>s can be locked with matching <old-oid>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.

LOGGING UPDATES
---------------
If config parameter "core.logAllRefUpdates" is true and the ref is one
under "refs/heads/", "refs/remotes/", "refs/notes/", or a pseudoref
like HEAD or ORIG_HEAD; or the file "$GIT_DIR/logs/<ref>" exists then
`git update-ref` 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:

    oldsha1 SP newsha1 SP committer LF

Where "oldsha1" is the 40 character hexadecimal value previously
stored in <ref>, "newsha1" is the 40 character hexadecimal value of
<new-oid> and "committer" is the committer's name, email address
and date in the standard Git committer ident format.

Optionally with -m:

    oldsha1 SP newsha1 SP committer TAB message LF

Where all fields are as described above and "message" is the
value supplied to the -m option.

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.

NOTES
-----

Symbolic refs were initially implemented using symbolic links.  This is
now deprecated since not all filesystems support symbolic links.

This command follows *real* 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).

SEE ALSO
--------
linkgit:git-symbolic-ref[1]

GIT
---
Part of the linkgit:git[1] suite
