mirror of
https://github.com/tummychow/git-absorb
synced 2024-11-15 00:27:38 +00:00
197 lines
4.6 KiB
Groff
197 lines
4.6 KiB
Groff
'\" t
|
|
.\" Title: git-absorb
|
|
.\" Author: [see the "AUTHOR" section]
|
|
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
|
|
.\" Date: 10/18/2019
|
|
.\" Manual: git absorb
|
|
.\" Source: git-absorb 0.5.0
|
|
.\" Language: English
|
|
.\"
|
|
.TH "GIT\-ABSORB" "1" "10/18/2019" "git\-absorb 0\&.5\&.0" "git absorb"
|
|
.\" -----------------------------------------------------------------
|
|
.\" * 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-absorb \- Automatically absorb staged changes into your current branch
|
|
.SH "SYNOPSIS"
|
|
.sp
|
|
.nf
|
|
\fIgit absorb\fR [FLAGS] [OPTIONS]
|
|
.fi
|
|
.SH "DESCRIPTION"
|
|
.sp
|
|
You have a feature branch with a few commits\&. Your teammate reviewed the branch and pointed out a few bugs\&. You have fixes for the bugs, but you don\(cqt want to shove them all into an opaque commit that says fixes, because you believe in atomic commits\&. Instead of manually finding commit SHAs for git commit \-\-fixup, or running a manual interactive rebase, do this:
|
|
.sp
|
|
.if n \{\
|
|
.RS 4
|
|
.\}
|
|
.nf
|
|
$ git add $FILES_YOU_FIXED
|
|
|
|
$ git absorb \-\-and\-rebase
|
|
(or)
|
|
$ git absorb
|
|
$ git rebase \-i \-\-autosquash master
|
|
.fi
|
|
.if n \{\
|
|
.RE
|
|
.\}
|
|
.sp
|
|
git absorb will automatically identify which commits are safe to modify, and which indexed changes belong to each of those commits\&. It will then write fixup! commits for each of those changes\&. You can check its output manually if you don\(cqt trust it, and then fold the fixups into your feature branch with git\(cqs built\-in autosquash functionality\&.
|
|
.SH "FLAGS"
|
|
.PP
|
|
\-r, \-\-and\-rebase
|
|
.RS 4
|
|
Run rebase if successful
|
|
.RE
|
|
.PP
|
|
\-n, \-\-dry\-run
|
|
.RS 4
|
|
Don\(cqt make any actual changes
|
|
.RE
|
|
.PP
|
|
\-f, \-\-force
|
|
.RS 4
|
|
Skip safety checks
|
|
.RE
|
|
.PP
|
|
\-h, \-\-help
|
|
.RS 4
|
|
Prints help information
|
|
.RE
|
|
.PP
|
|
\-V, \-\-version
|
|
.RS 4
|
|
Prints version information
|
|
.RE
|
|
.PP
|
|
\-v, \-\-verbose
|
|
.RS 4
|
|
Display more output
|
|
.RE
|
|
.SH "OPTIONS"
|
|
.PP
|
|
\-b <base>, \-\-base <base>
|
|
.RS 4
|
|
Use this commit as the base of the absorb stack
|
|
.RE
|
|
.SH "USAGE"
|
|
.sp
|
|
.RS 4
|
|
.ie n \{\
|
|
\h'-04' 1.\h'+01'\c
|
|
.\}
|
|
.el \{\
|
|
.sp -1
|
|
.IP " 1." 4.2
|
|
.\}
|
|
git add
|
|
any changes that you want to absorb\&. By design,
|
|
git absorb
|
|
will only consider content in the git index\&.
|
|
.RE
|
|
.sp
|
|
.RS 4
|
|
.ie n \{\
|
|
\h'-04' 2.\h'+01'\c
|
|
.\}
|
|
.el \{\
|
|
.sp -1
|
|
.IP " 2." 4.2
|
|
.\}
|
|
git absorb\&. This will create a sequence of commits on
|
|
HEAD\&. Each commit will have a
|
|
fixup!
|
|
message indicating the message (if unique) or SHA of the commit it should be squashed into\&.
|
|
.RE
|
|
.sp
|
|
.RS 4
|
|
.ie n \{\
|
|
\h'-04' 3.\h'+01'\c
|
|
.\}
|
|
.el \{\
|
|
.sp -1
|
|
.IP " 3." 4.2
|
|
.\}
|
|
If you are satisfied with the output,
|
|
git rebase \-i \-\-autosquash
|
|
to squash the
|
|
fixup!
|
|
commits into their predecessors\&. You can set the [GIT_SEQUENCE_EDITOR][] environment variable if you don\(cqt need to edit the rebase TODO file\&.
|
|
.RE
|
|
.sp
|
|
.RS 4
|
|
.ie n \{\
|
|
\h'-04' 4.\h'+01'\c
|
|
.\}
|
|
.el \{\
|
|
.sp -1
|
|
.IP " 4." 4.2
|
|
.\}
|
|
If you are not satisfied (or if something bad happened),
|
|
git reset \-\-soft
|
|
to the pre\-absorption commit to recover your old state\&. (You can find the commit in question with
|
|
git reflog\&.) And if you think
|
|
git absorb
|
|
is at fault, please [file an issue][]\&.
|
|
.RE
|
|
.sp
|
|
.if n \{\
|
|
.RS 4
|
|
.\}
|
|
.nf
|
|
[GIT_SEQUENCE_EDITOR]: https://stackoverflow\&.com/a/29094904
|
|
[file an issue]: https://github\&.com/tummychow/git\-absorb/issues/new
|
|
.fi
|
|
.if n \{\
|
|
.RE
|
|
.\}
|
|
.SH "CONFIGURATION"
|
|
.SS "STACK SIZE"
|
|
.sp
|
|
When run without \-\-base, git\-absorb will only search for candidate commits to fixup within a certain range (by default 10)\&. If you get an error like this:
|
|
.sp
|
|
.if n \{\
|
|
.RS 4
|
|
.\}
|
|
.nf
|
|
WARN stack limit reached, limit: 10
|
|
.fi
|
|
.if n \{\
|
|
.RE
|
|
.\}
|
|
.sp
|
|
edit your local or global \&.gitconfig and add the following section:
|
|
.sp
|
|
.if n \{\
|
|
.RS 4
|
|
.\}
|
|
.nf
|
|
[absorb]
|
|
maxStack=50 # Or any other reasonable value for your project
|
|
.fi
|
|
.if n \{\
|
|
.RE
|
|
.\}
|
|
.SH "GITHUB PROJECT"
|
|
.sp
|
|
https://github\&.com/tummychow/git\-absorb
|
|
.SH "AUTHOR"
|
|
.sp
|
|
Stephen Jung <tummychow511@gmail\&.com>
|