Home Explore Blog CI



git

3rd chunk of `Documentation/RelNotes/1.5.4.adoc`
0f96da17e9ca3d67d600d2d996b14e4d58ba16a7b90e81b60000000100000fa2
 merge" can call the "post-merge" hook.

 * "git pack-objects" can optionally run deltification with multiple
   threads.

 * "git archive" can optionally substitute keywords in files marked with
   export-subst attribute.

 * "git cherry-pick" made a misguided attempt to repeat the original
   command line in the generated log message, when told to cherry-pick a
   commit by naming a tag that points at it.  It does not anymore.

 * "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
   various date fields in different formats.

 * "git gc --auto" is a low-impact way to automatically run a variant of
   "git repack" that does not lose unreferenced objects (read: safer
   than the usual one) after the user accumulates too many loose
   objects.

 * "git clean" has been rewritten in C.

 * You need to explicitly set clean.requireForce to "false" to allow
   "git clean" without -f to do any damage (lack of the configuration
   variable used to mean "do not require -f option to lose untracked
   files", but we now use the safer default).

 * The kinds of whitespace errors "git diff" and "git apply" notice (and
   fix) can be controlled via 'core.whitespace' configuration variable
   and 'whitespace' attribute in .gitattributes file.

 * "git push" learned --dry-run option to show what would happen if a
   push is run.

 * "git push" does not update a tracking ref on the local side when the
   remote refused to update the corresponding ref.

 * "git push" learned --mirror option.  This is to push the local refs
   one-to-one to the remote, and deletes refs from the remote that do
   not exist anymore in the repository on the pushing side.

 * "git push" can remove a corrupt ref at the remote site with the usual
   ":ref" refspec.

 * "git remote" knows --mirror mode.  This is to set up configuration to
   push into a remote repository to store local branch heads to the same
   branch on the remote side, and remove branch heads locally removed
   from local repository at the same time.  Suitable for pushing into a
   back-up repository.

 * "git remote" learned "rm" subcommand.

 * "git cvsserver" can be run via "git shell".  Also, "cvs" is
   recognized as a synonym for "git cvsserver", so that CVS users
   can be switched to git just by changing their login shell.

 * "git cvsserver" acts more like receive-pack by running post-receive
   and post-update hooks.

 * "git am" and "git rebase" are far less verbose.

 * "git pull" learned to pass --[no-]ff option to underlying "git
   merge".

 * "git pull --rebase" is a different way to integrate what you fetched
   into your current branch.

 * "git fast-export" produces data-stream that can be fed to fast-import
   to reproduce the history recorded in a git repository.

 * "git add -i" takes pathspecs to limit the set of files to work on.

 * "git add -p" is a short-hand to go directly to the selective patch
   subcommand in the interactive command loop and to exit when done.

 * "git add -i" UI has been colorized.  The interactive prompt
   and menu can be colored by setting color.interactive
   configuration.  The diff output (including the hunk picker)
   are colored with color.diff configuration.

 * "git commit --allow-empty" allows you to create a single-parent
   commit that records the same tree as its parent, overriding the usual
   safety valve.

 * "git commit --amend" can amend a merge that does not change the tree
   from its first parent.

 * "git commit" used to unconditionally strip comment lines that
   began with '#' and removed excess blank lines.  This behavior has
   been made configurable.

 * "git commit" has been rewritten in C.

 * "git stash random-text" does not create a new stash anymore.  It was
   a UI mistake.  Use "git stash save random-text", or "git stash"
   (without extra args) for that.

 * "git stash clear extra-text" does not clear the whole stash
   anymore.  It is tempting to expect "git stash clear stash@{2}"
   to drop only

Title: GIT Feature Enhancements and Fixes
Summary
This update includes various enhancements and fixes to GIT commands, such as git merge, git pack-objects, git archive, and git cherry-pick, as well as new features like optional multi-threaded deltification, keyword substitution, and improved date formatting, to improve the overall performance, usability, and functionality of GIT.