add git-wip and git-unwip (#669)

* Upgrade codespell to v2.4.0

It is a lastet verison, and is needed so that I can use the inline
ignore support in a future commit.

After updating tests/pyproject.toml I ran the following commands:
```
cd tests
poetry lock --no-update
poetry install
```

I also fixed a spelling error in man/git-summary.md, which was not
caught by the old version of codespell. After updating the file I also
updated the related files by running the following commands:

```
cd man
make -C .. man/git-summary.{1,html}
```

* add git-wip and git-unwip

Updated/re-built the documentation with:
```
cd man
make -C .. man/git-unwip.{1,html}
make -C .. man/git-wip.{1,html}
make -C .. man/git-extras.{1,html}
```
This commit is contained in:
Andrew Sullivan Cant 2025-05-14 05:05:41 -04:00 committed by GitHub
parent d4cd272556
commit c63b46a33b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 549 additions and 103 deletions

View file

@ -1 +1,2 @@
gool
Cant

View file

@ -75,6 +75,8 @@
- [`git undo`](#git-undo)
- [`git unlock`](#git-unlock)
- [`git utimes`](#git-utimes)
- [`git unwip`](#git-unwip)
- [`git wip`](#git-wip)
## git extras
@ -1637,3 +1639,21 @@ Commits changes with a generated message.
## git continue
Continue current revert, rebase, merge or cherry-pick, without the need to find exact command in history.
## git wip
Create a Work In Progress(WIP) commit, which will include all changes in the
working directory. (i.e., changes to existing files, new files, removed files)
```bash
$ git wip
```
## git unwip
Undo a Work In Progress(WIP) commit and put all of those changes back into the
working directory.
```bash
$ git unwip
```

14
bin/git-unwip Executable file
View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
# Based on scripts from git-utils:
# * https://github.com/ddollar/git-utils/blob/master/git-unwip
# Check if the last commit is a 'WIP' commit
LAST_COMMIT=`git log -1 --pretty=%B | tr -d '[:space:]'`
if [ 'WIP' != $LAST_COMMIT ]; then
echo 'Last commit is not a WIP commit, so it will not be unWIP-ed.'
exit 1
fi
git undo --soft

8
bin/git-wip Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Based on scripts from git-utils:
# * https://github.com/ddollar/git-utils/blob/master/git-wip
# * https://github.com/ddollar/git-utils/blob/master/git-addremove
git add --all
git commit --all --message="WIP"

View file

@ -464,4 +464,6 @@ zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \
touch:'touch and add file to the index' \
undo:'remove latest commits' \
unlock:'unlock a file excluded from version control' \
utimes:'change files modification time to their last commit date'
utimes:'change files modification time to their last commit date' \
unwip:'undo a WIP commit' \
wip:'create a WIP commit'

View file

@ -1,6 +1,6 @@
.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-EXTRAS" "1" "September 2024" "" "Git Extras"
.\" generated with Ronn-NG/v0.10.1
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
.TH "GIT\-EXTRAS" "1" "May 2025" "" "Git Extras"
.SH "NAME"
\fBgit\-extras\fR \- Awesome GIT utilities
.SH "SYNOPSIS"
@ -22,154 +22,158 @@ Self update\.
.P
Change the default branch to \fB$BRANCH\fR\. If \fBgit\-extras\.default\-branch\fR isn't set, \fBinit\.defaultBranch\fR is used instead\. If none of them are set it defaults to \fBmain\fR\.
.SH "COMMANDS"
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-abort(1)\fR Abort current git operation
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-alias(1)\fR Define, search and show aliases
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-archive\-file(1)\fR Export the current HEAD of the git repository to an archive
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-authors(1)\fR Generate authors report
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-browse\-ci(1)\fR \fIView the web page for the current repository\fR
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-browse(1)\fR \fIView the web page for the current repository\fR
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-brv(1)\fR List branches sorted by their last commit date
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-bulk(1)\fR Run git commands on multiple repositories
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-changelog(1)\fR Generate a changelog report
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-clear\-soft(1)\fR Soft clean up a repository
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-clear(1)\fR Rigorously clean up a repository
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-coauthor(1)\fR Add a co\-author to the last commit
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-commits\-since(1)\fR Show commit logs since some date
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-continue(1)\fR Continue current git operation
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-contrib(1)\fR Show user's contributions
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-count(1)\fR Show commit count
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-cp(1)\fR Copy a file keeping its history
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-create\-branch(1)\fR Create branches
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-delete\-branch(1)\fR Delete branches
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-delete\-merged\-branches(1)\fR Delete merged branches
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-delete\-squashed\-branches(1)\fR Delete branches that were squashed
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-delete\-submodule(1)\fR Delete submodules
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-delete\-tag(1)\fR Delete tags
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-delta(1)\fR Lists changed files
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-effort(1)\fR Show effort statistics on file(s)
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-feature(1)\fR Create/Merge feature branch
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-force\-clone(1)\fR overwrite local repositories with clone
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-fork(1)\fR Fork a repo on github
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-fresh\-branch(1)\fR Create fresh branches
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-get(1)\fR Clone a Git repository under a configured directory
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-gh\-pages(1)\fR Create the GitHub Pages branch
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-graft(1)\fR Merge and destroy a given branch
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-guilt(1)\fR calculate change between two revisions
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-ignore\-io(1)\fR Get sample gitignore file
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-ignore(1)\fR Add \.gitignore patterns
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-info(1)\fR Returns information on current repository
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-local\-commits(1)\fR List local commits
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-lock(1)\fR Lock a file excluded from version control
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-locked(1)\fR ls files that have been locked
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-magic(1)\fR Automate add/commit/push routines
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-merge\-into(1)\fR Merge one branch into another
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-merge\-repo(1)\fR Merge two repo histories
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-missing(1)\fR Show commits missing from another branch
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-mr(1)\fR Checks out a merge request locally
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-obliterate(1)\fR rewrite past commits to remove some files
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-paste(1)\fR Send patches to pastebin for chat conversations
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-pr(1)\fR Checks out a pull request locally
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-psykorebase(1)\fR Rebase a branch with a merge commit
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-pull\-request(1)\fR Create pull request for GitHub project
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-reauthor(1)\fR Rewrite history to change author's identity
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-rebase\-patch(1)\fR Rebases a patch
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-release(1)\fR Commit, tag and push changes to the repository
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-rename\-branch(1)\fR rename local branch and push to remote
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-rename\-file(1)\fR Rename a file or directory and ensure Git recognizes the change, regardless of filesystem case\-sensitivity\.
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-rename\-remote(1)\fR Rename a remote
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-rename\-tag(1)\fR Rename a tag
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-repl(1)\fR git read\-eval\-print\-loop
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-reset\-file(1)\fR Reset one file
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-root(1)\fR show path of root
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-scp(1)\fR Copy files to SSH compatible \fBgit\-remote\fR
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-sed(1)\fR replace patterns in git\-controlled files
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-setup(1)\fR Set up a git repository
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-show\-merged\-branches(1)\fR Show merged branches
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-show\-tree(1)\fR show branch tree of commit history
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-show\-unmerged\-branches(1)\fR Show unmerged branches
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-squash(1)\fR squash N last changes up to a ref'ed commit
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-stamp(1)\fR Stamp the last commit message
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-standup(1)\fR Recall the commit history
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-summary(1)\fR Show repository summary
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-sync(1)\fR Sync local branch with remote branch
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-touch(1)\fR Touch and add file to the index
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-undo(1)\fR Remove latest commits
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-unlock(1)\fR Unlock a file excluded from version control
.IP "\[ci]" 4
.IP "\(bu" 4
\fBgit\-unwip(1)\fR Undo a Work In Progress commit
.IP "\(bu" 4
\fBgit\-utimes(1)\fR Change files modification time to their last commit date
.IP "\(bu" 4
\fBgit\-wip(1)\fR Create a Work In Progress commit
.IP "" 0
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>

View file

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf8'>
<meta name='generator' content='Ronn-NG/v0.9.1 (http://github.com/apjanke/ronn-ng/tree/0.9.1)'>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<meta name='generator' content='Ronn-NG/v0.10.1 (http://github.com/apjanke/ronn-ng/tree/0.10.1)'>
<title>git-extras(1) - Awesome GIT utilities</title>
<style type='text/css' media='all'>
/* style: man */
@ -69,7 +69,7 @@
<li class='tr'>git-extras(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
@ -252,7 +252,11 @@
<li>
<strong><a class="man-ref" href="git-unlock.html">git-unlock<span class="s">(1)</span></a></strong> Unlock a file excluded from version control</li>
<li>
<strong><a class="man-ref" href="git-unwip.html">git-unwip<span class="s">(1)</span></a></strong> Undo a Work In Progress commit</li>
<li>
<strong><a class="man-ref" href="git-utimes.html">git-utimes<span class="s">(1)</span></a></strong> Change files modification time to their last commit date</li>
<li>
<strong><a class="man-ref" href="git-wip.html">git-wip<span class="s">(1)</span></a></strong> Create a Work In Progress commit</li>
</ul>
<h2 id="AUTHOR">AUTHOR</h2>
@ -269,7 +273,7 @@
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>September 2024</li>
<li class='tc'>May 2025</li>
<li class='tr'>git-extras(1)</li>
</ol>

View file

@ -100,7 +100,9 @@ git-extras(1) -- Awesome GIT utilities
- **git-touch(1)** Touch and add file to the index
- **git-undo(1)** Remove latest commits
- **git-unlock(1)** Unlock a file excluded from version control
- **git-unwip(1)** Undo a Work In Progress commit
- **git-utimes(1)** Change files modification time to their last commit date
- **git-wip(1)** Create a Work In Progress commit
## AUTHOR

View file

@ -50,7 +50,12 @@ This option can not be used together with \fB\-\-dedup\-by\-email\fR or \fB\-\-n
.P
\-\-output\-style <style>
.P
Summarizes the repository and print the output according to the specified style\. Styles: * \fBtabular\fR: Prints the summary in a tabular form having a header in the first line and the values in the second\. Column separator is a \fB|\fR sorrounded by at least one space on each side\. * \fBoneline\fR: Prints the summary in a single line\. Fields are separated by a \fB/\fR sorrounded by one space on each side\.
Summarizes the repository and print the output according to the specified style\. Styles:
.IP "\(bu" 4
\fBtabular\fR: Prints the summary in a tabular form having a header in the first line and the values in the second\. Column separator is a \fB|\fR surrounded by at least one space on each side\.
.IP "\(bu" 4
\fBoneline\fR: Prints the summary in a single line\. Fields are separated by a \fB/\fR surrounded by one space on each side\.
.IP "" 0
.P
Some information like the authors cannot be displayed in this mode\.
.SH "EXAMPLES"

View file

@ -1,8 +1,8 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf8'>
<meta name='generator' content='Ronn-NG/v0.9.1 (http://github.com/apjanke/ronn-ng/tree/0.9.1)'>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<meta name='generator' content='Ronn-NG/v0.10.1 (http://github.com/apjanke/ronn-ng/tree/0.10.1)'>
<title>git-summary(1) - Show repository summary</title>
<style type='text/css' media='all'>
/* style: man */
@ -128,12 +128,16 @@ $ git summary --dedup-by-email
<p>--output-style &lt;style&gt;</p>
<p>Summarizes the repository and print the output according to the specified style.
Styles:
* <code>tabular</code>: Prints the summary in a tabular form having a header in the
first line and the values in the second. Column separator is a <code>|</code>
sorrounded by at least one space on each side.
* <code>oneline</code>: Prints the summary in a single line. Fields are separated by a <code>/</code>
sorrounded by one space on each side.</p>
Styles:</p>
<ul>
<li>
<code>tabular</code>: Prints the summary in a tabular form having a header in the
first line and the values in the second. Column separator is a <code>|</code>
surrounded by at least one space on each side.</li>
<li>
<code>oneline</code>: Prints the summary in a single line. Fields are separated by a <code>/</code>
surrounded by one space on each side.</li>
</ul>
<p>Some information like the authors cannot be displayed in this mode.</p>
@ -225,7 +229,7 @@ git-extras / age: 13 years / last active: 7 hours ago / active on 807 days / com
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>February 2025</li>
<li class='tc'>May 2025</li>
<li class='tr'>git-summary(1)</li>
</ol>

View file

@ -56,9 +56,9 @@ Shows a summary of the repository or a path within it.
Styles:
* `tabular`: Prints the summary in a tabular form having a header in the
first line and the values in the second. Column separator is a `|`
sorrounded by at least one space on each side.
surrounded by at least one space on each side.
* `oneline`: Prints the summary in a single line. Fields are separated by a `/`
sorrounded by one space on each side.
surrounded by one space on each side.
Some information like the authors cannot be displayed in this mode.

31
man/git-unwip.1 Normal file
View file

@ -0,0 +1,31 @@
.\" generated with Ronn-NG/v0.10.1
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
.TH "GIT\-UNWIP" "1" "May 2025" "" "Git Extras"
.SH "NAME"
\fBgit\-unwip\fR \- Undo a Work In Progress commit
.SH "SYNOPSIS"
\fBgit\-unwip\fR
.SH "DESCRIPTION"
Undo a Work In Progress commit\.
.SH "OPTIONS"
None
.SH "EXAMPLES"
Create a WIP commit which stores all changes in the working directory\.
.IP "" 4
.nf
$ git wip
.fi
.IP "" 0
.P
Later on, undo the commit and continue making changes\.
.IP "" 4
.nf
$ git unwip
.fi
.IP "" 0
.SH "AUTHOR"
Written by Andrew Sullivan Cant <\fImail@andrewsullivancant\.ca\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>

122
man/git-unwip.html Normal file
View file

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<meta name='generator' content='Ronn-NG/v0.10.1 (http://github.com/apjanke/ronn-ng/tree/0.10.1)'>
<title>git-unwip(1) - Undo a Work In Progress commit</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#OPTIONS">OPTIONS</a>
<a href="#EXAMPLES">EXAMPLES</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>git-unwip(1)</li>
<li class='tc'>Git Extras</li>
<li class='tr'>git-unwip(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>git-unwip</code> - <span class="man-whatis">Undo a Work In Progress commit</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>git-unwip</code></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Undo a Work In Progress commit.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p>None</p>
<h2 id="EXAMPLES">EXAMPLES</h2>
<p>Create a WIP commit which stores all changes in the working directory.</p>
<pre><code>$ git wip
</code></pre>
<p>Later on, undo the commit and continue making changes.</p>
<pre><code>$ git unwip
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Andrew Sullivan Cant &lt;<a href="mailto:mail@andrewsullivancant.ca" data-bare-link="true">mail@andrewsullivancant.ca</a>&gt;</p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p>&lt;<a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a>&gt;</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p>&lt;<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>&gt;</p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>May 2025</li>
<li class='tr'>git-unwip(1)</li>
</ol>
</div>
</body>
</html>

36
man/git-unwip.md Normal file
View file

@ -0,0 +1,36 @@
git-unwip(1) -- Undo a Work In Progress commit
================================
## SYNOPSIS
`git-unwip`
## DESCRIPTION
Undo a Work In Progress commit.
## OPTIONS
None
## EXAMPLES
Create a WIP commit which stores all changes in the working directory.
$ git wip
Later on, undo the commit and continue making changes.
$ git unwip
## AUTHOR
Written by Andrew Sullivan Cant &lt;<mail@andrewsullivancant.ca>&gt;
## REPORTING BUGS
&lt;<https://github.com/tj/git-extras/issues>&gt;
## SEE ALSO
&lt;<https://github.com/tj/git-extras>&gt;

31
man/git-wip.1 Normal file
View file

@ -0,0 +1,31 @@
.\" generated with Ronn-NG/v0.10.1
.\" http://github.com/apjanke/ronn-ng/tree/0.10.1
.TH "GIT\-WIP" "1" "May 2025" "" "Git Extras"
.SH "NAME"
\fBgit\-wip\fR \- Create a Work In Progress commit
.SH "SYNOPSIS"
\fBgit\-wip\fR
.SH "DESCRIPTION"
Create a Work In Progress commit, include all files in the working directory\.
.SH "OPTIONS"
None
.SH "EXAMPLES"
Create a WIP commit which stores all changes in the working directory\.
.IP "" 4
.nf
$ git wip
.fi
.IP "" 0
.P
Later on, undo the commit and continue making changes\.
.IP "" 4
.nf
$ git unwip
.fi
.IP "" 0
.SH "AUTHOR"
Written by Andrew Sullivan Cant <\fImail@andrewsullivancant\.ca\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>

122
man/git-wip.html Normal file
View file

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<meta name='generator' content='Ronn-NG/v0.10.1 (http://github.com/apjanke/ronn-ng/tree/0.10.1)'>
<title>git-wip(1) - Create a Work In Progress commit</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#OPTIONS">OPTIONS</a>
<a href="#EXAMPLES">EXAMPLES</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>git-wip(1)</li>
<li class='tc'>Git Extras</li>
<li class='tr'>git-wip(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>git-wip</code> - <span class="man-whatis">Create a Work In Progress commit</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>git-wip</code></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Create a Work In Progress commit, include all files in the working directory.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p>None</p>
<h2 id="EXAMPLES">EXAMPLES</h2>
<p>Create a WIP commit which stores all changes in the working directory.</p>
<pre><code>$ git wip
</code></pre>
<p>Later on, undo the commit and continue making changes.</p>
<pre><code>$ git unwip
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Andrew Sullivan Cant &lt;<a href="mailto:mail@andrewsullivancant.ca" data-bare-link="true">mail@andrewsullivancant.ca</a>&gt;</p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p>&lt;<a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a>&gt;</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p>&lt;<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>&gt;</p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>May 2025</li>
<li class='tr'>git-wip(1)</li>
</ol>
</div>
</body>
</html>

36
man/git-wip.md Normal file
View file

@ -0,0 +1,36 @@
git-wip(1) -- Create a Work In Progress commit
================================
## SYNOPSIS
`git-wip`
## DESCRIPTION
Create a Work In Progress commit, include all files in the working directory.
## OPTIONS
None
## EXAMPLES
Create a WIP commit which stores all changes in the working directory.
$ git wip
Later on, undo the commit and continue making changes.
$ git unwip
## AUTHOR
Written by Andrew Sullivan Cant &lt;<mail@andrewsullivancant.ca>&gt;
## REPORTING BUGS
&lt;<https://github.com/tj/git-extras/issues>&gt;
## SEE ALSO
&lt;<https://github.com/tj/git-extras>&gt;

View file

@ -73,4 +73,6 @@ git-sync(1) git-sync
git-touch(1) git-touch
git-undo(1) git-undo
git-unlock(1) git-unlock
git-unwip(1) git-unwip
git-utimes(1) git-utimes
git-wip(1) git-wip

18
tests/poetry.lock generated
View file

@ -1,19 +1,21 @@
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
[[package]]
name = "codespell"
version = "2.2.0"
description = "Codespell"
version = "2.4.0"
description = "Fix common misspellings in text files"
optional = false
python-versions = ">=3.6"
python-versions = ">=3.8"
files = [
{file = "codespell-2.2.0-py3-none-any.whl", hash = "sha256:3cc3fcb484a8302683add19e7d11504c79c79b10d4ea0675409417a044b27374"},
{file = "codespell-2.2.0.tar.gz", hash = "sha256:3dce0cd1348d277f8d934d1d4dcbbf510f9ddfd1b9005e9b25fb983189962561"},
{file = "codespell-2.4.0-py3-none-any.whl", hash = "sha256:b4c5b779f747dd481587aeecb5773301183f52b94b96ed51a28126d0482eec1d"},
{file = "codespell-2.4.0.tar.gz", hash = "sha256:587d45b14707fb8ce51339ba4cce50ae0e98ce228ef61f3c5e160e34f681be58"},
]
[package.extras]
dev = ["check-manifest", "flake8", "pytest", "pytest-cov", "pytest-dependency"]
dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"]
hard-encoding-detection = ["chardet"]
toml = ["tomli"]
types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"]
[[package]]
name = "colorama"
@ -143,4 +145,4 @@ test = ["pytest"]
[metadata]
lock-version = "2.0"
python-versions = "^3.12"
content-hash = "e730a1e6e7fd2f51858e8c8cfa8b56d606eadd7a0a629ca8af078904721a5159"
content-hash = "fcf0ba3dd6655735da5c1e21ba32b94011d32bc5a30fbdaf31146d3820c1442a"

View file

@ -16,7 +16,7 @@ gitpython = "3.1.43"
testpath = "0.6.0"
[tool.poetry.group.dev.dependencies]
codespell = "2.2"
codespell = "2.4"
[tool.pytest.ini_options]
minversion = "7.4"