File git-extras-7.2.0.obscpio of Package git-extras

07070100000000000081A40000000000000000000000016627A28D00000129000000000000000000000000000000000000001F00000000git-extras-7.2.0/.editorconfigroot = true

[*]
indent_style = space
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[Makefile]
indent_style = tab

[*.patch]
trim_trailing_whitespace = false

[*.md]
trim_trailing_whitespace = false

[*.html]
trim_trailing_whitespace = false

[*.py]
indent_size = 4
07070100000001000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000001900000000git-extras-7.2.0/.github07070100000002000081A40000000000000000000000016627A28D00000005000000000000000000000000000000000000002700000000git-extras-7.2.0/.github/.ignore_wordsgool
07070100000003000081A40000000000000000000000016627A28D000001F0000000000000000000000000000000000000003200000000git-extras-7.2.0/.github/PULL_REQUEST_TEMPLATE.md<!--

Note

* Mark the PR as draft until it's ready to be reviewed.
* Please update the documentation to reflect the changes made in the PR.
* If the command is covered by tests under ./tests, please add/update tests for any changes unless you have a good reason. 
* Make a new commit to resolve conversations instead of `push -f`.
* To resolve merge conflicts, merge from the `main` branch instead of rebasing over `main`.
* Please wait for the reviewer to mark a conversation as resolved.

-->
07070100000004000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000002300000000git-extras-7.2.0/.github/workflows07070100000005000081A40000000000000000000000016627A28D000009CA000000000000000000000000000000000000002A00000000git-extras-7.2.0/.github/workflows/ci.ymlname: ci
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
jobs:
  lint:
    runs-on: 'ubuntu-latest'
    steps:
      - name: 'Get Changed Files'
        id: 'files'
        uses: 'masesgroup/retrieve-changed-files@v2'
        with:
          format: 'json'
        # a force push will cause the action above to fail. Don't do force push when people are
        # reviewing!
      - name: Check out code.
        uses: actions/checkout@v3
      - uses: 'actions/setup-go@v4'
        with:
          go-version: '1.20'
      - name: 'Check EditorConfig Lint'
        run: |
          sudo apt install -y jq
          go install 'github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@latest'

          readarray -t changed_files <<<"$(jq -r '.[]' <<<'${{ steps.files.outputs.added_modified }}')"
          ~/go/bin/editorconfig-checker ${changed_files[@]}

  typo:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code.
        uses: actions/checkout@v3
      - name: spell check
        run: |
          pip install codespell==2.2
          git grep --cached -l '' | grep -v -e 'History\.md' -e 'AUTHORS' -e 'man/.*\.1' -e 'man/.*\.html' | xargs codespell --ignore-words=.github/.ignore_words

  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Set up Python 3.11
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install pytest==7.4.0 GitPython==3.1.40 testpath==0.6.0
      - name: Unit test
        run: make test

  build:
    strategy:
      fail-fast: false
      matrix:
        platform:
          - ubuntu-latest
          - macos-latest
    runs-on: ${{ matrix.platform }}
    steps:
      - name: Check out code.
        uses: actions/checkout@v3
      - name: Linux Install
        if: matrix.platform == 'ubuntu-latest'
        run: |
          sudo apt-get install -y bsdmainutils
      - name: Script
        run: |
          ./check_integrity.sh $(find bin | cut -b 5- | xargs)
      - name: Brew release
        if: matrix.platform == 'macos-latest'
        run: |
          mkdir ../release && git archive --format=tar.gz HEAD > ../release/git-extras-release.tar.gz
          cd ../release
          tar -xzf git-extras-release.tar.gz && make PREFIX=$(pwd) INSTALL_VIA=brew
          ./bin/git-extras update | grep "brew upgrade git-extras"
07070100000006000081A40000000000000000000000016627A28D00000014000000000000000000000000000000000000001C00000000git-extras-7.2.0/.gitignore.venv/
__pycache__/
07070100000007000081A40000000000000000000000016627A28D00000056000000000000000000000000000000000000001D00000000git-extras-7.2.0/.pytest.ini[pytest]
minversion = 7.4
addopts = -ra -q
testpaths = tests
faulthandler_timeout = 5
07070100000008000081A40000000000000000000000016627A28D00001151000000000000000000000000000000000000001900000000git-extras-7.2.0/AUTHORSgit-extras is written and maintained by TJ Holowaychuk and
various contributors:

Development Lead
````````````````
- TJ Holowaychuk <tj@vision-media.ca>

Maintainers
```````````
- Hemanth.HM <hemanth.hm@gmail.com>
- Nimit Kalra <me@nimit.io>
- Nicolai Skogheim <nicolai.skogheim@gmail.com>
- spacewander <spacewanderlzx@gmail.com>
- Edwin Kofler <edwin@kofler.dev>
- Leroy <vanpipy@gmail.com>

Patches and Suggestions
```````````````````````
- Jonhnny Weslley
- Tobias Fendin
- LeeW
- timfeirg
- Niklas Schlimm
- nickl-
- CJ
- Paul Wise
- Damien Tardy-Panis
- Mark Eissler
- Yuriy VG
- Leila Muhtasib
- Richard Fearn
- Bill Wood
- Jesús Espino
- Rémy HUBSCHER
- go2null
- Andrew Janke
- David Baumgold
- Jan Schulz
- Kenneth Reitz
- Mark Pitman
- Peter Benjamin
- Günther Grill
- Luke Childs
- Sasha Khamkov
- equt
- vyas
- Don Harper
- Robin Winslow
- Ross Smith II
- Yi EungJun
- grindhold
- Aggelos Orfanakos
- Camille Reynders
- Carlos Prado
- Chris Hall
- Damian Krzeminski
- NANRI
- Alexander Krasnukhin
- Phally
- Rico Sta. Cruz
- Takuma Yamaguchi
- thomas menzel
- vr8ce
- Brian J Brennan
- Dominik Gedon
- Hogan Long
- Ivan Malopinsky
- Jonathan "Duke" Leto
- Julio Napurí
- Justin Dugger
- Nils Winkler
- Philipp Klose
- Richard Russon
- Sam Bostock
- Vladimir Jimenez
- gisphm
- jacobherrington
- overengineer
- phigoro
- wooorm
- Alexis GRIMALDI
- Allan Odgaard
- Andre Cerqueira
- Austin Ziegler
- Beth Skurrie
- Brice Dutheil
- Curtis McEnroe
- David Rogers
- Devin Withers
- Domenico Rotiroti
- Evan Grim
- Florian H
- Gert Van Gool
- Guillaume Seren
- Hozefa
- Igor Ostapenko
- Jean Jordaan
- Joshua Li
- Justin Guenther
- Kylie McClain
- Marc Harter
- Matiss
- Nate Jones
- Newell Zhu
- Patryk Małek
- Paul Schreiber
- Richard Littauer
- Tjaart van der Walt
- Tom Vincent
- Wil Moore III
- William Montgomery
- Ye Lin Aung
- luozexuan
- roxchgt
- soffolk
- 0xflotus
- Abdullah
- Adam Parkin
- Adriaan Zonnenberg
- Akim Demaille
- Alessandro Pagiaro
- Alex McHale
- Aloxaf
- Amir Tocker
- Ammar Najjar
- Amory Meltzer
- Andreas Duering
- Andrei Petcu
- Andrew Griffiths
- Andrew Marcinkevičius
- Andrew Starr-Bochicchio
- Andrey Elizarov
- Angel Aguilera
- Antoine Beaupré
- Aurélien Scoubeau
- Balazs Nadasdi
- Ben Parnell
- Beni Ben Zikry
- Brandon Zylstra
- Brian Goad
- Brian Murrell
- Bruno Sutic
- Caleb Maclennan
- Carl Casbolt
- Carlos Rodríguez
- Christophe Badoit
- Ciro Nunes
- CleanMachine1
- Craig MacGregor
- Dan Goodliffe
- Dan Jackson
- Dan Kilman
- Daniel Bruder
- Daniel Lublin
- Daniel Schildt
- Dave James Miller
- David Hartmann
- Dominic Barnes
- Dung Quang
- Edward Betts
- Eli Schwartz
- Emil Kjelsrud
- François M
- George Crabtree
- Gerrit-K
- Greg Allen
- Guillermo Rauch
- Gunnlaugur Thor Briem
- Hasse Ramlev Hansen
- Heiko Becker
- Isaac Mungai
- J.C. Yamokoski
- Jack O. Wasey
- James Manning
- James Zhu
- Jan Krueger
- Jarod Stewart
- Jason Young
- Jens K. Mueller
- Jeremy Lin
- Jesse Sipprell
- Jianjin Fan
- Jobin Kurian
- Johannes Ewald
- John Evans
- John Hoffmann
- Jon Ander Peñalba
- Josh McKinney
- Joshua Appelman
- José María Gutiérrez @TheTechOddBug
- Katrin Leinweber
- Kevin Woo
- Konstantin Schukraft
- Kurban Mallachiev
- Leandro López
- Lone
- Luis Miguel Hernanz
- Maarten Winter
- Marco Glasbergen
- Matan Rosenberg
- Mathieu D. (MatToufoutu)
- Matt
- Matt Colyer
- Matthew Avant
- Michael Komitee
- Michael Matuzak
- Michele Bologna
- Montak Oleg
- Moritz Grauel
- Nate Eagleson
- Nate Fischer
- Nathan Rajlich
- Nick Campbell
- Nick Payne
- Nicolas Kosinski
- Niklas Fiekas
- Oliver Kopp
- Orestis
- Peter Bittner
- Piotr Górski
- Prayag Verma
- Przemek Kitszel
- R. Martinho Fernandes
- Raphael Fleischlin
- Rasmus Wriedt Larsen
- René
- Riceball LEE
- Rob Kennedy
- Robin von Bülow
- Ryan Bohn
- Sachin Gupta
- Sam Thursfield
- Sandro
- Sascha Andres
- SchleimKeim
- Sean Molenaar
- Sebastian Gniazdowski
- Sebastián Mancilla
- Simon Tate
- Stefan VanBuren
- Stephen Mathieson
- Steve Mao
- Stu Feldt
- SukkaW
- Tim Preston
- Timothy Hwang
- Tin Lai
- Todd Wolfson
- Tom Andrade
- Tom Ashworth
- Tony
- TweeKane
- Valérian Galliat
- Vitaly Chikunov
- Wei Lee
- Wei Wu
- Xavier Krantz
- Xiaopei Li
- Zeeshan Ahmed
- ax1036
- creynders
- dead-horse
- eszabpt
- fengkx
- jykntr
- kang
- meza
- neydroid
- nulltask
- sgleizes
- tfendin
- tiemonl
- zentarul
- zeroDivisible
- zhiyanfoo
- Áron Hoffmann
- Étienne BERSAC
- ☃ pitr
- 单元源
07070100000009000081A40000000000000000000000016627A28D000005D1000000000000000000000000000000000000002100000000git-extras-7.2.0/CONTRIBUTING.md# Contributing

Thanks for contributing! Please read this document before you make a PR.

## Supported Platforms

Any changes must support the following platforms:

- macOS
- Linux
- OpenBSD (You may need to browse their man page)

Your change must also be compatible with the dependency constraints that we specify in [Installation](./Installation.md). If you aren't sure if a feature is compatible, check the manual or release notes. For example, the Bash changelog is [here](https://git.savannah.gnu.org/cgit/bash.git/tree/NEWS?h=devel).

If you aren't able to test your new command on a platform, make that clear in your PR; someone else may be able to test it on their system.

## Adding a New Command

Let's say you wish to add a new command. Assuming your new command is named `foo`:

1. Write a bash script under `./bin` called `git-foo`. The script should be started with `#!/usr/bin/env bash`.
2. Read `./man/Readme.md` and write documentation for `git-foo`.
3. Don't forget to introduce it in `Commands.md`.
4. Update `./etc/git-extras-completion.zsh`. Just follow existing code.
5. (Optional) Update `./etc/bash_completion.sh`.
6. (Optional) Update `./etc/git-extras.fish`.
7. (Optional) Add a test under `./tests`.
8. Run `./check_integrity.sh foo` to check if all done.

You are welcome to open up an issue to discuss new commands or features before opening a pull request.

## Submitting a pull request

Please follow the suggestion in `./.github/PULL_REQUEST_TEMPLATE.md`.
0707010000000A000081A40000000000000000000000016627A28D00009A49000000000000000000000000000000000000001D00000000git-extras-7.2.0/Commands.md
 - [`git abort`](#git-abort)
 - [`git alias`](#git-alias)
 - [`git archive-file`](#git-archive-file)
 - [`git authors`](#git-authors)
 - [`git browse`](#git-browse)
 - [`git browse-ci`](#git-browse-ci)
 - [`git bulk`](#git-bulk)
 - [`git brv`](#git-brv)
 - [`git changelog`](#git-changelog)
 - [`git clear`](#git-clear)
 - [`git clear-soft`](#git-clear-soft)
 - [`git coauthor`](#git-coauthor)
 - [`git commits-since`](#git-commits-since)
 - [`git contrib`](#git-contrib)
 - [`git count`](#git-count)
 - [`git cp`](#git-cp)
 - [`git create-branch`](#git-create-branch)
 - [`git delete-branch`](#git-delete-branch)
 - [`git delete-merged-branches`](#git-delete-merged-branches)
 - [`git delete-squashed-branches`](#git-delete-squashed-branches)
 - [`git delete-submodule`](#git-delete-submodule)
 - [`git delete-tag`](#git-delete-tag)
 - [`git delta`](#git-delta)
 - [`git effort`](#git-effort)
 - [`git extras`](#git-extras)
 - [`git feature`](#git-feature)
 - [`git force-clone`](#git-force-clone)
 - [`git fork`](#git-fork)
 - [`git fresh-branch`](#git-fresh-branch)
 - [`git get`](#git-get)
 - [`git gh-pages`](#git-gh-pages)
 - [`git graft`](#git-graft)
 - [`git guilt`](#git-guilt)
 - [`git ignore`](#git-ignore)
 - [`git ignore-io`](#git-ignore-io)
 - [`git info`](#git-info)
 - [`git local-commits`](#git-local-commits)
 - [`git lock`](#git-lock)
 - [`git locked`](#git-locked)
 - [`git magic`](#git-magic)
 - [`git merge-into`](#git-merge-into)
 - [`git merge-repo`](#git-merge-repo)
 - [`git missing`](#git-missing)
 - [`git mr`](#git-mr)
 - [`git obliterate`](#git-obliterate)
 - [`git paste`](#git-paste)
 - [`git pr`](#git-pr)
 - [`git psykorebase`](#git-psykorebase)
 - [`git pull-request`](#git-pull-request)
 - [`git reauthor`](#git-reauthor)
 - [`git rebase-patch`](#git-rebase-patch)
 - [`git release`](#git-release)
 - [`git rename-branch`](#git-rename-branch)
 - [`git rename-tag`](#git-rename-tag)
 - [`git rename-remote`](#git-rename-remote)
 - [`git repl`](#git-repl)
 - [`git reset-file`](#git-reset-file)
 - [`git root`](#git-root)
 - [`git rscp`](#git-scp)
 - [`git scp`](#git-scp)
 - [`git sed`](#git-sed)
 - [`git setup`](#git-setup)
 - [`git show-merged-branches`](#git-show-merged-branches)
 - [`git show-tree`](#git-show-tree)
 - [`git show-unmerged-branches`](#git-show-unmerged-branches)
 - [`git stamp`](#git-stamp)
 - [`git squash`](#git-squash)
 - [`git standup`](#git-standup)
 - [`git summary`](#git-summary)
 - [`git sync`](#git-sync)
 - [`git touch`](#git-touch)
 - [`git undo`](#git-undo)
 - [`git unlock`](#git-unlock)
 - [`git utimes`](#git-utimes)

## git extras

The main `git-extras` command.

Output the current `--version`:

```bash
$ git extras --version
```

List available commands:

```bash
$ git extras --help
```

Update to the latest `git-extras`:

```bash
$ git extras update
```
## git gh-pages

Sets up the `gh-pages` branch.  (See [GitHub Pages](https://pages.github.com/) documentation.)

## git feature

Create/Merge the given feature branch `name`:

```bash
$ git feature dependencies
```

To Setup a remote tracking branch:

```bash
$ git feature dependencies -r upstream
```
_Note_: If no remote name is passed with the `-r` option, it will push to _origin_.

Afterwards, the same command will check it out:

```bash
$ git checkout master
$ git feature dependencies
```

When finished, we can `feature finish` to merge it into the current branch:

```bash
$ git checkout master
$ git feature finish dependencies
```

_Note_: If a remote is setup to track the branch, it will be deleted.

## git contrib

Output `author`'s contributions to a project:

```bash
$ git contrib visionmedia
visionmedia (18):
  Export STATUS_CODES
  Replaced several Array.prototype.slice.call() calls with Array.prototype.unshift.call()
  Moved help msg to node-repl
  Added multiple arg support for sys.puts(), print(), etc.
  Fix stack output on socket error
  ...
```

## git summary

Outputs a repo or path summary:

```bash
$ git summary

project     : git-extras
repo age    : 10 months ago
branch      : master
last active : 3 weeks ago
active on   : 93 days
commits     : 163
files       : 93
uncommitted : 3
authors     :
   97   Tj Holowaychuk          59.5%
   37   Jonhnny Weslley         22.7%
    8   Kenneth Reitz           4.9%
    5   Aggelos Orfanakos       3.1%
    3   Jonathan "Duke" Leto    1.8%
    2   Gert Van Gool           1.2%
    2   Domenico Rotiroti       1.2%
    2   Devin Withers           1.2%
    2   TJ Holowaychuk          1.2%
    1   Nick Campbell           0.6%
    1   Alex McHale             0.6%
    1   Jason Young             0.6%
    1   Jens K. Mueller         0.6%
    1   Guillermo Rauch         0.6%
```

This command can also take a *committish*, and will print a summary for commits in
the committish range:

```bash
$ git summary v42..
```

This command can also take an options `--line`, will print a summary by lines

```bash
$ git summary --line

project  : git-extras
 lines    : 8420
 authors  :
 2905 Tj Holowaychuk            34.5%
 1901 Jonhnny Weslley           22.6%
 1474 nickl-                    17.5%
  653 Leila Muhtasib            7.8%
  275 Tony                      3.3%
  267 Jesús Espino             3.2%
  199 Philipp Klose             2.4%
  180 Michael Komitee           2.1%
  178 Tom Vincent               2.1%
  119 TJ Holowaychuk            1.4%
  114 Damian Krzeminski         1.4%
   66 Kenneth Reitz             0.8%
   22 Not Committed Yet         0.3%
   17 David Baumgold            0.2%
   12 Brian J Brennan           0.1%
    6 Leandro López            0.1%
    6 Jan Krueger               0.1%
    6 Gunnlaugur Thor Briem     0.1%
    3 Hogan Long                0.0%
    3 Curtis McEnroe            0.0%
    3 Alex McHale               0.0%
    3 Aggelos Orfanakos         0.0%
    2 Phally                    0.0%
    2 NANRI                     0.0%
    2 Moritz Grauel             0.0%
    1 Jean Jordaan              0.0%
    1 Daniel Schildt            0.0%
```

The `--line` option can also take a path, which will print a filtered summary for that folder or file.

The option `--output-style` tries to put as much summary information of the repo into defined styled way as possible.
This is how the `tebular` output style and `oneline` output style look like

```bash
$ git summary --output-style tabular
# Repo     | Age       | Last active | Active on | Commits | Uncommitted | Branch
git-extras | 13 years  | 7 hours ago | 807 days  | 1703    | 3           | master

$ git summary --output-style oneline
git-extras / age: 13 years / last active: 7 hours ago / active on 807 days / commits: 1703 / uncommitted: 3 / branch: master
```

## git effort

  Displays "effort" statistics, currently just the number of commits per file, showing highlighting where the most activity is. The "active days" column is the total number of days which contributed modifications to this file.

```
node (master): git effort --above 15 {src,lib}/*
```

  If you wish to ignore files with commits `<=` a value you may use `--above`:

```
$ git effort --above 5
```

  If you wish to see only the commits in the last month you may use `--since` (it supports the same syntax like `git log --since`):

```
 $ git effort -- --since='last month'
```

  By default `git ls-files` is used, however you may pass one or more files to `git-effort(1)`, for example:

```
$ git effort bin/* lib/*
```

## git bulk

`git bulk` adds convenient support for operations that you want to execute on multiple git repositories.

  * simply register workspaces that contain multiple git repos in their directory structure
  * run any git command on the repositories of the registered workspaces in one command to `git bulk`
  * use the "guarded mode" to check on each execution

```bash
usage: git bulk [-g] ([-a]|[-w <ws-name>]) <git command>
       git bulk --addworkspace <ws-name> <ws-root-directory> (--from <URL or file>)
       git bulk --removeworkspace <ws-name>
       git bulk --addcurrent <ws-name>
       git bulk --purge
       git bulk --listall
```

  Register a workspace so that `git bulk` knows about it (notice that <ws-root-directory> must be absolute path):

```bash
$ git bulk --addworkspace personal ~/workspaces/personal
```
  With option `--from` the URL to a single repository or a file containing multiple URLs can be added and they will be cloned directly into the workspace. Suitable for the initial setup of a multi-repo project.

```bash
$ git bulk --addworkspace projectX ~/workspaces/projectx --from https://github.com/x/project-x.git

# OR with a file containing many repositories on each line:
$ git bulk --addworkspace projectX ~/workspaces/projectx --from ~/workspaces/repositories.txt
```
with `repositories.txt` be like:
```
https://github.com/x/project-x-1.git
https://github.com/x/project-x-2.git
https://github.com/x/project-x-3.git
```

  Register the current directory as a workspace to `git bulk`

```bash
$ git bulk --addcurrent personal
```

  List all registered workspaces:

```bash
$ git bulk --listall
bulkworkspaces.personal /Users/niklasschlimm/workspaces/personal

```

  Run a git command on the repositories of the current workspace:

```bash
$ git bulk fetch
```

![fetchdemo](https://cloud.githubusercontent.com/assets/876604/23709805/e8178406-041a-11e7-9a0c-01de5fbf8944.png)

  Run a git command on one specific workspace and its repositories:

```bash
$ git bulk -w personal fetch
```

  Run a git command on all workspaces and their repositories:

```bash
$ git bulk -a fetch
```

  Run a git command but ask user for confirmation on every execution (guarded mode):

```bash
$ git bulk -g fetch
```

  Remove a registered workspace:

```bash
$ git bulk --removeworkspace personal
```
  Remove all registered workspaces:

```bash
$ git bulk --purge
```

## git brv

Pretty listing of branches sorted by the date of their last commit.

```bash
$ git brv
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
2020-01-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git-sed-pathspec
```

When your repo has many branches, it can be more convenient to see this list in reverse. This can be set as the default by setting the git-extras.brv.reverse git option to true.

```bash
$ git brv --reverse
2020-01-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git-sed-pathspec
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
```

## git repl

Git read-eval-print-loop. Lets you run `git` commands without typing 'git'.

Commands can be prefixed with an exclamation mark (!) to be interpreted as
a regular command.

Type `exit` or `quit` to end the repl session.

```bash
$ git repl
git version 2.9.2
git-extras version 3.0.0
type 'ls' to ls files below current directory,
'!command' to execute any command or just 'subcommand' to execute any git subcommand

git (master)> ls-files
History.md
Makefile
Readme.md
bin/git-changelog
bin/git-count
bin/git-delete-branch
bin/git-delete-tag
bin/git-ignore
bin/git-release

git (master)> !echo Straight from the shell!
Straight from the shell!

git (master)> quit
```

## git coauthor

Add a co-author to the last commit

```bash
$ git coauthor user user@email.com

[master b62ceae] Add documentation files
 Date: Sat Aug 17 17:33:53 2019 -0500
 2 files changed, 145 insertions(+), 0 deletions(-)
 create mode 100644 README.md
 create mode 100644 CONTRIBUTING.md
 
 $ git log -1
 
commit b62ceae2685e6ece071f3c3754e9b77fd0a35c88 (HEAD -> master)
Author: user person <userperson@email.com>
Date:   Sat Aug 17 17:33:53 2019 -0500

    Add documentation files

    Co-authored-by: user <user@email.com>
```

## git commits-since

List commits since `date` (defaults to "last week"):

```bash
$ git commits-since
... changes since last week
TJ Holowaychuk - Fixed readme
TJ Holowaychuk - Added git-repl
TJ Holowaychuk - Added git-delete-tag
TJ Holowaychuk - Added git-delete-branch

$ git commits-since yesterday
... changes since yesterday
TJ Holowaychuk - Fixed readme
```

## git count

Output commit count:

```bash
$ git count

total 1844
```

Output detailed commit count:

```bash
$ git count --all

visionmedia (1285)
Tj Holowaychuk (430)
Aaron Heckmann (48)
csausdev (34)
ciaranj (26)
Guillermo Rauch (6)
Brian McKinney (2)
Nick Poulden (2)
Benny Wong (2)
Justin Lilly (1)
isaacs (1)
Adam Sanderson (1)
Viktor Kelemen (1)
Gregory Ritter (1)
Greg Ritter (1)
ewoudj (1)
James Herdman (1)
Matt Colyer (1)

total 1844
```

## git fork

Fork the given github &lt;repo&gt;. Like clone but forks first.

```Shell
$ git fork https://github.com/LearnBoost/expect.js
```

or just:

```Shell
$ git fork LearnBoost/expect.js
```

Does the following:
- forks the repo (prompts for github username and pass)
- clones the repo into the current directory
- adds the original repo as a remote so can track upstream changes
- all remotes refs use git over ssh if configured, otherwise https will be used


```Shell
$ cd expect.js && git remote -v
origin          git@github.com:<user>/expect.js (fetch)
origin          git@github.com:<user>/expect.js (push)
upstream        git@github.com:LearnBoost/expect.js (fetch)
upstream        git@github.com:LearnBoost/expect.js (push)
```

## git force-clone

If the clone target directory exists and is a git repository, reset its
contents to a clone of the remote.

``` bash
$ git force-clone [-b {branch_name}] {remote_url} {destination_path}
$ git force-clone -b master https://github.com/tj/git-extras ./target-directory
```

**CAUTION**: If the repository exists, this will destroy *all* local changes
to the repository - changed files will be reset and local branches will be
removed.

[More information](man/git-force-clone.md).

## git release

Release commit with the given &lt;tag&gt; and other options:

```bash
$ git release 0.1.0
```

If you are using [semver](https://semver.org) in your project, you could also use the command below:
(Run `git help release` for more information)

```bash
$ git release --semver major/minor/patch
```

Does the following:

  - Executes _.git/hooks/pre-release.sh_ (if present), passing it the given tag and remain arguments
  - Commits changes (to changelog etc) with message "Release &lt;tag&gt;"
  - Tags with the given &lt;tag&gt;
  - Push the branch / tags
  - Executes _.git/hooks/post-release.sh_ (if present), passing it the given tag and remain arguments


## git rename-branch

Rename a branch locally, and sync to remote via `git push`.

```
# renames any branch
$ git rename-branch old-name new-name

# renames current branch
$ git rename-branch new-name
```

## git rename-tag

Rename a tag (locally and remotely).
```
$ git tag test
$ git push --tags
Total 0 (delta 0), reused 0 (delta 0)
To git@myserver.com:myuser/myrepository.git
    * [new tag]         test -> test
$ git tag
test
$ git rename-tag test test2
Deleted tag 'test' (was 1111111)
Total 0 (delta 0), reused 0 (delta 0)
To git@myserver.com:myuser/myrepository.git
    * [new tag]         test2 -> test2
remote: warning: Deleting a non-existent ref.
To git@myserver.com:myuser/myrepository.git
    - [deleted]         refs/tag/test
$ git tag
test2
```

## git rename-remote

Rename a git remote regardless of name conflict, and then list current git remotes.
```
$ git remote -v
origin	git@myserver.com:myuser/foo.git (fetch)
origin	git@myserver.com:myuser/foo.git (push)
upstream	git@myserver.com:myuser/bar.git (fetch)
upstream	git@myserver.com:myuser/bar.git (push)
$ git-rename-remote upstream origin
origin	git@myserver.com:myuser/bar.git (fetch)
origin	git@myserver.com:myuser/bar.git (push)
```

## git reauthor

Rewrite history to change author's identity.

Replace the personal email and name of Jack to his work ones
```bash
$ git reauthor --old-email jack@perso.me --correct-email jack@work.com --correct-name 'Jack Foobar'
```

Replace the email and name of Jack to the ones defined in the Git config
```bash
$ git reauthor --old-email jack@perso.me --use-config
```

Replace only the email of Jack (keep the name already used)
```bash
$ git reauthor --old-email jack@perso --correct-email jack@perso.me
```

Change only the committer email of Jack (keep the author email already used)
```bash
$ git reauthor --old-email jack@perso.me --correct-email jack@work.com --type committer
```

Set Jack's identity as the only one of the whole repository
```bash
$ git reauthor --all --correct-email jack@perso.me --correct-name Jack
```

Set Jack as the only committer of the whole repository (keeps authors)
```bash
$ git reauthor --all --correct-email jack@perso.me --correct-name Jack --type committer
```


## git alias

Define, search and show aliases.

Define a new alias:

```bash
$ git alias last "cat-file commit HEAD"
```

Search for aliases that match a pattern (one argument):

```bash
$ git alias ^la
last = cat-file commit HEAD
```

Show all aliases (no arguments):

```bash
$ git alias
s = status
amend = commit --amend
rank = shortlog -sn --no-merges
whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
whois = !sh -c 'git log -i -1 --pretty="format:%an <%ae>
```

## git ignore

Too lazy to open up `.gitignore`?  Me too!

```bash
$ git ignore build "*.o" "*.log"
... added 'build'
... added '*.o'
... added '*.log'
```

Without any patterns, `git-ignore` displays currently ignored patterns in both your global and your local `.gitignore` files:

```bash
$ git ignore
Global gitignore: /Users/foo/.gitignore_global
*~
.metadata
---------------------------------
Local gitignore: .gitignore
build
*.o
*.log
```

To show just the global or just the local file's contents, you can use the following optional parameters:

* `-g` or `--global` to show just the global file
* `-l` or `--local` to show just the local file
* `-p` or `--private` to show just the repository's file

```bash
$ git ignore -g
Global gitignore: /Users/foo/.gitignore_global
*~
.metadata
```

```bash
$ git ignore -l
Local gitignore: .gitignore
build
*.o
*.log
```

## git ignore-io

Generate sample gitignore file from [gitignore.io](https://www.toptal.com/developers/gitignore)

Without option, `git ignore-io <type>` shows the sample gitignore of specified types on screen.

```bash
$ git ignore-io vim

    # Created by https://www.toptal.com/developers/gitignore/api/vim

    ### Vim ###
    [._]*.s[a-w][a-z]
    [._]s[a-w][a-z]
    *.un~
    Session.vim
    .netrwhist
    *~
```

To export it to `.gitignore` file you can use the following options:

* `-a` or `--append` to append the result to `.gitignore`
* `-r` or `--replace` to export `.gitignore` with the result

```bash
$ git ignore-io vim python
```

For efficiency, `git ignore-io` store all available types at `~/.gi_list`.
To list all the available types:

* `-l` or `-L` : These two options will show the list in different format. Just try it.

You can also search type from the list by:

* `-s <word>` or `--search <word>`

```bash
$ git ignore-io -s ja

    django
    jabref
    java
    ninja
```


## git info

Show information about the repo:

```bash
$ git info

    ## Remote URLs:

    origin              git@github.com:sampleAuthor/git-extras.git (fetch)
    origin              git@github.com:sampleAuthor/git-extras.git (push)

    ## Remote Branches:

    origin/HEAD -> origin/master
    origin/myBranch

    ## Local Branches:

    myBranch
    * master

    ## Submodule(s):

      a234567 path2submodule1/submodule1 (branch/tag)
    + b234567 path2submodule2/submodule2 (branch/tag)
    - c234567 path2submodule3/submodule3 (branch/tag)
      e234567 path2submodule4/submodule4 (branch/tag)

    ## Most Recent Commit:

    commit e3952df2c172c6f3eb533d8d0b1a6c77250769a7
    Author: Sample Author <sampleAuthor@gmail.com>

    Added git-info command.

    ## Configuration (.git/config):

    color.diff=auto
    color.status=auto
    color.branch=auto
    user.name=Sample Author
    user.email=sampleAuthor@gmail.com
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true
    core.ignorecase=true
    remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
    remote.origin.url=git@github.com:mub/git-extras.git
    branch.master.remote=origin
    branch.master.merge=refs/heads/master

```

If you wish to omit the config section, you may use `--no-config`:

```bash
$ git info --no-config
```

## git cp

Copy a file to another one keeping its history and allowing for merge conflicts handling.

```bash
$ git cp README.md README.rst
```

## git create-branch

Create local branch `name`:

```bash
$ git create-branch development
```

Create local branch `name` and setup a remote tracking branch in `origin`:

```bash
$ git create-branch -r development
```

Create local branch `name` and setup a remote tracking branch in `upstream`:

```bash
$ git create-branch -r upstream development
```

## git delete-branch

Delete local and remote branch `name`:

```bash
$ git delete-branch integration
```

## git delete-submodule

Delete submodule `name`:

```bash
$ git delete-submodule lib/foo
```

## git delete-tag

Delete local and remote tag `name`:

```bash
$ git delete-tag 0.0.1
```

## git delete-merged-branches

Deletes branches that are listed in `git branch --merged`.

```bash
$ git delete-merged-branches
Deleted feature/themes (was c029ab3).
Deleted feature/live_preview (was a81b002).
Deleted feature/dashboard (was 923befa).
...
```

## git delete-squashed-branches

Deletes branches that have been "squashed-merged" into a specified branch; this branch will be checked out as a side-effect. If no branch is specified, then it will default to the current checked out branch.

```bash
$ (feature-branch) git delete-squashed-branches main
Deleted branch dependabot/bundler/kramdown-2.3.1 (was 1d3fb00).
Deleted branch dependabot/bundler/rexml-3.2.5 (was a7e4052).
$ (main) git ...
```

## git fresh-branch

Create empty local branch `docs`:

```bash
$ git fresh-branch docs
```

## git get

Clone repository into a subdirectory of the configured path, `"$HOME/some-dir"`:

```bash
$ git config --global --add git-extras.get.clone-path "$HOME/some-dir"
$ git get 'https://github.com/hyperupcall/bake'
```

## git guilt

Calculate the change in blame between two revisions

```bash
# Find blame delta over the last three weeks
$ git guilt `git log --until="3 weeks ago" --format="%H" -n 1` HEAD
Paul Schreiber                +++++++++++++++++++++++++++++++++++++++++++++(349)
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(113)
Mark Eissler                  ++++++++++++++++++++++++++
CJ                            +++++
nickl-                        -
Jesse Sipprell                -
Evan Grim                     -
Ben Parnell                   -
hemanth.hm                    --
```

## git merge-into

Merge `src` branch into `dest`, and keep yourself on current branch. If `src` branch not given, it will merge current one to `dest`:

```bash
$ git merge-into [src] dest
```

## git graft

Merge commits from `src-branch` into `dest-branch`.

```bash
$ git graft new_feature master
```

## git squash

Merge commits from `src-branch` into the current branch as a _single_ commit.
Also works if a commit reference from the current branch is provided.
When `[msg]` is given `git-commit(1)` will be invoked with that message. This is
useful when small individual commits within a topic branch are irrelevant and
you want to consider the topic as a single change.

```bash
$ git squash fixed-cursor-styling
$ git squash fixed-cursor-styling "Fixed cursor styling"
$ git squash 95b7c52
$ git squash HEAD~3
$ git squash HEAD~3 "Work on a feature"
```

## git authors

Populates the file matching `authors|contributors -i` with the authors of commits, according to the number of commits per author.

See the ["MAPPING AUTHORS" section](https://git-scm.com/docs/git-shortlog#_mapping_authors) of **git-shortlog**(1) to coalesce together commits by the same person.

Updating AUTHORS file:

```bash
$ git authors && cat AUTHORS

TJ Holowaychuk <tj@vision-media.ca>
hemanth.hm <hemanth.hm@gmail.com>
Jonhnny Weslley <jw@jonhnnyweslley.net>
nickl- <github@jigsoft.co.za>
Leila Muhtasib <muhtasib@gmail.com>
```

Listing authors:

```bash
$ git authors --list

TJ Holowaychuk <tj@vision-media.ca>
hemanth.hm <hemanth.hm@gmail.com>
Jonhnny Weslley <jw@jonhnnyweslley.net>
nickl- <github@jigsoft.co.za>
Leila Muhtasib <muhtasib@gmail.com>
```

Listing authors without email:

```bash
$ git authors --list --no-email

TJ Holowaychuk
hemanth.hm
Jonhnny Weslley
nickl-
Leila Muhtasib
```

## git changelog

Generates a changelog from git(1) tags (annotated or lightweight) and commit messages. Existing changelog files with filenames that begin with _Change_ or _History_ will be identified automatically with a case insensitive match pattern and existing content will be appended to the new output generated--this behavior can be disabled by specifying the prune option (-p|--prune-old). The generated file will be opened in **$EDITOR** when set.

If no tags exist, then all commits are output; if tags exist, then only the most-recent commits are output up to the last identified tag. This behavior can be changed by specifying one or both of the range options (-f|--final-tag and -s|--start-tag).

The following options are available:

```bash
  -a, --all                 Retrieve all commits (ignores --start-tag, --final-tag)
  -l, --list                Display commits as a list, with no titles
  -t, --tag                 Tag label to use for most-recent (untagged) commits
  -f, --final-tag           Newest tag to retrieve commits from in a range
  -s, --start-tag           Oldest tag to retrieve commits from in a range
  -n, --no-merges           Suppress commits from merged branches
  -p, --prune-old           Replace existing Changelog entirely with new content
  -x, --stdout              Write output to stdout instead of to a Changelog file
  -h, --help, ?             Usage help
```

Type `git changelog --help` for basic usage or `man git-changelog` for more information.

**NOTE:** By default, `git changelog` will concatenate the content of any detected changelog to its output. Use the `-p` option to prevent this behavior.

### Examples

Generate a new changelog consisting of all commits since the last tag, use the tag name _1.5.2_ for the title of this recent commits section (the date will be generated automatically as today's date):

```bash
$ git changelog --tag 1.5.2 && cat History.md

1.5.2 / 2015-03-15
==================

* Docs for git-ignore. Closes #3
* Merge branch 'ignore'
* Added git-ignore
* Fixed <tag> in docs
* Install docs
* Merge branch 'release'
* Added git-release
* Passing args to git shortlog
* Added --all support to git-count
```

List all commits since the last tag:

```bash
$ git changelog --list

* Docs for git-ignore. Closes #3
* Merge branch 'ignore'
* Added git-ignore
* Fixed <tag> in docs
* Install docs
* Merge branch 'release'
* Added git-release
* Passing args to git shortlog
* Added --all support to git-count
```

List all commits since the beginning:

```bash
$ git changelog --list --all

* Docs for git-ignore. Closes #3
* Merge branch 'ignore'
* Added git-ignore
* Fixed <tag> in docs
* Install docs
* Merge branch 'release'
* Added git-release
* Passing args to git shortlog
* Added --all support to git-count
...
<many many commits>
...
* Install docs.
* Merge branch 'release'.
* Added 'git-release'.
* Fixed readme.
* Passing args to git shortlog.
* Initial commit
```

## git undo

Remove the latest commit:

```bash
git undo
```

Remove the latest 3 commits:

```bash
git undo 3
```

## git sed

Run grep as directed but replace the given files with the pattern.

For example,
```bash
$ git sed 'this' 'that'
$ git sed 'this' 'that' g
$ git sed 'this' 'that' -- path/ path2/
```

## git setup

Set up a git repository (if one doesn't exist), add all files, and make an initial commit. `dir` defaults to the current working directory.

## git scp

A convenient way to copy files from the current working tree to the working directory of a remote repository. If a `<commits>...` is provided, only files that has changed within the commit range will be copied.

Internally this script uses `rsync` and not `scp` as the name suggests.

`git-rscp` - The reverse of `git-scp`. Copies specific files from the working directory of a remote repository to the current working directory.

### Examples

 Copy unstaged files to remote. Useful when you want to make quick test without making any commits

    $ git scp staging

 Copy staged and unstaged files to remote

    $ git scp staging HEAD

 Copy files that has been changed in the last commit, plus any staged or unstaged files to remote

    $ git scp staging HEAD~1

 Copy files that has been changed between now and a tag

    $ git scp staging v1.2.3

 Copy specific files

    $ git scp staging index.html .gitignore .htaccess

 Copy specific directory

    $ git scp staging js/vendor/

## git show-merged-branches

Show all branches merged in to current HEAD.

## git show-unmerged-branches

Show all branches **not** merged in to current HEAD.

## git show-tree

Show the decorated graph view of one liner summarized commits from all branches.
For example, running `git show-tree` will display:
```
*   4b57684 (HEAD, develop) Merge branch upstream master.
|\
| *   515e94a Merge pull request #128 from nickl-/git-extras-html-hyperlinks
| |\
| | * 815db8b (nickl/git-extras-html-hyperlinks, git-extras-html-hyperlinks) help ronn make hyperlinks.
| * | 7398d10 (nickl/develop) Fix #127 git-ignore won't add duplicates.
| |/
| | * ab72c1e (refs/stash) WIP on develop: 5e943f5 Fix #127 git-ignore won't add duplicates.
| |/
|/|
* | 730ca89 (bolshakov) Rebase bolshakov with master
|/
* 60f8371 (origin/master, origin/HEAD, master) Merge pull request #126 from agrimaldi/fix-changelog-last-tag
...
```

Be free to try it for yourself!


## git stamp

Stamp the last commit message

Commit message is

```bash
Fix timezone bug
```

Reference the issues numbers from your bug tracker

```bash
$ git stamp Issue FOO-123

commit 787590e42c9bacd249f3b79faee7aecdc9de28ec
Author: Jack <jack@work.com>
Commit: Jack <jack@work.com>

    Fix timezone bug

    Issue FOO-123

$ git stamp Issue FOO-456 \#close

commit f8d920511e052bea39ce2088d1d723b475aeff87
Author: Jack <jack@work.com>
Commit: Jack <jack@work.com>

    Fix timezone bug

    Issue FOO-123

    Issue FOO-456 #close
```

Link to its review page

```bash
$ git stamp Review https://reviews.foo.org/r/4567/

commit 6c6bcf43bd32a76e37b6fc9708d3ff0ae723c7da
Author: Jack <jack@work.com>
Commit: Jack <jack@work.com>

    Fix timezone bug

    Issue FOO-123

    Issue FOO-456 #close

    Review https://reviews.foo.org/r/4567/
```

Replace previous issues with a new one
(Note that the identifier is case insensitive)

```bash
$ git stamp --replace issue BAR-123

commit 2b93c56b2340578cc3478008e2cadb05a7bcccfa
Author: Jack <jack@work.com>
Commit: Jack <jack@work.com>

    Fix timezone bug

    Review https://reviews.foo.org/r/4567/

    issue BAR-123
```


## git standup

Recall what you did or find what someone else did in a given range of time.
For instance, recall John's commits since last week(7 days ago):
```
git standup -a John -d 7
```

## git touch

Call `touch` on the given file, and add it to the current index. One-step creation of new files.

## git obliterate

Completely remove a file from the repository, including past commits and tags.

```bash
git obliterate secrets.json
```

## git local-commits

List all commits on the local branch that have not yet been sent to origin. Any additional arguments will be passed directly to git log.

## git archive-file

Creates a zip archive of the current git repository. The name of the archive will depend on the current HEAD of your git repository.

## git missing

Print out which commits are on one branch or the other but not both.

```bash
$ git missing master
< d14b8f0 only on current checked out branch
> 97ef387 only on master
```

## git lock

Lock a local file `filename`:

```bash
$ git lock config/database.yml
```

## git locked

List local locked files:

```bash
$ git locked
config/database.yml
```

## git unlock

Unlock a local file `filename`

```bash
$ git unlock config/database.yml
```

## git reset-file

Reset one file to `HEAD` or certain commit

Reset one file to HEAD

```bash
$ git reset-file .htaccess
```

or reset one file to certain commit

```bash
$ git reset-file .htaccess dc82b19
```

## git mr

Checks out a merge request from GitLab. Usage: `git mr <ID|URL> [REMOTE]`.
Default remote is `origin`.

``` bash
$ git mr 51
From gitlab.com:owner/repository
 * [new ref]         refs/merge-requests/51/head -> mr/51
Switched to branch 'mr/51'
```

With full URL, the head is fetched from a temporary remote pointing to the base URL.

``` bash
$ git mr https://gitlab.com/owner/repository/merge_requests/51 
From gitlab.com:owner/repository
 * [new ref]         refs/merge-requests/51/head -> mr/51
Switched to branch 'mr/51'
```

Just like [git pr](#git-pr), `git mr` accepts a `clean` argument to trash all
`mr/` branches. Ensure current branch is not one.

## git paste

Sends commits to a pastebin site using pastebinit.

By default it sends the commits between your current branch
and the branch your current branch is based on (the upstream branch).

``` bash
$ git paste
https://paste.debian.net/1234567/
```

All options are passed to `git format-patch --stdout`
so you can also pass options understood by `git-rev-parse(1)`
in order to select a different set of commits.

``` bash
$ git paste @^
https://paste.debian.net/1234567/
```

See the [pastebinit documentation](https://manpages.debian.org/pastebinit)
for information about how to chose a different pastebin site to the default.

## git pr

Checks out a pull request from GitHub

```bash
$ git pr 226
From https://github.com/tj/git-extras
 * [new ref]       refs/pulls/226/head -> pr/226
Switched to branch 'pr/226'
```

To use a remote other than `origin`, e.g. `upstream` if you're working in a fork, specify it as the second parameter:

```bash
$ git pr 226 upstream
From https://github.com/tj/git-extras
 * [new ref]       refs/pulls/226/head -> pr/226
Switched to branch 'pr/226'
```

You can also checkout a pull request based on a GitHub url

```bash
$ git pr https://github.com/tj/git-extras/pull/453
From https://github.com/tj/git-extras
 * [new ref]         refs/pull/453/head -> pr/453
Switched to branch 'pr/453'
```

To remove all local pull request branches, provide the magic `clean` parameter:

```bash
$ git pr clean
Deleted branch 'pr/226' (was 1234567).
```

## git root

show the path to root directory of git repo

```bash
$ pwd
.../very-deep-from-root-directory
$ cd `git root`
$ git add . && git commit
```

## git delta

Lists files that differ from another branch.

```bash
$ touch README.md
$ git setup
$ git checkout -b hello
$ echo hello >> README.md
$ git delta
README.md
$ touch Makefile
$ git add Makefile
$ git delta
Makefile
README.md
```

## git clear

Does a hard reset and deletes all untracked files from the working directory, including those in .gitignore.

## git clear-soft

Does a hard reset and deletes all untracked files from the working directory, excluding those in .gitignore.

## git merge-repo

Merges two repository histories.

```bash
$ git merge-repo other-repo.git master new_dir
```

The above merges `other-repo.git`'s  `master` branch into the current repository's `new_dir` directory.

```bash
$ git merge-repo git@github.com:tj/git-extras.git master .
```

The above merges a remote repo's `master` branch into the current repository's directory, not preserving history.


## git psykorebase

Rebase a branch on top of another using a merge commit and only one conflict handling.

```bash
$ git psykorebase master
```

The above rebase the current branch on top of `master` branch .

```bash
$ git psykorebase --continue
```

The above continue the rebase after conflicts have been handled.

```bash
$ git psykorebase master feature
```

The above rebase `feature` branch on top of `master` branch

## git pull-request

Create pull request via commandline.

## git rebase-patch

Given you have a patch that doesn't apply to the current HEAD, but you know it applied to some commit in the past,
`git rebase-patch` will help you find that commit and do a rebase.

For example,
```
$ git rebase-patch test.patch
Trying to find a commit the patch applies to...
Patch applied to dbcf408dd26 as 7dc8b23ae1a
First, rewinding head to replay your work on top of it...
Applying: test.patch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging README.txt
```

Then your last commit has the changes of the patch and is named `test.patch`.

## git sync

Sync local branch with its remote branch

```bash
$ git sync
```

Sync local branch with origin/master

```bash
$ git sync origin master
```

## git browse

Opens the current git repository website in your default web browser.

```bash
$ git browse

$ git browse upstream
```

## git browse-ci

Opens the current git repository CI website (e.g. GitHub Actions, GitLab CI,
Bitbucket Pipelines) in your default web browser.

```bash
$ git browse-ci

$ git browse-ci upstream
```

## git utimes

Change files modification time to their last commit date. Does not touch files that are in the working tree or index.

The `--newer` flag preserves the original modification time of files that were committed from the local repo, by only touching files that are newer than their last commit date.

```bash
git-extras$ ls -l bin | head
total 308
-rwxr-xr-x 1 vt vt   489 Jul 28  2015 git-alias
-rwxr-xr-x 1 vt vt  1043 Nov  8 13:56 git-archive-file
-rwxr-xr-x 1 vt vt   970 Nov  8 13:56 git-authors
-rwxr-xr-x 1 vt vt   267 Nov  8 13:56 git-back
-rwxr-xr-x 1 vt vt   899 Nov  8 13:56 git-browse
-rwxr-xr-x 1 vt vt  1932 Nov  8 13:56 git-brv
-rwxr-xr-x 1 vt vt  6282 Nov  8 13:56 git-bulk
-rwxr-xr-x 1 vt vt 18561 Nov  8 13:56 git-changelog
-rwxr-xr-x 1 vt vt   215 Nov  8 13:56 git-clear

git-extras$ git utimes --newer
+ touch -d 2020-05-22T10:40:29+08:00 bin/git-archive-file
+ touch -d 2017-05-05T16:02:09+08:00 bin/git-authors
+ touch -d 2020-02-23T11:41:54+08:00 bin/git-back
+ touch -d 2020-06-23T09:31:21+10:00 bin/git-browse
+ touch -d 2020-01-15T10:46:19+01:00 bin/git-brv
+ touch -d 2019-12-21T13:35:59+08:00 bin/git-bulk
+ touch -d 2019-09-05T12:41:38+08:00 bin/git-changelog
+ touch -d 2016-11-19T16:41:19+00:00 bin/git-clear
[...]

git-extras$ ls -l bin | head
total 308
-rwxr-xr-x 1 vt vt   489 Jul 28  2015 git-alias
-rwxr-xr-x 1 vt vt  1043 May 22 05:40 git-archive-file
-rwxr-xr-x 1 vt vt   970 May  5  2017 git-authors
-rwxr-xr-x 1 vt vt   267 Feb 23  2020 git-back
-rwxr-xr-x 1 vt vt   899 Jun 23 02:31 git-browse
-rwxr-xr-x 1 vt vt  1932 Jan 15  2020 git-brv
-rwxr-xr-x 1 vt vt  6282 Dec 21  2019 git-bulk
-rwxr-xr-x 1 vt vt 18561 Sep  5  2019 git-changelog
-rwxr-xr-x 1 vt vt   215 Nov 19  2016 git-clear
```

Note above, that because of the `--newer` flag, the file `git-alias` was not touched since its modified date is earlier than the commit date.

## git abort

Abort current revert, rebase, merge or cherry-pick, without the need to find exact command in history.

## git magic

Commits changes with a generated message.
0707010000000B000081A40000000000000000000000016627A28D00011783000000000000000000000000000000000000001C00000000git-extras-7.2.0/History.md
7.2.0 / 2024-04-21
==================

  * refactor: test utils and simplify the case code (#1136)
  * Add --proceed flag to git-delete-squashed-branches (#1134) (#1135)
  * test(browse-ci): add unit tests (#1130)
  * test(git-browse): add unit tests (#1127)
  * feat: add reverse option to git-brv (#1123)
  * fix(utimes): change /dev/stdin to -
  * fix(utimes): Support filenames with backspaces, etc. (#1122)
  * chore: add poetry to handle the tests of the git extras (#1121)
  * Fix typo in ci.yml (#1120)
  * Fix: harden utimes, use single quotes (#1109)
  * Fix: patch git-utimes (fixes #1118) (#1119)
  * add pull request manner (#1113)
  * maintenance: Add my name as maintainer in AUTHORS (#1117)
  * test(git-authors): add unit test (#1098)
  * Add more comprensive dependencies (#1111)
  * fix: git-standup find error (tj#1106) (#1110)
  * Improve defaults for testing suite (#1104)
  * feat: Speed up utimes (#1108)
  * Overhaul CONTRIBUTING document (#1103)
  * Bump version to 7.2.0-dev (#1099)

7.1.0 / 2023-10-28
==================

  * git-cp: don't stop execution when merge.ff is not set (#1096)
  * Allow `git cp` to create destination folder automatically (#1091)
  * fix: Use `-iname` and expressions instead of `-iregex` (#1094)
  * change installation source from master to main (#1092)
  * test(git-archive-file): add unit test (#1084)
  * ci: Use Go v1.20 for running `editorconfig-checker` (#1086)
  * test(git-alias): add its unit test (#1077)
  * makefile: Allow bypassing conflict check (#1080)
  * fix: Restore zsh completions to working completion (#1079)
  * fix: add missing quote in git-extras-completion.zsh (#1078)
  * feat: Implement completion for `git coauthor` (#1074)
  * fix: Move improvements via ShellCheck (#1075)
  * feat(auto-test): CI with pytest (#1066)
  * git-feature: add configurable branch separator (#1072)
  * git-psykorebase: determine branch names with bash pattern substitution (#1073)
  * git-cp: continue to merge when merge.ff is only (#1070)
  * git archive-file: change base ARCHIVE_NAME (#1071)
  * readme: Add secondary location of screencast (#1065)
  * fix: Improve Bash hygiene (#1056)
  * feat: Implement `git-get` command (#1045)
  * Corrected grammar in bin/git-cp (#1061)
  * Improve `git-ignore` command (#1047)
  * I have made two improvements to the git-bulk: (#1054)
  * Type properly `__gitex_command_successful` calls and capitalizate github to GitHub (#1049)
  * Add typo checker
  * Fix comment typo in git-authors (#1050)
  * tweak: Fix typos (#1046)
  * Makefile: init SYSCONFDIR before using it (#1044)
  * Makefile: tune MANPREFIX configuration for FreeBSD (#1043)
  * Makefile: set bash COMPL_DIR to FreeBSD expected defaults (#1042)
  * Bump version to 7.1.0-dev (#1041)

7.0.0 / 2023-04-20
==================

  * git-delete-tag: should not be quoted
  * Add the current branch git summary (#1034)
  * chore: Improve Bash variously (#1032)
  * Change the oneline option to a tebular version in the git summary (#1031)
  * chore: Remove `X`-style equality comparisons (#1028)
  * chore: Various Bash improvements (#1029)
  * fix: No longer pollute env with `GREP_OPTIONS`
  * tweak editor config (#1027)
  * revert the completion dir change on MacOS (#1026)
  * Update gitignore.io urls to Toptal urls (#1025)
  * Add EditorConfig file (#1022)
  * Make the bulk output slimmer (#1020)
  * chore: Fix more Bash inconsistencies (#1021)
  * Repo status overview (#1017)
  * Replace egrep with grep -E (#1019)
  * chore: More Bash improvements and removing deprecations (#1016)
  * chore: Improve quoting and builtin usage (#1015)
  * Add summary fields (#1013)
  * Fix quiet mode of the bulk command (#1014)
  * git-summary: remove stray \ in grep call (#1010)
  * Allow to run git-extras within git-bulk (#1008)
  * Make git-summary accept multiple paths for the --lines argument (#1005)
  * Makefile: ensure bash is used instead of /bin/sh (#1004)
  * fix base branch in the pull-request command (#1003)
  * Update docs for git abort change (#1000)
  * Bump version to 6.6.0-dev (#997)

6.5.0 / 2022-10-06
==================

  * git root: show '.' when using with -r in the root dir (#995)
  * git standup: work as expected when no configured (#996)
  * rephrase question depending on switch (#984)
  * Include revert conflicts in git abort (#992)
  * fix(git-effort):fork: retry: Resource temporarily unavailable #979 (#990)
  * git-sync --force will sync without interaction (#989)
  * fix(git-cp): keep the history of the files
  * git-bulk: previous refactor redirected $PWD to stderr by mistake
  * Fix lazy loading bash_completion from XDG_DATA_DIRS
  * Minor changes to man/git-standup.md
  * Replaced -g and -A with -F gpg|authordate
  * fix(bin/git-browse): fix commit hash
  * fix(bin/git-browse): fix bitbucket url
  * feat: open website at file & line number or range
  * #970 standup added -A flag for author date
  * update docs due to formatting error in git-utimes man page
  * update per shellcheck advice
  * update git-utimes.{1,html} to add --newer flag
  * Don't read git-extras.standup.implicit-week twice in git standup
  * quote mod_s and git_s integer vars
  * updates per request of spacewander
  * Update Commands.md
  * allow modification date updates for symbolic links
  * add --newer flag and ignore files in the working tree or index
  * Documented config git-extras.standup.implicit-week
  * Minor change to git standup -w documentation
  * Improved check if -w or -d was given to git standup
  * Renamed config git-extras.standup.implicit-week from git-extras.standup-implicit-week
  * Documented weekend behaviour of git standup -w
  * docs(instllation): replace `git.io`
  * Bump version to 6.5.0-dev
  * Added config git-extras.standup-implicit-week for git standup
  * Document git standup -w option

6.4.0 / 2022-04-22
==================

  * Merge pull request #964 from spacewander/bro
  * git-browse/browse-ci: use powershell.exe only when it is available
  * Merge pull request #944 from SimonTate/feature/sem-ver-prefix
  * Merge pull request #957 from jackwasey/quiet-or-stderr
  * git-release: Add prefix to semver
  * Merge pull request #959 from pbnj/feat/git-browse-ci
  * fix: fix stderr & stdout redirect
  * Merge pull request #962 from spacewander/gicc
  * git-ignore-io: make sure .gi_list is created before access
  * git-ignore: the directory of target file may not exist
  * fix(git-browse-ci): set pipefail
  * docs: fix docs
  * chore: update docs & completions
  * feat: implement git-browse-ci
  * quiet option, errors to stderr
  * Merge pull request #956 from tfendin/xargs-conflicting-args
  * Removed xargs from git-effort
  * Merge pull request #955 from katrinleinweber/summary-highlight-path-opt
  * Highlight path option more
  * Merge pull request #951 from tfendin/local-commits-all-remotes
  * Updated manual for git local-commits, must track a branch
  * Merge pull request #946 from tfendin/default_branch_logic
  * Made local-commits work with all remotes
  * Updated Readme.md after review
  * Merge pull request #949 from tfendin/git-ignore-ensure-newline
  * Added section about main branch to the Readme file
  * Merge pull request #947 from tfendin/git-unlock-synopsis-fix
  * Merge pull request #948 from tfendin/git-ignore-core-excludesFile
  * Clarified comment of when newline should be added
  * Updated git-extras manual after review.
  * git-ignore: ensure new patterns comes after a newline
  * Fixed bug in git-ignore which ignored config core.excludeFiles
  * Spell corr in git-unlock synopsis
  * Consider init.defaultBranch in git_extra_default_branch, changed default branch to main.
  * Merge pull request #885 from spacewander/add_pkg
  * doc: add packaging status
  * Merge pull request #940 from overengineer/feature/magic
  * Ignored error when git restore --staged fails when there is no commit
  * Merge branch 'master' into merge/magic
  * Added git-magic command
  * Bump version to 6.4.0-dev

6.3.0 / 2021-10-02
==================

  * Merge pull request #942 from spacewander/ffgd
  * git-delete-squashed-branches: fail fast if can't checkout
  * Merge pull request #939 from SimonTate/feature/force-clear
  * git-clear: add force option
  * Merge pull request #936 from tfendin/multiline_synopsis_fix
  * Merge pull request #937 from tfendin/dedup_email_case_insensitive
  * Merge pull request #934 from tfendin/no-merge-summary
  * Adopted git --dedup-by-email to the project coding style
  * summary --dedup-by-email now compares email adresses case insensitive.
  * Updated lines under Synopsis in the manuals so they are commonly formatted
  * Add incompability check for git summary --line --no-merges, split synopsis in its manual.
  * Merge pull request #935 from ax1036/git-un-lock
  * fix git (un)lock with spaced filenames
  * Updated completion for git summary
  * Updated documentation for git-summary --no-merges
  * Added option --no-merges to git summary
  * Merge pull request #932 from spacewander/git-su
  * git-summary: support filtering `--line` with path
  * Merge pull request #865 from pkitszel/pkitszel-git-abort
  * Add git-abort
  * Merge pull request #928 from duckunix/master
  * Update point to github docs for forks from API
  * update working
  * git-fork | Update man/md/html pages to talk about need of the github personal access token
  * Updated documentation (AUTHORS)
  * bin/git-fork | updating for feedback from PR #928
  * git-fork | update to match REST-API auth standards as of 2021-06
  * Merge pull request #926 from nicokosi/patch-1
  * Update install doc: Homebrew is not just for macOS
  * Merge pull request #924 from allejo/feature/delete-squashed-branches
  * delete-squashed-branches: Make side-effect clear in docs
  * delete-squashed-branches: Make branch checkout side effect clear
  * Add delete-squashed-branches command
  * Merge pull request #923 from CleanMachine1/patch-1
  * Picture is broken
  * Merge pull request #920 from matan129/patch-1
  * Ignore checked-out branches on different worktrees
  * Merge pull request #917 from heirecka/remove-git-line-summary-man-page
  * Bump version to 6.3.0-dev
  * doc: Remove man page for git-line-summary

6.2.0 / 2021-03-26
==================

  * Merge pull request #915 from spacewander/typo
  * Merge pull request #914 from spacewander/xch
  * Merge pull request #916 from spacewander/utimes
  * fix(git-utimes): make sure it work under OS X.
  * chore: fix typo
  * fix(git-ignore): use $XDG_CONFIG_HOME only when it is defined
  * Merge pull request #910 from 0xflotus/patch-1
  * fixed small error
  * Merge pull request #908 from nodeg/fix_installation
  * Fix grammer
  * Correct macOS spelling
  * Correct openSUSE spelling and update Version
  * Merge pull request #907 from bbenzikry/zinit-docs
  * Update zinit docs
  * Merge pull request #906 from prestontim/master
  * Remove bug|refactor|chore from documentation
  * Merge pull request #899 from spacewander/git-summary
  * git-summary: reject invalid option
  * ci: use checkout@v2
  * Merge pull request #897 from spacewander/ga
  * ci: move to GitHub Action
  * Merge pull request #882 from vt-alt/git-utimes
  * Merge pull request #896 from Aloxaf/fix_completion
  * fix: zsh completion of git-coauthor command
  * Merge pull request #895 from vanpipy/feature/optional-start-point-when-creeate-branch
  * doc: add the usage of the parameter `--from` for create-branch and feature
  * feat(feature): checkout from start point if exists
  * feat(create-branch): add optional --from to set the start point
  * Merge pull request #894 from alessandro308/merge-into-stashed
  * Merge-into: add stash before to checkout
  * Merge pull request #892 from equt/#891
  * Merge pull request #888 from equt/master
  * Merge pull request #889 from vanpipy/feature/delete-tag
  * [ fix #891 ] Cast branch output if HEAD not exists
  * [ feat ] Quote the default_path var
  * [ fix ] Quote env var
  * [ fix ] Quote the XDG_CACHE_HOME
  * [ feat ] Use default global ignore file
  * [ refactor ] Optimize var not existing check
  * [ fix ] Fix hardcode ignore list file path
  * [ feat ] Add XDG_CACHE_HOME check
  * Merge pull request #890 from zhujian0805/master
  * adding a format for git-contrib
  * git-utimes: Change files modification time to their last commit date
  * feat(delete-tag): get default remote from git config if exists
  * Merge pull request #884 from elonderin/fix-squash-help
  * squash help: re-ran make for extras and squash
  * squash help: ran make man/git-extras.{html,1}
  * squash help: ran make man/git-squash.{html,1}
  * squash help: corrects option name in PR
  * Merge remote-tracking branch 'u/master' into HEAD
  * Merge pull request #886 from TheTechOddBug/master
  * Fixing summary for --squash-msg option.
  * Updates git-squash.md: fixes help which was unclear and had remnants from copied template it appears
  * Bump version to 6.2.0-dev

6.1.0 / 2020-09-26
==================

  * Merge pull request #878 from spacewander/default_br
  * Merge pull request #880 from spacewander/fix_bsd_sed_regex
  * git-info: fix regex for bsd sed
  * Merge pull request #879 from spacewander/pass_arg
  * feat: pass origin argument down to git execution
  * change: migrate default branch
  * Merge pull request #872 from yuravg/pr_typo
  * doc: fix typo
  * Merge pull request #869 from spacewander/typo
  * git-back: removed
  * fix typo
  * Merge pull request #868 from spacewander/zsh_completion
  * sort completion in alphabetical order
  * remove incorrect completion
  * git-info: add zsh completion
  * Merge pull request #867 from yuravg/pr2source
  * doc: fix argument description
  * git-info: moved argument checking
  * git-info: fix namespace
  * doc: update derived git-info files
  * doc: add description for git-info
  * Add bash completion for git-info
  * git-info: colorized headers
  * git-info: extend configuration and commit information
  * git-info: remove notes about git-log, git-show
  * git-info: add info about submodules
  * git-info: fix indentation, remove comment
  * Merge pull request #864 from v-y-a-s/pr
  * Grammar correction
  * Remove $user
  * corrections
  * Update doc
  * fix config message name
  * Remove comments
  * PR test
  * Merge pull request #860 from soraxas/implement-fish-completions
  * implement fish completions file
  * Merge pull request #853 from bethesque/feat/git-browse-with-multiple-remotes
  * feat(browse): automatically select origin remote if one exists, fallback to first otherwise
  * Merge pull request #854 from bethesque/fix/git-browse-sed-on-mac
  * fix(browse): update sed pattern to work on mac
  * Bump version to 6.1.0-dev

6.0.0 / 2020-06-22
==================

  * doc: remove gitter
  * git-cp: remove trailing space
  * Merge pull request #849 from vr8hub/undodoc
  * Merge pull request #850 from vr8hub/newundo
  * Tighten numeric regex
  * Cleanup code
  * Modify to work when only a single commit, add parameter checks
  * Correct undo documentation to match code order of parameters
  * Merge pull request #847 from Amorymeltzer/patch-1
  * docs: Note flag for git extra --version
  * Merge pull request #846 from spacewander/note
  * doc: add a note about the package maintainer.
  * Merge pull request #844 from ihoro/installation-via-freebsd-pkg
  * Merge pull request #843 from spacewander/remove_git_feature
  * break change: remove docs and other stuff of git-feature's alias
  * Merge pull request #845 from alerque/remove-feature-aliases
  * Remove scripts that are mere alias wrappers for git-feature
  * docs: mention installation via FreeBSD pkg
  * Merge pull request #840 from spacewander/archive-invalid
  * Merge pull request #841 from sgleizes/bugfix/git-release-zsh-completion
  * Fix missing newline escapes in git-release zsh completion
  * git-archive-file: rename invalid chars in the output filename
  * Merge pull request #837 from jldugger/jldugger/pr-remote-default
  * Merge pull request #836 from jldugger/jldugger/feature-config
  * add a default for the remote to fetch a pr from
  * add a config setting for prefix
  * Merge pull request #829 from cpradog/master
  * update zsh completion for bug and refactor commands
  * updated zsh completion script
  * updated git-feature documentation
  * add squash option to git-feature
  * add squash option to git-feature
  * Merge pull request #826 from Natim/feature/825/add-git-cp
  * Simplify the code.
  * Signal if the destination already exists.
  * @spacewander review.
  * Merge pull request #827 from Natim/fix-man-page-for-git-psykorebase
  * Fix checks.
  * Update man page export for git-psykorebase with ronn-ng 0.9.0
  * @mschneiderwind review.
  * Add documentation.
  * Add first version of git-cp
  * Merge pull request #824 from mapitman/master
  * Fix documentation for git-browse
  * Merge pull request #823 from mapitman/master
  * Implement suggested changes from code review
  * Add git-browse command
  * Merge pull request #820 from spacewander/deprecate_git_back
  * change: deprecate git-back
  * Merge pull request #817 from bric3/adds-git-brv
  * Fixes #770: Adds git-brv
  * Merge pull request #816 from spacewander/git-sed-pathspec
  * git-sed: limit paths via pathspec
  * Bump version to 5.2.0-dev.

5.1.0 / 2019-12-21
==================

  * git-bulk: support cloning from a relative path
  * git-standuo: clarify the -a option
  * git-paste: check pastebinit before running it
  * git-coauthor: quote variable in the comparison
  * git-bulk: don't disappoint shellcheck
  * Merge pull request #812 from spacewander/git-sed-escape
  * git-sed: escape special characters for tr
  * Merge pull request #811 from eli-schwartz/portability
  * build: do not require the nonstandard and unpredictable 'which' utility
  * add repositories to workspace from source (#804)
  * Merge pull request #810 from roxchgt/read-not-need-repo
  * read COMMANDS_WIHOUT_REPO from not_need_git_repo file
  * Merge pull request #806 from spacewander/retire_make_with_msys
  * Merge pull request #808 from drasill/master
  * git-ignore: support non-default .git directory
  * retire the msysgit installation script
  * Merge pull request #802 from spacewander/fix-git-bulk-arg-count
  * git-bulk: line break is need in the SYNOPSIS doc section
  * fix bug in allowedargcount() to not execute command if wrong args count
  * Merge pull request #801 from spacewander/fix-delete-submodule
  * git-delete-submodule: don't remove the history of deleted submodule
  * Merge pull request #798 from wolviecb/signed_release
  * Add flags -s and -u for signed tags
  * Merge pull request #795 from spacewander/git-squash-commit-msg
  * Merge pull request #793 from spacewander/git-standup-group-by-branch
  * git-squash: miss completion script change
  * git-squash: clean up shellcheck warnings
  * git-squash: add --squash-messages to concat commit messages into one.
  * git-standup: add option to limit the number of commit
  * Merge pull request #789 from go2null/delete-empty-gitmodules
  * git-delete-submodule: comment the DUMMY prefix and ignore the output of grep -v.
  * git-standup: add separate newline between the output
  * add PR changes
  * add --force option to continue on error
  * improve readability
  * display git submodule status output before exiting
  * check git submodule status before declaring success
  * reorganize flow
  * delete empty .gitmodules
  * git-standup: add option '-B' to group the commits by branch
  * Merge pull request #792 from spacewander/git-summary-cleanup
  * git-summary: clean up other shellcheck warnings
  * git-summary: fix incorrect active days when commits range is given
  * git-summary: remove useless result function.
  * Merge pull request #790 from spacewander/git-summary-merge-email
  * git-summary: add --dedup-by-email to remove duplicate users
  * Merge pull request #788 from spacewander/doc_git_summary_line
  * git-summary: add missing example of --line option
  * Merge pull request #787 from rvbuelow/patch-1
  * Merge pull request #786 from mbologna/patch-1
  * Use GIT_DIR environment variable to to set .git directory
  * Docs: add OpenSUSE distribution information
  * Merge pull request #784 from spacewander/git-effort-col-len
  * git-effort: adjust column limit according to the paths
  * Merge pull request #708 from pabs3/git-paste
  * Regenerate docs
  * Add git-paste for sending patches to pastebin
  * Merge pull request #778 from pabs3/cleanups
  * Switch from using /tmp to using mktemp
  * Switch http URLs to https where possible
  * Fix typos
  * Fix an indefinite article in the documentation
  * Merge pull request #776 from spacewander/update_git_pr_doc
  * Merge pull request #777 from fengkx/zplugin-install-completion
  * docs(Installation): :memo: add src in zplugin ice modifier to source the completion file
  * git-pr: mention the limitation of -m option
  * Merge pull request #772 from jacobherrington/add-git-coauthor
  * Add conditional logic for linebreaks
  * Ensure arguments exist
  * Add git coauthor command
  * improve the quality of the integrity check.
  * Merge pull request #774 from jacobherrington/patch-2
  * Bump version to 5.1.0-dev.
  * Link to the contributing document

5.0.0 / 2019-08-16
==================

  * Merge pull request #769 from spacewander/no_line_summary
  * git-line-summary: should be the history
  * Merge pull request #768 from bric3/fix-more-character-encoding-issues
  * git-guilt: protect against encoding issues with LC_ALL=C
  * Merge pull request #767 from spacewander/rename_branch_order
  * git-rename-branch: change branch argument order
  * Merge pull request #765 from spacewander/column_dependency
  * Makefile: check dependencies before installation.
  * Installation.md: add dependencies section.
  * man/Readme.md: we don't need to update git-extras docs separately
  * Merge pull request #763 from spacewander/strict_check_integrity
  * check_integrity.sh: check more strickly.
  * Merge pull request #762 from spacewander/pr_merge
  * Merge pull request #761 from btmurrell/preference-for-create-branch
  * implements remote pref for create-branch
  * git-pr: add -m|--merge option to check out a merge commit
  * impl for checking remote pref
  * Merge pull request #754 from spacewander/prompt_passwd_before_2fa
  * git-fork: prompt for password before 2FA code.
  * check_integrity.sh: improve readability.
  * Merge pull request #753 from tiemonl/GH-752_update_reauthor_documentation
  * GH-752 updated documentation to show rename workaround
  * Merge pull request #751 from timfeirg/master
  * git-mv-remote: rename a remote regardless of any existing remotes
  * Installation instructions added for CRUX (#746)
  * Merge pull request #723 from bittner/feature/git-undo-soft-leave-changes-staged
  * Merge pull request #744 from spacewander/git-guilt-identation
  * git-guilt: avoid exceeding 80 columns.
  * Bump version to 4.8.0-dev.
  * Make `git undo -s` restore the staging area

4.7.0 / 2019-02-09
==================

  * git-pr: emphasized that the remote is required when pulling multiple PRs.
  * Merge pull request #743 from spacewander/allow_multiple_pr
  * git-pr: accepted multiple GitHub URL or ID with remote.
  * git-pr: added <[remote]:pr number> option.
  * Merge pull request #740 from spacewander/tweak_man_readme
  * doc: clarify the current working directory when building the docs.
  * Merge pull request #739 from sleagon/master
  * feat: Add -s(--soft) for git sync
  * Merge pull request #738 from StuartFeldt/add-symlinks-to-bulk-command
  * Adding support for symlink directories in bulk command
  * Merge pull request #737 from smancill/standup-ensure-colors
  * git-standup: ensure color usage
  * Merge pull request #736 from spacewander/git_force_clone_not_need_git_repo
  * misc: sort command list in alphabetical order
  * git-force-clone: should not need git repo
  * Merge pull request #734 from zentarul/master
  * Fix missing double quotes after %DEBUG%
  * install.cmd: tweak comments
  * Merge pull request #732 from sachin-gupta/sg-mods
  * Fix: Dev: `/E` option required with MORE for working on higher version of Windows 10 (**_Build 17134_**)
  * Merge pull request #729 from orestisf1993/patch-1
  * git-rename-branch: Don't fail if remote doesn't exist
  * Bump version to 4.7.0-dev.

4.6.0 / 2018-08-11
==================

  * Merge pull request #727 from spacewander/strip_caret
  * Makefile: change the installed manpage destination in FreeBSD (#725)
  * git-changelog: should remove ^0 suffix from the commit description.
  * Merge pull request #722 from spacewander/git_changelog_start_commit
  * git-changelog: add --start-commit option, like --start-tag but for commit
  * Merge pull request #721 from spacewander/git_changelog_list_newline
  * git-changelog: add missing newline to the plain output
  * Merge pull request #713 from pabs3/docs
  * Merge pull request #717 from flatcap/ignore-private
  * optimisation of mkdir
  * Ensure info dir exists
  * add: git-ignore -p (private to repo)
  * Merge pull request #716 from francoism90/patch-1
  * Added Arch Linux
  * Merge pull request #714 from spacewander/fix_detect_sed_i_support
  * Documentation rebuild: git-sed.* flags argument
  * Documentation rebuild: git-clear.html whitespace removal
  * Documentation rebuild: git-extras.* updates
  * Documentation rebuild: index.txt updates
  * Documentation rebuild: dates and headers
  * Remove one of the documentation building tools
  * Remove some trailing whitespace
  * Merge pull request #715 from tjaartvdwalt/master
  * Major/Minor release should reset minor/patch versions to 0
  * Fix greedy match of version number
  * git-sed: fix previous bsd sed workaround
  * Merge pull request #712 from spacewander/detect_sed_i_support
  * git-sed: detect sed -i support and work around for the BSD sed
  * Merge pull request #709 from pabs3/git-sed
  * git-sed: discover a separator when the / character is used in arguments
  * git-sed: pass the -r option to the xargs command
  * git-sed: Allow the flags to be passed as a third argument
  * Merge pull request #706 from MontakOleg/delete-branch
  * Fix deleting branches without upstream
  * Merge pull request #704 from ramlev/master
  * Remove double path delimiters in zsh description
  * Merge pull request #703 from psprint/master
  * Installation.md: Zsh-plugin method which doesn't require root access
  * Bump version to 4.6.0-dev.

4.5.0 / 2018-02-18
==================

  * git-release: show message if nothing given after --semver
  * doc: update git-extras index
  * Merge pull request #639 from spacewander/avoid_deleting_local_upstream
  * Merge pull request #693 from xakraz/fix-mktemp-pattern
  * git-release: add --no-empty-commit for empty commit hater
  * git-release: create an empty release commit if there is nothing to commit
  * git-summary: unescape tab for linux column utility
  * git-undo: add confirmation when `-h` is specified
  * Fixed mktemp template to support busybox (and Alpine linux)
  * Merge pull request #691 from koppor/patch-1
  * Remove trailing dot of German Windows
  * Merge pull request #690 from dominicbarnes/release-push-tags-first
  * feat(git-release): push tags first to help ci tools not miss them
  * Merge pull request #687 from spacewander/add_semver
  * git-release: handle extra non-numeric prefix in tag with --semver
  * Merge pull request #686 from spacewander/add_semver
  * git-release: add --semver option
  * Merge pull request #684 from spacewander/ignore_unknown_arg
  * git-release: function usage doesn't exist, ignore unknown argument instead
  * Merge pull request #681 from EdwardBetts/master
  * Fix so 'git rebase-patch' is described once.
  * Merge pull request #680 from lhernanz/master
  * Preserve the existing user_commands in the git completion system
  * Merge pull request #679 from spacewander/update_git_changelog_doc
  * Merge pull request #678 from timhwang21/devs/thwang/docs-update
  * Mention how to control changelog format in docs of git-changelog
  * Docs> Add -- in front of cmd for git log
  * Merge pull request #676 from gormac/master
  * Fix 'Invalid code page' error when resetting code page at end of script
  * Merge pull request #675 from quite/effort-cursor
  * git-effort: restore normal (visible) cursor properly
  * Merge pull request #674 from tj/pull-request-two-factor-auth
  * Add GitHub two-factor auth support to git-pull-request
  * Merge pull request #672 from mehandes/patch-1
  * Added Nix/NixOS method of installation
  * Merge pull request #671 from sambostock/improve-ignore-io
  * Use local variables & format strings
  * Fix omission when alphabetically printing ignores
  * Remove arbitrary column limit on ignore-io
  * Merge pull request #670 from zeeshanu/patch-1
  * Fix typo
  * Merge pull request #668 from isaacm/patch-1
  * Fix typos, remove trailing whitespace
  * install: submit brew patch to upstream
  * Bump version to 4.5.0-dev.
  * git-delete-branch: avoid deleting local upstream

4.4.0 / 2017-07-15
==================

  * install: display absolute path of zsh completion script
  * zsh: update completion of git bug|chore|feature|refactor|create-branch
  * git summary: use more common way to cd to top level directory
  * Merge pull request #664 from mapitman/master
  * Update man page for `create-branch`
  * Update man pages
  * Update docs for new behavior
  * Use "$@" instead of $@
  * Consolidate feature/bug/chore/refactor logic
  * Allow -r parameter to be in any order in command line
  * Add ability to specify a remote
  * Fix Issue #186
  * fix a wrong name in installation message
  * Merge pull request #662 from nschlimm/master
  * Added git-bulk to not_need_git_repo
  * fix various typos
  * Merge pull request #659 from bersace/mr
  * Add git-mr to checkout GitLab merge requests
  * Merge pull request #656 from dueringa/patch-1
  * Fix typo in git-extras
  * Merge pull request #654 from spacewander/replace-xargs-r
  * git-delete-merged-branches: replace xargs -r option
  * Bump version to 4.4.0-dev.

4.3.0 / 2017-05-05
==================

  * git-authors: remove trailing spaces
  * Merge pull request #649 from adriaanzon/patch-1
  * Merge pull request #651 from spacewander/pass-arguments-to-hooks
  * git-release: add pre-release failure message
  * git release: stop if pre-release hook fails
  * git-release: update docs
  * pass release arguments to pre/post-release scripts
  * git-fork: Let curl exit with error code on fail
  * Merge pull request #647 from SMillerDev/patch-1
  * Add BSD cat support
  * Merge pull request #646 from spacewander/upgrade-git-standup
  * git-standup: update zsh completion
  * git-standup: also update the docs
  * git-standup: add sanity check to -d option and overwrite -w option
  * git-standup: upgrade interface to catch up with kamranahmedse/git-standup
  * Merge pull request #642 from nschlimm/git-bulk-command
  * Typos again
  * Corrected repository location print out and docs ws-root-directory absolute path
  * Codereview Spacewander - whitespaces in workspace locations
  * Merge pull request #643 from jonyamo/git-pr_clean-git-config
  * Review from spacewander
  * Remove slashes from git-config command
  * Merge branch 'master' into git-bulk-command
  * Merge pull request #636 from spacewander/fix_rename_branch
  * Merge pull request #641 from tj/fix_pull_request_upstream
  * git-rename-branch: use detected upstream remote
  * git-pull-request: use detected upstream remote
  * Better behaviour in non workspace directories
  * Current workspace is default target of bulk operations
  * Even shorter
  * Code refactor
  * bug fix in single ws mode
  * code formatting
  * Fix in git-bulk head
  * New Command git-bulk initial commit
  * Merge pull request #635 from spacewander/fix_rename_branch
  * fix syntax & name variables better in rename-branch
  * Merge pull request #633 from nschlimm/columnsflex
  * taken out duplicate columns setting
  * Optimized file length calculation
  * Columns in git-effort adopt to file length
  * Merge pull request #630 from jjlin/rhel/centos
  * Add RHEL/CentOS installation
  * Merge pull request #629 from dankilman/fix-git-effort
  * Fix git-effort for paths starting with dash
  * Merge pull request #626 from jldugger/jldugger/email-fallback
  * fall back to EMAIL when user.email is not configured
  * Merge pull request #619 from spacewander/git-summary-separator
  * Merge pull request #624 from spacewander/has_git_commit
  * Check commit existed before running some commands
  * Merge pull request #615 from techjacker/master
  * Adds SSH prompt to git fork
  * use U+266A instead of comma as separator
  * Merge pull request #610 from nicolaiskogheim/fix-spelling
  * spelling: {a,an} archive. Fix #609
  * Merge pull request #606 from spacewander/fix-git-extras-update
  * fix git-extras update and tweak Windows detection
  * Merge pull request #585 from tardypad/stamp
  * Merge pull request #578 from tardypad/count_fix_extra_arguments
  * stamp: show real looking results in Commands.md doc
  * stamp: add warning in documentation about corner case
  * stamp: add zsh autocompletion
  * stamp: remove non used multiple lines error messages
  * stamp: the message consists in all terms after the identifier
  * stamp: identifier is case insensitive for the replacement
  * stamp: add to Commands doc
  * stamp: add manual
  * stamp: add bash autocompletion
  * stamp: add replace option
  * stamp: display new full message as result
  * stamp: add extra optional message parameter
  * stamp: add basic script
  * Merge pull request #601 from richardfearn/git-sed-spaces-in-filenames
  * Merge pull request #603 from richardfearn/git-clear-consistent-defaults
  * Merge pull request #602 from richardfearn/git-delete-merged-branches-fix
  * git-clear-soft: change default yes/no option to "no" (as with git-clear)
  * git-delete-merged-branches: use "xargs -r" to prevent error when there are no branches to delete
  * git-sed: use "git grep -z" and "xargs -0" to cope with spaces in filenames
  * Merge pull request #600 from richardfearn/git-fresh-branch-fix
  * Merge pull request #599 from richardfearn/improve-yes-no-prompts
  * git-fresh-branch: fix handling of 'yes' response when there are changes
  * git-{clear,clear-soft,sync}: improve yes/no prompts
  * Merge pull request #598 from richardfearn/fix-git-sed-typo
  * Merge pull request #597 from richardfearn/commands-md-improvements
  * git-sed: fix 'unkonwn' typo
  * Commands.md: add link to 'git summary' in 'git line-summary' documentation
  * Commands.md: add links to "git bug", etc. to index
  * Commands.md: add 'git rscp' link to 'git scp' documentation
  * Commands.md: put commands in alphabetical order
  * Merge pull request #596 from richardfearn/archive-file-typo-fix
  * Fix typo in archive-file documentation
  * Merge pull request #595 from aaguilera/master
  * fix: git-squash docs. Replaced 'actual' with 'current'
  * Merge pull request #592 from spacewander/fix_integrity
  * Add travis ci
  * Merge pull request #594 from spacewander/fix_release
  * show all commit messages if no tag found
  * strip out branches like trap-effort-signals
  * Add git-reauthor to completion script
  * Relax #! format check
  * Merge pull request #591 from nottrobin/force-clone
  * Be explicit about only resetting git directories
  * Fix branch option parsing
  * Fix usage
  * Use LC_ALL=C for locale consistency
  * Remove unnecessary check
  * git-force-clone
  * Merge pull request #590 from bbbco/changelog-tmp-file-fix
  * Need to remove the temp file regardless
  * Merge pull request #589 from yelinaung/yla/typo-fixes
  * Spelling fixes for the roon file and html files
  * Spelling fixes
  * Merge pull request #588 from spacewander/no-email
  * Add --no-email to git-author
  * Bump version to 4.3.0-dev.
  * count: remove usage of extra arguments for detailed display

4.2.0 / 2016-10-08
==================

  * remove contributors' email addresses to avoid #544
  * promote two maintainers
  * Merge pull request #584 from grindhold/fix-583
  * fixes #583
  * update docs to clarify rename-branch (#581)
  * Make git-pr set up branch for pulling (#570)
  * add link to ronn git repo (#575)
  * add rename-branch command (#576)
  * Merge pull request #569 from nicolaiskogheim/docs/repl-cleanup
  * git-repl: improve and clean up docs
  * Merge pull request #568 from wcmonty/master
  * Add 'exit' to git-repl command documentation
  * Add built in 'exit' command to git-repl
  * Merge pull request #567 from nicolaiskogheim/git-pull-request-fix#546
  * pull-request: should read local config if present
  * Merge pull request #566 from nfischer/fix-man-page-typo
  * git-release: fix typo in documentation
  * Merge pull request #565 from nicolaiskogheim/git-missing-argument-parsing
  * git-missing: do proper argument parsing. Fix #562
  * Merge pull request #563 from lukechilds/improve-fork
  * Update git-fork man page
  * Merge pull request #564 from sorbits/patch-3
  * Remove a non-contributor from AUTHORS
  * Update docs to reflect new git-fork behaviour
  * Set fork remotes using ssh if available
  * Add git reauthor (#548)
  * Merge pull request #555 from spacewander/contributing
  * modify CONTRIBUTING.md again
  * Merge pull request #557 from spacewander/check_integrity
  * Merge pull request #561 from lukechilds/improve-json-encoding
  * Clean up git-pull-request
  * Improve JSON encoding
  * Merge pull request #560 from lukechilds/patch-2
  * Merge pull request #559 from lukechilds/patch-1
  * Fix incorrect comment in git-fork
  * Fix typo in Installation.md
  * Merge pull request #558 from spacewander/fix_legacy_problem
  * add doc for git-pull-request and others
  * modify CONTRIBUTING.md
  * update check_integrity with nicolaiskogheim's patch
  * add git-release-patch to Commands.md
  * add git-back to Commands.md
  * regenerate git-obliterate doc
  * follow common shebang
  * add git-show-(un)merged-branches to Commands.md
  * Add check integrity script
  * Add contributing guideline
  * Merge pull request #554 from npcode/fork-origin
  * fork: Fetch `origin` after forking
  * fork: Quote refs by backtick rather than single quote
  * fork: Add git-fork.html removed by accident
  * Merge pull request #553 from npcode/fork-origin
  * fork: Describe the behavior if current dir is repo
  * fork: Rename 'origin' to 'upstream' after forking
  * Merge pull request #552 from npcode/fork-origin
  * fork: Fork 'origin' remote repo if repo is not given
  * Merge pull request #551 from spacewander/zsh-completion
  * submit zsh completion script to upstream
  * update the title of git-clear-soft
  * Merge pull request #550 from phuu/patch-1
  * Add note about overwriting git aliases
  * Merge pull request #547 from svanburen/patch-1
  * Fix typo
  * Merge pull request #545 from spacewander/via_ssh
  * fix git-fork by removing '.git'
  * Merge pull request #543 from spacewander/via_ssh
  * fix the support for forking via ssh
  * Merge pull request #412 from spacewander/git-obliterate
  * Merge pull request #536 from spacewander/delete_submodule
  * Merge pull request #537 from vigilancer/master
  * update documentation. fix "git ignore-io" flags
  * Update the way to delete submodule
  * Merge pull request #533 from Addvilz/add-git-clear-soft-modify-git-clear
  * Edit description of git clear-soft to indicate hard reset
  * Add git-clear-soft command 	Modify git-clear to indicate default behavior of removing git ignored files
  * Merge pull request #513 from lgastako/master
  * Merge pull request #525 from spacewander/git-standup
  * Merge pull request #526 from carrodher/patch-1
  * Add Ubuntu installation
  * add docs for git standup
  * add git-standup
  * Merge pull request #519 from ifdattic/patch-1
  * Fix typo: typess => types
  * Merge pull request #515 from ammarnajjar/fedora-install
  * Add Fedora package-manager installation instruction
  * Add -m flag to git-setup to set the initial commit message.
  * Merge pull request #512 from Lee-W/master
  * Merge pull request #1 from tj/master
  * Fix ignore-io searching bug
  * Merge pull request #508 from pra85/patch-1
  * Mention initial copyright year and add contributors to copyright
  * Merge pull request #509 from supercrabtree/master
  * Fix typo in git-clear documentation
  * Bump version to 4.2.0-dev.
  * add missing git-obliterate documentation
  * now we can specify a commit range for git-obliterate

4.1.0 / 2016-01-25
==================

  * Merge pull request #503 from spacewander/fix_502
  * Merge pull request #507 from rstacruz/git-pr-manual
  * Regerenate git-pr.html
  * Merge pull request #506 from rstacruz/git-pr-manual
  * Update git PR manual to mention URLs
  * handle GIT_EDITOR which contains space
  * use ps -f and awk to emulate pgrep
  * Merge pull request #500 from kumon/master
  * add upstream check & bugfix
  * add example of git-sync
  * upstream is used by default
  * Merge pull request #497 from JanSchulz/win_inst2
  * add git-sync
  * Merge pull request #499 from tj/add-bsd-installation
  * Add BSD installation instructions.
  * installation.md: Update information about column.exe
  * install.cmd: add a check for write rights to the install folder
  * install.cmd: properly escape the ! in the shebang line
  * Merge pull request #496 from JanSchulz/win_inst
  * Make the win installer more robust
  * Merge pull request #494 from apjanke/fix-git-repo-inclusion
  * Merge pull request #495 from JanSchulz/patch-1
  * Update Installation.md
  * Makefile: fix inverted list of commands that use is_git_repo
  * Add Gitter badge.
  * Bump version to 4.1.0-dev.

4.0.0 / 2015-12-28
==================

  * Add David Rogers to AUTHORS.
  * Merge pull request #481 from al-the-x/multi-file-touch
  * Better USAGE message
  * Touch multiple files supplied
  * Use `$@` instead of `$*` re #467
  * Update AUTHORS.
  * Merge pull request #490 from apjanke/etc-under-prefix
  * installation: put $SYSCONFDIR (/etc) under $PREFIX by default
  * Merge pull request #489 from apjanke/customize-etcdir
  * Makefile: allow customizing of SYSCONFDIR (/etc) location
  * Merge pull request #488 from apjanke/git-clear-shebang
  * Fix missing shebang in git-clear and missing +x on others
  * Update all man pages.
  * Merge pull request #479 from JanSchulz/global_gitignore
  * Merge pull request #448 from Lee-W/master
  * Add more info how to set global gitignore
  * Regenerate git-changelog man pages (.html and .1) for #471.
  * Merge pull request #471 from JanSchulz/merge-changelog
  * git-changelog: option to only use merges
  * Merge pull request #469 from JanSchulz/windows-install
  * Merge pull request #468 from spacewander/use-real-purplish
  * Use the default installation path in install.cmd
  * use real purplish
  * Merge pull request #466 from anarcat/master
  * Merge pull request #465 from spacewander/fix-color
  * add simple sed command
  * disable color if the output is not printed to tty
  * replace wildcard '?' to literal '?'
  * git-scp: use portable terminal escape sequences
  * Merge pull request #460 from apjanke/summary-defensive-locale
  * Merge pull request #458 from apjanke/makefile-refactor-libs
  * Merge pull request #459 from apjanke/effort-portable-colors
  * git-summary: protect against character encoding issues with LC_ALL=C
  * git-effort: use portable terminal escape sequences
  * Makefile: refactor is-git-repo inclusion logic
  * Merge pull request #454 from apjanke/makefile-escape-mktemp
  * Makefile: escape $ used inside eval as shell variable
  * Merge pull request #453 from jhnns/pr-url
  * Add possibility to also checkout pull requests based on GitHub urls
  * Merge pull request #452 from akimd/summary-locale
  * summary: beware of locale issues, and pass options to line-summary
  * Merge pull request #443 from Natim/patch-1
  * Merge pull request #444 from spacewander/install_without_alias
  * Merge pull request #446 from ssssam/fix-active-days
  * Merge pull request #447 from RichardLitt/patch-1
  * Update git-ignore-io mannual
  * Replace "export" option with "replace" in git-ignore-io
  * Remove exclamation mark
  * Remove warning when search without word.
  * Fix typo
  * Add warning when there is not argument after search, append and export
  * Fix ~/.gi_list not exist problem
  * Alphabetized list
  * effort, summary: Correctly estimate the number of active days
  * Merge pull request #445 from nicolaiskogheim/straighten-up-effort
  * effort: change order of arguments to function
  * effort: add usage message
  * effort: More robust argument parsing
  * add alias conflict prompt
  * Merge pull request #440 from spacewander/features/feature-alias
  * Add full name for list option
  * Fix usage error
  * Make sure git-authors doesn't return twice the same one.
  * update git-feature docs
  * add alias to git-feature
  * Modify print_last_modified_time to make it Linux compatible
  * Merge pull request #441 from spacewander/features/remove-checkout
  * Merge branch 'master' of https://github.com/Lee-W/git-extras
  * Fix doc error for git-ignore-io
  * Fix doc error for git-ignore-io
  * Remove redundant \n in tr
  * Not to update list each time git-ignore-io is executed
  * Refactor git-ignore-io and remove .gitignore
  * Update manual and description in Commands
  * remove duplicate checkout
  * Generate manual using ronn for git-ignore-io
  * Finish manual for git-ignore-io
  * Fix typo
  * Add description to Commands.md for git-ignore-io
  * Implement search function or git-ignore-io
  * Remove help from git-ignore-io
  * Init gitignore and ignore vim osx temp files
  * Merge gi_extension project into git extras as git-ignore-io
  * Merge pull request #436 from nwinkler/patch-1
  * Merge pull request #437 from nwinkler/patch-2
  * Fixed typo in install.sh
  * Updated documentation for git-ignore
  * Merge pull request #435 from nwinkler/patch-1
  * Added details to git-pr documentation
  * Merge pull request #433 from grindhold/git-clear
  * made more precise security-question.
  * more concise implementation of git-clear
  * Fix typo in variable name
  * added git-clear to Commands.md
  * added manpage for git-clear
  * implemented git-clear
  * Merge pull request #432 from stevemao/patch-1
  * fix link of `git feature|refactor|bug|chore`
  * Merge pull request #425 from nicolaiskogheim/makefile-fix
  * Mark default task as .PHONY
  * Merge pull request #430 from spacewander/git-extras
  * make it possible to update via `git extras`
  * Merge pull request #428 from spacewander/update-commands
  * Merge pull request #429 from nicolaiskogheim/merge-into-ff-only
  * merge-into: change --ff option to --ff-only. fix #421
  * update Commands.md
  * Merge pull request #411 from Natim/add-psykorebase-command
  * Improve man page presentation.
  * Add documentation.
  * Merge pull request #426 from spacewander/update-for-new-version
  * change 'search-term' to 'search-pattern'
  * abort git-alias when too many arguments given.
  * Merge pull request #423 from nicolaiskogheim/effort-paths
  * Merge pull request #424 from nicolaiskogheim/fork-docs
  * Merge pull request #422 from nicolaiskogheim/effort-bugfix
  * effort docs: add note about omitting unsorted results
  * effort docs: add example with directories
  * effort docs: filename -> path
  * effort docs: Adjust numbers in example
  * effort: rename 'file' to 'path' to be more accurate
  * Set default make task to be install
  * fork docs: change SSH to HTTPS in example
  * effort: fix active days always 1
  * Merge pull request #419 from nicolaiskogheim/git-guilt
  * Merge pull request #420 from nicolaiskogheim/git-summary
  * line-summary: 'function f{...' -> 'f() {...'
  * line-summary: add missing quotation marks
  * line-summary: tighten regex
  * summary docs: Remove --line example
  * summary docs: explain relation to git-line-summary
  * summary docs: use correct order of arguments
  * guilt: remove --help option
  * guilt: document call without arguments
  * guilt docs: Capitalize letters
  * guilt: Adds simplified example
  * Merge pull request #418 from nicolaiskogheim/fork-bugfix
  * fork: http-urls had colon instead of slash
  * Merge pull request #416 from nicolaiskogheim/fork-docs
  * Merge pull request #415 from nicolaiskogheim/contrib-docs
  * fork: original->upstream in docs
  * contrib: update docs
  * Merge pull request #414 from nicolaiskogheim/alias-docs
  * alias: docs
  * Add completion for git-psykorebase.
  * Create a bash version of git-psykorebase — Fixes #411
  * Merge pull request #409 from nicolaiskogheim/refactor-alias
  * alias: polish the docs
  * alias: bugfix
  * Merge pull request #408 from nicolaiskogheim/refactor-contrib
  * contrib: refactor, and conform to git
  * Merge pull request #405 from nicolaiskogheim/fix-filenames-with-spaces
  * Merge pull request #404 from nicolaiskogheim/freebsd-fix
  * Merge pull request #406 from nicolaiskogheim/portable-msysgit
  * git-alias: use sed insted of colrm
  * git-changelog: use cp instead of mv
  * git-extras: use git-help instead of man
  * add install script for PortableGit(msysgit)
  * Quote variables bc of filenames with spaces
  * Guard against 'seq 0'
  * Fix error on FreeBSD with process substitution
  * Pass --import-functions if required
  * Merge pull request #403 from andreicristianpetcu/master
  * effort: documentation for git effort --since #326
  * Merge pull request #401 from nicolaiskogheim/effort-above-error-on-NaN
  * effort: error on bad value to --above
  * Merge pull request #400 from nicolaiskogheim/fix-off-by-one
  * Merge pull request #391 from nicolaiskogheim/effort-limit-commits
  * Merge pull request #388 from chernjie/release
  * Merge pull request #398 from nicolaiskogheim/git-graft
  * Merge pull request #399 from nicolaiskogheim/git-archive-file
  * archive-file: cleaner way to get current branch
  * graft: Require destination branch. Fix #23
  * effort: don't count untouched files
  * Add info about new options to man pages
  * Add completion for more options to effort
  * Do proper argument parsing
  * effort: allow sending options to log. Fix #326
  * Merge pull request #396 from tocker/bug/changelog-catch-head
  * Catch "HEAD -> master" when creating the changelog
  * Merge pull request #394 from markeissler/changelog-signal-trap
  * Remove unused var.
  * Merge pull request #390 from nicolaiskogheim/effort-color-relative-to-above
  * Handle signals in git-changelog.
  * Meke coloring respect --above. Fix 74
  * Merge pull request #392 from nicolaiskogheim/WIP-effort-parallelize
  * Avoid spawning subshell
  * Remove unnecessary call to cat
  * perf: reduce calls to git log
  * Parallelize git-effort with xargs
  * Alter options to git log. Remove pipe
  * cd man && ./manning-up.sh && git diff --stat | grep ' 2 ' | awk '{print }' | xargs git checkout --
  * Merge pull request #386 from rstacruz/patch-2
  * Use https for git-fork
  * Merge pull request #385 from gisphm/master
  * added windows installation section in the Installation.md
  * format install.cmd
  * add install.cmd for installation on windows
  * Merge pull request #383 from Somasis/master
  * Makefile: Use a more portable mktemp invocation
  * Using shorter URL
  * Merge pull request #381 from spacewander/master
  * installation with curl and bash
  * Merge pull request #380 from spacewander/master
  * keep installation silent
  * Merge pull request #378 from spacewander/master
  * update installation in `git-extras update`
  * Merge pull request #377 from go2null/master
  * FIXes location of `--` for `grep`
  * FIXes 'mktemp' to work again on Linux
  * Merge pull request #373 from zlx/feature/document_line_summary
  * Document for git-line-summary
  * Merge pull request #372 from spacewander/patch-1
  * install the latest release version of git-extras
  * Merge pull request #370 from phigoro/master
  * git-effort: replace "wc | cut" with "wc | awk"
  * Merge pull request #369 from phigoro/master
  * align hashbang of git-guilt & git-merge-into
  * Merge pull request #368 from zlx/feature/strong_line_summary
  * Fix Fatal for git-line-summary
  * Merge pull request #365 from rkennedy/bug-ignore-regex2
  * Don't treat ignored patterns as regexps

3.0.0 / 2015-04-27
==================

  * Merge pull request #363 from chernjie/pre-release-docs
  * run pre-release ./manning-up.sh
  * Merge pull request #362 from chernjie/git-scp
  * Updated documentation for git-scp and slight feature change
  * Merge pull request #359 from chernjie/docs
  * Merge pull request #361 from markeissler/better-changelog-fixes
  * Fix git tag substring extraction for bash 3.2.
  * Merge pull request #360 from spacewander/master
  * Merge pull request #355 from markeissler/better-changelog-fixes
  * Merge branch 'better-changelog-fixes' of github.com:markeissler/git-extras into better-changelog-fixes
  * add support for git version below 2.2.0
  * Fix git-changelog for compatibility for bash<4. Fixes #337, #338
  * Merge pull request #1 from spacewander/better-changelog-fixes
  * correct the broken regex
  * Rearrange documentation links, see #358
  * Merge branch 'https://github.com/tj/git-extras.wiki/master' into docs, see #358
  * Merge pull request #357 from imsky/merge-repo
  * git-merge-repo
  * git merge-repo
  * add wiki for git-guilt
  * add support for git version below 2.2.0
  * Fix git-changelog for compatibility for bash<4. Fixes #337, #338
  * Merge pull request #349 from spacewander/git-guilt
  * fix indentation errors in git guilt
  * Merge pull request #345 from spacewander/git-guilt
  * Hope to fix #341
  * Merge pull request #344 from Somasis/master
  * use argument separator for usages of `grep` which can choke on weird input
  * helper/reset-env: helper to prevent GREP_OPTIONS from causing issues
  * Merge pull request #342 from spacewander/git-guilt
  * add docs for git guilt
  * add git-guilt
  * Merge pull request #340 from spacewander/git-effort
  * sort unless there is only one item
  * Merge pull request #333 from paulschreiber/merged-branches
  * add show-merged-branches and show-unmerged-branches
  * Merge pull request #334 from paulschreiber/dont-delete-svn-branch
  * when deleting merged branches, preserve "svn" branch for git-svn Fixed #328
  * Merge pull request #324 from chernjie/git-ignore
  * Merge pull request #331 from markeissler/better-changelog-fixes
  * Fix tag trapping when HEAD and tag point to same commit.
  * Fix gitflow commit history output.
  * Merge pull request #327 from markeissler/better-changelog-completion
  * Updated bash completions for better-changelog.
  * Update docs for revised git-changelog.
  * Merge pull request #325 from markeissler/better-changelog
  * Complete rewrite to support commit ranges for pretty and list output.
  * Support ~ in add_patterns for git-ignore
  * Support ~ in show git-ignore
  * add wiki for git-merge-into
  * Merge pull request #323 from spacewander/master
  * add docs for git-merge-into
  * add merge-into to merge two branches quickly
  * Merge pull request #322 from andrewsomething/master
  * git-fresh-branch: Check for changes and prompt for input before nuking. (Issue: #142)
  * Merge pull request #308 from spacewander/git-utility
  * Merge pull request #312 from RichardLitt/feature/concat-extra-feature-names
  * Merge pull request #320 from cironunes/gh-pages-fix
  * fix gh-pages to stash and don't delete files
  * Merge pull request #319 from pfctgeorge/allow-empty-when-setup
  * Allow empty initial commit when setup repo.
  * Merge pull request #317 from jykntr/master
  * git-summary correctly displays project name
  * git scp #300
  * Merge pull request #316 from code42day/changelog-config
  * changelog: add git-config support for format and log options
  * Merge pull request #315 from code42day/consistent-editor
  * use standard git editor in git-authors & git-changelog
  * Merge pull request #314 from snowyu/feature/custom-commit-message
  * + custom commit message options supports
  * Merge pull request #300 from chernjie/git-scp
  * Merge pull request #313 from wooorm/bug/fix-missing-closing-brace
  * Fix missing closing curly brance in `bash_completion.sh`
  * Added in option to concat extra feature names
  * link to git delta
  * git delta usage
  * Merge pull request #310 from imsky/git-delta
  * git-delta
  * Add git-authors
  * Merge pull request #309 from wooorm/feature/add-git-authors
  * Add git-authors
  * Updated Commands (markdown)
  * Updated Commands (markdown)
  * Updated Commands (markdown)
  * Updated Commands (markdown)
  * Updated Commands (markdown)
  * tj#300 Added bash completion
  * extra mktemp into git_extra_mktemp
  * Merge pull request #307 from ckhall/feature/add_git_chore_workflow
  * adding git-chore
  * Merge pull request #306 from spacewander/master
  * add enough X to fix #303. GNU mktemp requires at least three X in the last part of template.
  * Merge pull request #304 from wooorm/git-ignore-typo
  * Fix typo in in `git ignore` message
  * symlink git-rscp to git-scp
  * Avoid duplicating asterisk.
  * Updated License.
  * Fix link to git feature command
  * path argument can not be optional in `rscp`; add more docs
  * OMG a spelling mistake\!
  * Merge pull request #301 from raeffs/master
  * updated documentation because git-squash does no longer delete source-branch
  * Updated man page for git-scp
  * First RFC documentation
  * Merge pull request #299 from jonanp/git-delete-branch
  * When deleting a branch check if git has config.
  * Added a footer.
  * Merge pull request #298 from timfeirg/master
  * remove stuff from readme & form a list
  * add a few keywords
  * some remaining dashes
  * roughly finished
  * Updated Commands (markdown)
  * Updated Commands (markdown)
  * Updated Commands (markdown)
  * gonna use the clean sub command for each command explanation
  * adding links turn out to be a pain, go to sleep
  * add commands page link
  * add commands page, all copy & paste
  * add screencasts
  * copy from readme
  * Updated Install (markdown)
  * Created Install (markdown)
  * adapted a more generic, customizable and friendly script
  * Copy from git-goth https://github.com/chernjie/git-goth
  * Initial Home page
  * Merge pull request #296 from spacewander/add-completion
  * add more bash completion functions
  * Merge pull request #294 from GuillaumeSeren/feature/git-missing-add-ref-completion
  * Add ref completion to git-missing.
  * Merge pull request #293 from tj/revert-291-ignore-man-generated-files
  * Revert "Ignore *.html and *.1 auto-generated files in man/"
  * Merge pull request #292 from RasmusWL/make-handle-missing-man
  * make will not assume man pages already exists
  * Merge pull request #291 from jguenther/ignore-man-generated-files
  * Ignore man/git-*.html and man/git-*.1
  * Remove auto-generated files man/git-*.html and man/git-*.1
  * Merge pull request #226 from tsldh/master
  * added changelog to release as optional flag
  * Merge pull request #289 from mavant/feature/mktemp
  * Use mktemp for temporary file creation.
  * Merge pull request #288 from dead-horse/release-hook
  * make release hook more flexible
  * Merge pull request #287 from benjaminparnell/master
  * added --no-color to git-delete-merged-branches
  * More portable she-bangs.
  * Merge pull request #283 from e28eta/patch-1
  * Use process-specific tmp file and clean up on exit
  * Merge pull request #281 from emilkje/patch-1
  * Merge pull request #280 from valeriangalliat/feature/git-info-posix
  * Update Readme.md
  * git-info: POSIX compliance
  * Merge pull request #278 from tj/delete-submodule-fix
  * Fixes #277
  * Merge pull request #276 from spacewander/master
  * modify the behavior of git-ignore, now it will cd root to find .gitignore

2.2.0 / 2014-11-18
==================

* Update `mktemp` command to work on Mac OS X
* Merged pull request #273 from spacewander/master
* New command 'git root' to show the path to root of repo
* Merged pull request #271 from bohnman/git-rename-tag-fix
* Merged pull request #272 from spacewander/master
* Correct the format of git-rebase-patch.md.
* Replaced visionmedia/git-extras to tj/git-extras
* Merged pull request #270 from kevinawoo/hotfix/git-locked
* Added git-locked to check what files have been locked.
* Merged pull request #268 from GuillaumeSeren/bug/git-missing
* Fixed #267, git-missing did not catch branch name.

2.1.0 / 2014-10-13
==================

 * Fixes #266
 * Merge pull request #264 from jamesmanning/patch-1
 * fixed descriptions: match required/optional params
 * Merge pull request #263 from Yitsushi/bug/180-does-not-check-out-branch-if-it-already-exists
 * fix #180 and #232 feature|bug|refactor checkout
 * Merge pull request #262 from rstacruz/gh-259-git-pr
 * Implement git-pr
 * Merge pull request #261 from sanusart/master
 * FIX: representation of git-info
 * Merge pull request #260 from brandondrew/patch-1
 * import changes *from* a branch
 * Merge pull request #258 from spacewander/master
 * use mixin to add 'is git repo' check for some commands
 * Merge pull request #255 from sanusart/master
 * Bump version in `bin/git-extras`
 * Changelogs for version 2.0.0

2.0.0 / 2014-09-20
==================

 * Merge pull request #254 from spacewander/master
 * add welcome in git-repl
 * Merge pull request #253 from tailored-tunes/master
 * Added option to specify base
 * Merge pull request #252 from sorbits/patch-1
 * Update homebrew URL and remove ‘buggy’ label
 * Merge pull request #250 from sanusart/master
 * ADD: git-reset-file
 * Merge pull request #248 from rstacruz/patch-1
 * Readme: document git-delete-merged-branches
 * Merge pull request #247 from visionmedia/perm_fix
 * File perms fix.
 * Merge pull request #242 from sanusart/fix_feature_refactor_bug
 * Merge pull request #244 from toksea/patch-1
 * Merge pull request #243 from sanusart/issue234
 * Fix wrong git-info heading level in Readme.md
 * Revert 2 commits to `git-changelog`
 * Fix feature|refactor|bug testing argument for string length
 * Merge pull request #240 from egrim/bug/delete-merged-branches-clobbers-master
 * Update docs to match `git-delete-merged-branches` behavior
 * Exempt `master` from deleted branches
 * Merge pull request #239 from bruno-/refactor_git_squash
 * Refactor and improve `git squash`
 * Merge pull request #238 from techjacker/feature/git-fork
 * add git-fork
 * Merge pull request #236 from jbnicolai/align-authors-git-summary
 * Uses column -t to align summary output in a table.
 * Merge pull request #221 from zlx/feature/git-summary-doc
 * Merge pull request #224 from StewartJarod/patch-1
 * Merge pull request #189 from rhacker/patch-1
 * Merge pull request #235 from sanusart/patch-1
 * FIX: check if un-pushed commits
 * Merge pull request #202 from julionc/protecting-files
 * Update Readme.md with lock and unlock commands
 * git-unlock Unlock local files in git repository
 * git-lock Lock files in git repository
 * Merge pull request #100 from niklasf/rebase-patch
 * Add git-rebase-patch
 * Merge pull request #200 from emkay/patch-1
 * Merge pull request #195 from carlcasbolt/patch-1
 * Merge pull request #181 from zeroDivisible/feature/handle-misspellings
 * Merge pull request #193 from pzelnip/git-setup-no-overwrite
 * Merge pull request #183 from chernjie/master
 * Merge pull request #220 from sanusart/master
 * Merge pull request #63 from justone/git_missing
 * Merge pull request #173 from accerqueira/master
 * Merge pull request #194 from makeusabrew/patch-1
 * Merge pull request #216 from stephenmathieson/fix/changelog-large-versions
 * Merge pull request #188 from twolfson/dev/add.multi.delete.squashed
 * Merge pull request #219 from jhoffmann/patch-1
 * Merge pull request #222 from jsipprell/pull/filenames-containing-spaces
 * Merge pull request #223 from mwoc/master
 * Merge pull request #229 from yggdr/master
 * Merge pull request #231 from petersohn/master
 * Make git-obliterate work if there are whitespaces in filename
 * invoke bash via /usr/bin/env for portability
 * improved Makefile with BINPREFIX
 * fixed Makefile uninstall target for man files
 * Letter spacing in author list
 * Use two-space indents for log entry output, so it again is debian changelog compatible (as before commit 1235e4a5)
 * git effort: handle filenames containing whitespace cleanly
 * Add line-summary as an options --line  & doc
 * Add check for no changes in the tree (no sub-modules)
 * Update Readme.md
 * Fix changelog formatting for large version numbers
 * removing `git promote`
 * Update Readme.md
 * Fix git-squash typo
 * Address issue #190, git-setup should test for existing .git in target directory
 * Add comment for the code
 * Added multi-delete for git-delete-branch and git-delete-tag Correcting typos Compiled latest documentation Applying changes from delete-tag to delete-branch for consistency Removed unnecessary string quotes (thanks `git` ref design) and everything works Tags are not being found with string concatenation Updated delete-tag to accept multiple tags Corrections for delete-branch Updating docs for delete-tag Added 'Todd Wolfson' to AUTHORS Updated documentation for delete-branch Moved deletions to concatenate strings and delete in one fell swoop Reworking delete-branch to delete multiple branches in series
 * git-create-branch: bug fix for branch creation use HEAD instead of origin
 * changed the code for git bug|feature|refactor to only accept single argument when not finishing a bug|feature|refactor. This is an easy solution to avoid misspelings of the word 'finish'
 * allow options to be passed through to git log
 * adding git-missing command

1.9.1 / 2014-06-21
==================

 * add --no-merges option to changelog
 * fix git-changelog errors when multiple files match change|history
 * fix git-changelog errors on first usage
 * update git-changelog docs for --no-merges option

1.9.0 / 2013-06-18
==================

 * git-squash: add --me flag to flatten the current branch
 * Make repository_age() "history rewrite safe"
 * add git-line-summary

1.8.0 / 2013-05-15
==================

  * add `git-archive-file(1)`
  * add --tag support to git-changelog(1) to reduce manual editing
  * add !cmd support to git-repl
  * change: git-delete-merged-branches: use -D instead of delete-branch

1.7.0 / 2012-06-11
==================

  * Added repo age to `git-summary` [muhtasib]

1.6.0 / 2012-06-04
==================

  * Added `git-rename-tag`
  * Added current branch to `git-repl`
  * Fixed: use dirname for `git extras update` [wilmoore]

1.5.1 / 2012-03-15
==================

  * Reverted 1.5.0 changes, breaks git-changelog

1.4.0 / 2012-02-08
==================

  * Added: allow files to be passed to `git-effort(1)`. Closes #71
  * Added: hide/show cursor for `git-effort(1)`
  * Changed: color `git-effort(1)` commits / active days independently

1.3.0 / 2012-02-08
==================

  * Added active days to `git-effort(1)` output

1.2.0 / 2012-02-08
==================

  * Added a greater color range to `git-effort(1)`
  * Added `--above <n>` to `git-effort(1)`

1.1.0 / 2012-02-07
==================

  * Added `git-effort(1)` (not yet complete)

1.0.0 / 2012-02-04
==================

  * Added `git-squash BRANCH [MSG]` to merge as a single commit

0.9.0 / 2012-01-15
==================

  * Added bash completion support [jweslley]

0.8.1 / 2011-12-30
==================

  * Removed `git-promote`

0.8.0 / 2011-12-08
==================

  * Added `pre-release` and `post-release `hooks to git-release
  * Added `git-promote`
  * Fixed: "git extra update" errors when pwd includes whitespace

0.7.0 / 2011-08-24
==================

  * Added percentages to `git-summary`

0.6.0 / 2011-06-24
==================

  * Added `git-back` command for soft undos [Kenneth Reitz]

0.5.1 / 2011-05-20
==================

  * revert `git-ignore` but retain argc == 0 as showing .gitignore contents
  * revert broken `git-release`

0.5.0 / 2011-05-19
==================

  * Added `git-alias` [jweslley]
  * Added `git-create-branch` [jweslley]
  * Fixed one-liner due to `git extras update` change
  * Fixed; `git-setup` creates a directory if the provided one does not exist [jweslley]
  * Fixed; `git-setup` support for directories with spaces [jweslley]
  * Fixed; `git-ignore` with no args no longer fails if `.gitignore` does not exist [jweslley]

0.4.1 / 2011-04-05
==================

  * Changed; `git-graft` now defaults to current branch instead of master [Kenneth Reitz]

0.4.0 / 2011-04-05
==================

  * Added `git-refactor`
  * Added `git-bug`
  * Added `git-feature`

0.3.0 / 2011-03-29
==================

  * Added `git-pull-request`

0.2.0 / 2011-03-27
==================

  * Added `git-extras`
  * Added __LICENSE__
  * Removed `git-extras-version`, use `git extras --version`
  * Removed `git-extras-update`, use `git extras update`
  * Changed; make sure to get the last chronological tag, instead of relying on the bogus `git tag` sorting. [guillermo]

0.1.0 / 2011-02-10
==================

  * Added `gh-pages` command

0.0.7 / 2010-10-31
==================

  * Added man pages.
  * Added `make clean`.
  * Added `make docs`.
  * Added -d -> -D. Closes #15.
  * Added git-delete-submodule for delete submodules easily.
  * Added; `git-ignore` now shows the contents of _./.git-ignore_ if no args are present.

0.0.6 / 2010-10-22
==================

  * Added command `git-touch`.
  * Use a shallow clone in `git-update-extras`.
  * Create History.md if git-changelog can't find a target. Fixes #14.

0.0.5 / 2010-10-08
==================

  * Added `git-delete-submodule`.
  * Added; `git-ignore` without pattern shows .gitignore contents.
  * Added; `git-setup` argument is now optional, defaulting to the CWD.
  * Added REPL alias "ls" as ls-files.

0.0.4 / 2010-09-10
==================

  * Added: `git-delete-branch`: Also delete the remote branch.
  * Added `git-summary` commitish support.
  * Added `git-graft` dest branch default of _master_.
  * Added `git-setup`.
  * Added `git-graft`.
  * Added `git-undo` for removing recent commits.
  * Fixed `git-delete-branch`: Don't fail if the local branch doesn't exist.
  * Fixed __PREFIX__ to respect env vars.
  * Fixed shift in `git-count`.

0.0.3 / 2010-08-27
==================

  * Added `git-extras-version`.
  * Added `git-update-extras`.
  * Fixed `git-contrib` issue when the username is in a commit msg.
  * Fixed: delete remote tag only if local was deleted.
  * Fixed: delete remote branch only if local was deleted.
  * Fixed printing of authors for git-summary's on Ubuntu.
  * Fixed: read doesn't have the -e option in SH on my machine at least.

0.0.2 / 2010-08-24
==================

  * Added `git-summary`.
  * Added `git-commits-since`.
  * Added `git-repl`.
  * Added `git-delete-tag`.
  * Added `git-delete-branch`.
  * Added `git-contrib`.
  * Fixed handling off spaces in contributor's name for `git-contrib`.
  * Fixed spaces in `git-release` names/numbers.
  * Fixed readme.

0.0.1 / 2010-08-05
==================

  * Docs for `git-ignore`. Closes #3.
  * Merge branch 'ignore'.
  * Added `git-ignore`.
  * Readme typo.
  * Fixed <tag> in docs.
  * Install docs.
  * Merge branch 'release'.
  * Added `git-release`.
  * Fixed readme.
  * Readme.
  * Passing args to git shortlog.
  * Added --all support to git-count.
  * Initial commit.
0707010000000C000081A40000000000000000000000016627A28D000016C7000000000000000000000000000000000000002100000000git-extras-7.2.0/Installation.md# Installation

## Dependencies

Some commands require extra dependencies which are unavailable in some platforms.
You may need to install them manually. They are:

* bash 4.0+
* Git 2.17+
* `column`
* `awk`
* `find`
* `tput`
* cURL (only required for `git-fork`, `git-ignore-io`, `git-pull-request`)
* `ps` (only required for `git-changelog`)
* `rsync` (only required for `git-rscp`, `git-scp`)
* `xargs` (only required for `git-delete-merged-branches`, `git-force-clone`, `git-sed`, `git-scp`)

If `bash --version` shows a lower version, you need to update it.
For example, the default bash in Mac is usually too old and you may need to update it via `brew install bash`.

## Installing with a package manager

Note that only the Homebrew package is maintained by the git-extras developers directly.
Other packages are maintained by the distribution's packagers or third-party volunteers.

[![Packaging status](https://repology.org/badge/vertical-allrepos/git-extras.svg)](https://repology.org/project/git-extras/versions)

### Debian

```bash
$ sudo $apt_pref update
$ sudo $apt_pref install git-extras
```

### Fedora

```bash
$ sudo dnf install git-extras
```

### openSUSE

Substitute your openSUSE version in the command below (in this case we are considering openSUSE Leap 15.2):

```bash
$ sudo zypper ar https://download.opensuse.org/repositories/devel:/tools:/scm/openSUSE_Leap_15.2/devel:tools:scm.repo
```

and install it:

```bash
$ sudo zypper in -y git-extras
```

### RHEL/CentOS (requires [EPEL](https://fedoraproject.org/wiki/EPEL))

```bash
$ sudo yum install git-extras
```

### Ubuntu

```bash
$ sudo apt-get install git-extras
```

### Nix/NixOS

```bash
$ nix-env -i git-extras
```

### CRUX

[Abdullah](https://github.com/AWAN) has written a [Pkgfile](https://abdullah.today/ports/git-extras/Pkgfile) for his beloved [distro](https://crux.nu).

### Homebrew

```bash
$ brew install git-extras
```

Installing from Homebrew will not give you the option omit certain `git-extras` if they conflict with existing git aliases. To have this option, build from source.

### Arch Linux

* [git-extras](https://aur.archlinux.org/packages/git-extras/)
* [git-extras-git](https://aur.archlinux.org/packages/git-extras-git/)

### Windows

First, please install `Git for Windows 2.x` from 'https://github.com/git-for-windows/git/releases'.
Second, clone the `git-extras` repo into any folder you like.

```bash
git clone https://github.com/tj/git-extras.git
# checkout the latest tag (optional)
git checkout $(git describe --tags $(git rev-list --tags --max-count=1))
```

After that, execute the `install.cmd` in the command prompt. If you installed
git as admin, you need to run this prompt as admin, too. Per default, it finds
a `Git for Windows 2.x` if it's in the path (first path in `where git.exe` wins)
or installed in the default location `%ProgramFiles%\Git`. The fallback is
`C:\SCM\PortableGit`. If you didn't install git into one of these dirs, you have
to supply the path for the install location, e.g. if git is installed
in `c:\git`:

```batch
install.cmd "C:\git"
```

Last, to use `git summary` and `git ignore-io`, you need to copy
`column.exe` from a [msys2][1] installation from `folder-your-msys2-installed/usr/bin`
to `folder-your-git-installed/usr/bin` or wait for git 2.7.1, which will include column.exe.

### FreeBSD

```bash
$ pkg install git-extras
```

### BSD

Use the instructions to build from source below. Make sure you are using `gmake` (GNU `make`) instead of `make`.

## Building from source

Read [Dependencies](#dependencies) and ensure they are installed.

Obtain the git-extras source by cloning [its GitHub repo](https://github.com/tj/git-extras.git) or downloading a tarball of a [release](https://github.com/tj/git-extras/releases). Then install it by doing `make install` from the source tree.

```bash
$ git clone https://github.com/tj/git-extras.git
$ cd git-extras
# checkout the latest tag
$ git checkout $(git describe --tags $(git rev-list --tags --max-count=1))
$ [sudo] make install
```

By default, git-extras is installed under `/usr/local`. To install it at an
alternate location, specify a `PREFIX` when calling `make`.

```bash
# Non-root users can install under their home directory
make install PREFIX=$HOME/software

# For third-party software kept under /opt
make install PREFIX=/opt
```

If you want to relocate the bulk of the installation but still have configuration
files installed to the system `/etc` dir or other alternate location, you can
specify `SYSCONFDIR` in addition to `PREFIX`.

```sh
$ sudo make install PREFIX=/usr/local SYSCONFDIR=/etc
```

See the Makefile for details on advanced configuration options.

## Installing from network

One-liner:

```bash
curl -sSL https://raw.githubusercontent.com/tj/git-extras/main/install.sh | sudo bash /dev/stdin
```

## Installing as Zsh plugin

[ZInit](https://github.com/zdharma/zinit) can install git-extras by using:

```zsh
zinit ice as"program" pick"$ZPFX/bin/git-*" src"etc/git-extras-completion.zsh" make"PREFIX=$ZPFX"
zinit light tj/git-extras

# or with the for syntax + async load
zinit lucid wait'0a' for \
as"program" pick"$ZPFX/bin/git-*" src"etc/git-extras-completion.zsh" make"PREFIX=$ZPFX" tj/git-extras

```

`$ZPFX` is `~/.zinit/polaris` by default. Use `zinit update tj/git-extras` to update.
This method installs in `$HOME`, so you don't need to ask administrator to install package.

## Updating

If you installed git-extras with a package manager, use that package manager's tools to update it.

If you installed git-extras from source, you can run `git-extras update` to update it to the latest release. Be aware that this may lose any configuration options you specified during the original installation.

Enjoy `git-extras`!

[1]: https://sourceforge.net/projects/msys2/
0707010000000D000081A40000000000000000000000016627A28D0000045B000000000000000000000000000000000000001900000000git-extras-7.2.0/LICENSE(The MIT License)

Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> and Contributors

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0707010000000E000081A40000000000000000000000016627A28D0000111D000000000000000000000000000000000000001A00000000git-extras-7.2.0/MakefilePREFIX ?= /usr/local
BINPREFIX ?= "$(PREFIX)/bin"
SYSCONFDIR ?= $(PREFIX)/etc
SHELL := bash

OS = $(shell uname)
ifeq ($(OS), FreeBSD)
	MANPREFIX ?= "$(PREFIX)/man/man1"
	ifeq ($(MANPREFIX), /usr/local)
		MANPREFIX = "/usr/local/man/man1"
	endif
else
	MANPREFIX ?= "$(PREFIX)/share/man/man1"
endif
ifeq ($(OS), Darwin)
	COMPL_DIR ?= "$(DESTDIR)$(SYSCONFDIR)/bash_completion.d"
else ifeq ($(OS), FreeBSD)
	COMPL_DIR ?= "$(DESTDIR)$(SYSCONFDIR)/bash_completion.d"
else
	COMPL_DIR ?= "$(DESTDIR)$(SYSCONFDIR)/bash-completion/completions"
endif

BINS = $(wildcard bin/git-*)
MANS = $(wildcard man/git-*.md)
MAN_BINS = $(filter-out man/git-extras.md, $(MANS))
MAN_HTML = $(MANS:.md=.html)
MAN_PAGES = $(MANS:.md=.1)
CODE_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
INSTALL_VIA ?= source
# Libraries used by all commands
LIB = "helper/reset-env" "helper/git-extra-utility"

COMMANDS = $(subst bin/, , $(BINS))

default: install

docs: $(MAN_HTML) $(MAN_PAGES)

check:
	@echo "Check dependencies before installation"
	@./check_dependencies.sh
	@echo

install: check
	@if [ "$(INSTALL_VIA)" = brew ]; then \
		git apply brew-release.patch || { echo "Can't apply brew release patch"; exit 1; } \
	fi
	mkdir -p $(DESTDIR)$(MANPREFIX)
	mkdir -p $(DESTDIR)$(BINPREFIX)
	@echo '... installing bins to '$(DESTDIR)$(BINPREFIX)
	@echo '... installing man pages to '$(DESTDIR)$(MANPREFIX)
	$(eval TEMPFILE := $(shell mktemp -q $${TMPDIR:-/tmp}/git-extras.XXXXXX 2>/dev/null || mktemp -q))
	@# chmod from rw-------(default) to rwxrwxr-x, so that users can exec the scripts
	@chmod 775 $(TEMPFILE)
	$(eval EXISTED_ALIASES := $(shell \
		git config --get-regexp 'alias\..*' | awk '{print "git-" substr($$1, 7)}'))
	@$(foreach COMMAND, $(COMMANDS), \
		should_install='yes'; \
		if [ ! -z "$(filter $(COMMAND), $(EXISTED_ALIASES))" ] && [ "$$SKIP_CONFLICT_CHECK" != yes ]; then \
			read -p "$(COMMAND) conflicts with an alias, still install it? [y/n]: " answer; \
			if [ "$$answer" = 'n' ] || [ "$$answer" = 'N' ]; then \
				should_install="no"; \
			fi; \
		fi; \
		if [ "$$should_install" = 'yes' ]; then \
			echo "... installing $(COMMAND)"; \
			head -1 bin/$(COMMAND) > $(TEMPFILE); \
			cat $(LIB) >> $(TEMPFILE); \
			if ! grep "$(COMMAND)" not_need_git_repo >/dev/null; then \
				cat ./helper/is-git-repo >> $(TEMPFILE); \
			fi; \
			if grep "$(COMMAND)" need_git_commit >/dev/null; then \
				cat ./helper/has-git-commit >> $(TEMPFILE); \
			fi; \
			tail -n +2 bin/$(COMMAND) >> $(TEMPFILE); \
			cp -f $(TEMPFILE) $(DESTDIR)$(BINPREFIX)/$(COMMAND); \
		fi; \
	)
	@if [ -z "$(wildcard man/git-*.1)" ]; then \
		echo "WARNING: man pages not created, use 'make docs' (which requires 'ronn' ruby lib)"; \
	else \
		cp -f man/git-*.1 $(DESTDIR)$(MANPREFIX); \
		echo "cp -f man/git-*.1 $(DESTDIR)$(MANPREFIX)"; \
	fi
	@mkdir -p $(COMPL_DIR)
	cp -f etc/bash_completion.sh $(COMPL_DIR)/git-extras
	@echo ""
	@echo "If you are a zsh user, you may want to 'source $(CODE_DIR)etc/git-extras-completion.zsh'" \
		"and put this line into ~/.zshrc to enable zsh completion"
	@echo "If you are a fish user, you may want to copy or link '$(CODE_DIR)etc/git-extras.fish'" \
		"to '~/.config/fish/completions/'"

man/index.txt: $(MANS)
	echo '# manuals' > $@.tmp
	for file in $(sort $^) ; do \
		extra=$${file%.md} ; \
		extra=$${extra#man/} ; \
		echo "$$extra(1) $$extra" >> $@.tmp ; \
	done
	mv -f $@.tmp $@

man/git-extras.md: $(MAN_BINS)
	ln=$$(awk '/## COMMANDS/{print NR};' $@) ; \
	awk "NR <= $$ln+1" $@ > $@.tmp
	for file in $(sort $^) ; do \
		head -n1 $$file | \
		sed 's/^/   - **/;s/ -- /** /' >> $@.tmp ; \
	done
	ln=$$(awk '/## AUTHOR/{print NR};' $@) ; \
	awk "NR >= $$ln-1" $@ >> $@.tmp
	mv -f $@.tmp $@

man/%.html: man/%.md man/index.txt
	ronn \
		--manual "Git Extras" \
		--html \
		--pipe \
		$< > $@

man/%.1: man/%.md
	ronn -r \
		--manual "Git Extras" \
		--pipe \
		$< > $@

uninstall:
	@$(foreach BIN, $(BINS), \
		echo "... uninstalling $(DESTDIR)$(BINPREFIX)/$(notdir $(BIN))"; \
		rm -f $(DESTDIR)$(BINPREFIX)/$(notdir $(BIN)); \
	)
	@$(foreach MAN, $(MAN_PAGES), \
		echo "... uninstalling $(DESTDIR)$(MANPREFIX)/$(notdir $(MAN))"; \
		rm -f $(DESTDIR)$(MANPREFIX)/$(notdir $(MAN)); \
	)
	rm -f $(COMPL_DIR)/git-extras

clean: docclean

docclean:
	rm -f man/*.1
	rm -f man/*.html

test:
	pytest

.PHONY: default docs check install uninstall clean docclean test
0707010000000F000081A40000000000000000000000016627A28D000005CF000000000000000000000000000000000000001B00000000git-extras-7.2.0/Readme.md# Git Extras

Little git extras.

## Screencasts

Just getting started? Check out these screencasts:

* [introduction](https://vimeo.com/45506445) ([archive.org link](https://web.archive.org/web/20230219181235id_/vod-progressive.akamaized.net/exp=1676834145~acl=%2Fvimeo-prod-skyfire-std-us%2F01%2F4101%2F1%2F45506445%2F107111328.mp4~hmac=065b68f23c4b6a222463097b36d1c346995a9559baa9b819972da95550018471/vimeo-prod-skyfire-std-us/01/4101/1/45506445/107111328.mp4)) -- covers `git-ignore`, `git-setup`, `git-changelog`, `git-release`, `git-effort` and more

## Installation

See the [Installation](Installation.md) page.

## Commands

Go to the [Commands](Commands.md) page for basic usage and examples.

__GIT utilities__ -- repo summary, repl, changelog population, author commit percentages and more

## Contributing

Interested in contributing? Awesome!

Please read [Contributing](CONTRIBUTING.md) before you make a PR, thanks!

## The change of the default branch

As of Git Extras 6.4 the assumed default branch name changed from `master` to `main`.
This affects the Git Extras commands `git archive-file`, `git delete-merged-branches`, `git delta`, `git pull-request`, `git show-merged-branches`, `git show-unmerged-branches`, and `git squash`.

To change the default branch name to `master`: change either the configuration `git-extras.default-branch` or `init.defaultBranch` to `master`; the former takes precedence.

For example, `git config git-extras.default-branch master`.
07070100000010000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000001500000000git-extras-7.2.0/bin07070100000011000081ED0000000000000000000000016627A28D00000142000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-abort#!/usr/bin/env bash

gitdir="$(git rev-parse --git-dir)" || exit
opfound=
fcnt=
for i in cherry-pick merge rebase revert; do
  f=${i^^}
  f=${f/-/_}
  test -f "${gitdir}/${f}_HEAD" && fcnt=1$fcnt && opfound=$i
done

if [ "${fcnt}" != 1 ]; then
  echo "I don't know what to abort" >&2
  exit 1
fi

git "${opfound}" --abort
07070100000012000081ED0000000000000000000000016627A28D000004FA000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-alias#!/usr/bin/env bash

options=""

usage() {
cat <<HERE
usage: git alias [options]                          # list all aliases
   or: git alias [options] <search-pattern>         # show aliases matching pattern
   or: git alias [options] <alias-name> <command>   # alias a command
options:

    --global  Show or create alias in the system config
    --local   Show or create alias in the repository config
HERE
}

if [[ "$1" == "--local" || "$1" == "--global" ]]; then
    options=$1
    shift
fi

case $# in
  0)
      if [[ -z "$options" ]]; then
        git config --get-regexp 'alias.*' | sed 's/^alias\.//' | sed 's/[ ]/ = /' | sort
      else
        git config "$options" --get-regexp 'alias.*' | sed 's/^alias\.//' | sed 's/[ ]/ = /' | sort
      fi
      ;;
  1)
      if [[ -z "$options" ]]; then
        git config --get-regexp 'alias.*' | sed 's/^alias\.//' | sed 's/[ ]/ = /' | sort | grep -e "$1"
      else
        git config "$options" --get-regexp 'alias.*' | sed 's/^alias\.//' | sed 's/[ ]/ = /' | sort | grep -e "$1"
      fi
      ;;
  2)
      if [[ -z "$options" ]]; then
        git config alias."$1" "$2"
      else
        git config "$options" alias."$1" "$2"
      fi
      ;;
  *) >&2 echo "error: too many arguments." && usage && exit 1 ;;
esac
07070100000013000081ED0000000000000000000000016627A28D0000047D000000000000000000000000000000000000002600000000git-extras-7.2.0/bin/git-archive-file#!/usr/bin/env bash

# extract current branch name
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)

# get name of the most top folder of current directory, used for the
# output filename
ARCHIVE_NAME=$(basename "$(git rev-parse --show-toplevel)")

if [[ $BRANCH = tags* ]]; then
    BRANCH=$(git describe)
    echo Building for tag "\"$BRANCH\""
    FILENAME=$ARCHIVE_NAME.$BRANCH.zip
else
    echo Building archive on branch "\"$BRANCH\""
    # get a version string, so archives will not be overwritten when creating
    # many of them
    VERSION=$(git describe --always --long)
    # if not on master append branch name into the filename
    if [ "$BRANCH" = "$(git_extra_default_branch)" ]; then
        FILENAME=$ARCHIVE_NAME.$VERSION.zip
    else
        FILENAME=$ARCHIVE_NAME.$VERSION.$BRANCH.zip
    fi
fi

# rename invalid chars for the file path
FILENAME=${FILENAME//\//-}
FILENAME=${FILENAME//\\/-}
# combine path and filename
OUTPUT=$PWD/$FILENAME

# building archive
git archive --format zip --output "$OUTPUT" "$BRANCH"

# also display size of the resulting file
echo Saved to \""$FILENAME"\" \("$(du -h "$OUTPUT" | cut -f1)"\)
07070100000014000081ED0000000000000000000000016627A28D000003BE000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-authors#!/usr/bin/env bash

LIST=false
NO_EMAIL=false
FILE=""

while [[ $# -gt 0 ]]; do
  case $1 in
    -l|--list )
      LIST=true
      shift
      ;;
    --no-email )
      NO_EMAIL=true
      shift
      ;;
    * )
      break
  esac
done

if ! $LIST; then
  FILE=$1
  if [ -z "$FILE" ]; then
    FILE=$(find . -mindepth 1 -maxdepth 1 \( -iname '*authors*' -o -iname '*contributors*' \) | head -n1)
    if [ -z "$FILE" ]; then
      FILE='AUTHORS'
    fi
  fi
fi

#
# list authors sorted by number of commits (descending).
#

authors() {
  if $NO_EMAIL; then
    # email will be used to uniq authors.
    git shortlog HEAD -sne | awk '{$1=""; sub(" ", ""); print}' | awk -F'<' '!x[$1]++' | awk -F'<' '!x[$2]++' \
      | awk -F'<' '{gsub(/ +$/, "", $1); print $1}'
  else
    git shortlog HEAD -sne | awk '{$1=""; sub(" ", ""); print}' | awk -F'<' '!x[$1]++' | awk -F'<' '!x[$2]++'
  fi
}

#
# authors.
#

if $LIST; then
  authors
else
  authors >> "$FILE"
fi
07070100000015000081ED0000000000000000000000016627A28D000009A5000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-browse#!/usr/bin/env bash

remote=${1:-""}
branch=""
filename=${2:-""}
line1=${3:-""}
line2=${4:-""}

# get remote name
if [[ $remote == "" ]]; then
    branch="$(git rev-parse --abbrev-ref HEAD 2>/dev/null)"
    remote=$(git config branch."${branch}".remote || echo "origin")
fi

if [[ $remote == "" ]]; then
    echo "Remote not found"
    exit 1
fi

remote_url=$(git remote get-url "$remote") || exit $?

if [[ $remote_url = git@* ]]; then
    url=$(echo "$remote_url" | sed -E -e 's/:/\//' -e 's/\.git$//' -e 's/.*@(.*)/http:\/\/\1/')
elif [[ $remote_url = http* ]]; then
    url=${remote_url%.git}
fi

# construct urls
commit_hash=$(git rev-parse HEAD 2>/dev/null)
commit_or_branch=${commit_hash:-${branch}}

if [[ $remote_url =~ gitlab ]]; then
    # construct gitlab urls
    # https://gitlab.com/<user_or_group>/<repo>/-/blob/<commit_or_branch>/<filename>#L<line1>-<line2>
    if [[ -n ${filename} ]]; then
        url="${url}/-/blob/${commit_or_branch}/${filename}"
        if [[ -n "${line1}" ]]; then
            url="${url}#L${line1}"
            if [[ -n "${line2}" ]]; then
                url="${url}-${line2}"
            fi
        fi
    fi
elif [[ $remote_url =~ github ]]; then
    # construct github urls
    # https://github.com/<user_or_org>/<repo>/blob/<commit_or_branch>/<filename>#L<line1>-L<line2>
    if [[ -n "${filename}" ]]; then
        url="${url}/blob/${commit_or_branch}/${filename}"
        if [[ -n "${line1}" ]]; then
            url="${url}#L${line1}"
            if [[ -n "${line2}" ]]; then
                url="${url}-L${line2}"
            fi
        fi
    fi
elif [[ $remote_url =~ bitbucket ]]; then
    # construct bitbucket urls
    # https://bitbucket.org/<user_or_org>/<repo>/src/<commit_or_branch>/<filename>#lines-<line1>:<line2>
    if [[ -n ${filename} ]]; then
        url=${url}/src/${commit_or_branch}/${filename}
        if [[ -n "${line1}" ]]; then
            url="${url}#lines-${line1}"
            if [[ -n "${line2}" ]]; then
                url="${url}:${line2}"
            fi
        fi
    fi
fi

# open url
case "$OSTYPE" in
darwin*)
    # MacOS
    open "$url"
    ;;
msys)
    # Git-Bash on Windows
    start "$url"
    ;;
linux*)
    # Handle WSL on Windows
    if uname -a | grep -i -q Microsoft && command -v powershell.exe; then
        powershell.exe -NoProfile start "$url"
    else
        xdg-open "$url"
    fi
    ;;
*)
    # fall back to xdg-open for BSDs, etc.
    xdg-open "$url"
    ;;
esac
07070100000016000081ED0000000000000000000000016627A28D000004D9000000000000000000000000000000000000002300000000git-extras-7.2.0/bin/git-browse-ci#!/usr/bin/env bash

set -e -o pipefail
if [[ $1 == "" ]]
then
    branch=$(git rev-parse --abbrev-ref HEAD &> /dev/null)
    remote=$(git config branch."${branch}".remote || echo "origin")
else
    remote=$1
fi

if [[ -z $remote ]]
then
    echo "Remote not found"
    exit 1
fi

remote_url=$(git remote get-url "${remote}") || exit $?

if [[ $remote_url = git@* ]]
then
    url=$(echo "${remote_url}" | sed -E -e 's/:/\//' -e 's/\.git$//' -e 's/.*@(.*)/http:\/\/\1/')
elif [[ $remote_url = http* ]]
then
    url=${remote_url%.git}
fi

if [[ $url =~ github ]]
then
    ci_url=${url}/actions
elif [[ $url =~ gitlab ]]
then
    ci_url=${url}/-/pipelines
elif [[ $url =~ bitbucket ]]
then
    ci_url=${url}/addon/pipelines/home
fi
case "$OSTYPE" in
    darwin*)
        # MacOS
        open "${ci_url}"
        ;;
    msys)
        # Git-Bash on Windows
        start "${ci_url}"
        ;;
    linux*)
        # Handle WSL on Windows
        if uname -a | grep -i -q Microsoft && command -v powershell.exe
        then
            powershell.exe -NoProfile start "${ci_url}"
        else
            xdg-open "${ci_url}"
        fi
        ;;
    *)
        # fall back to xdg-open for BSDs, etc.
        xdg-open "${ci_url}"
        ;;
esac
07070100000017000081ED0000000000000000000000016627A28D00000977000000000000000000000000000000000000001D00000000git-extras-7.2.0/bin/git-brv#!/usr/bin/env bash
# A sorted prettier branch -vv

if ! (( BASH_VERSINFO[0] > 4 ||
        BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 2 )); then
    printf >&2 'This script requires bash 4.2 or newer\n'
    exit 1
fi

# allow the user to set a default reverse option in an environment variable
reverse=$(git config --get git-extras.brv.reverse || echo false)
while [[ $# -gt 0 ]]; do
    case $1 in
    -r | --reverse)
        reverse=true
        shift
        ;;
    *)
        break
        ;;
    esac
done

if [[ -t 1 ]]; then
    shopt -s checkwinsize
    COLUMNS=$(tput cols)
    color_branch_local=$(git config --get-color color.branch.local normal)
    color_branch_current=$(git config --get-color color.branch.current green)
    color_diff_commit=$(git config --get-color color.diff.commit yellow)
    color_branch_upstream=$(git config --get-color color.branch.upstream blue)
    reset=$(tput sgr0)
fi


declare -A upstream date hash message
eval "$(
    git for-each-ref --format='upstream[%(refname:short)]=%(upstream:short)' \
                     --shell 'refs/heads/**'
)"

for b in "${!upstream[@]}"; do
    blen=${#b} ulen=${#upstream[$b]}
    (( bwidth = blen > bwidth ? blen : bwidth ))
    (( uwidth = ulen > uwidth ? ulen : uwidth ))
    IFS=/ read -r 'date[$b]' 'hash[$b]' 'message[$b]' < <(
        git log --no-walk=unsorted --format=%ct/%h/%s "$b" --
    )
    hlen=${#hash[$b]}
    (( hwidth = hlen > hwidth ? hlen : hwidth ))
done

mapfile -t ordered < <(
    # the reverse option of git-brv causes the sort to be sorted normally rather than in reverse
    reverse_opt=""
    if [[ $reverse = false ]]; then
        reverse_opt="-r"
    fi
    for b in "${!date[@]}"; do
        printf '%d\t%s\n' "${date[$b]}" "$b"
    done | sort -n $reverse_opt | cut -f2-
)

current=$(git symbolic-ref -q --short HEAD)

for b in "${ordered[@]}"; do
    branch_color=$color_branch_local
    if [[ $b = "$current" ]]; then
        branch_color=$color_branch_current
    fi
    if [[ -t 1 ]]; then
        msg=${message[$b]:0:COLUMNS-bwidth-uwidth-hwidth-14}
    else
        msg=${message[$b]}
    fi
    printf '%(%Y-%m-%d)T %s%*s%s %s%*s%s %s%*s%s %s\n' \
           "${date[$b]}" \
           "$branch_color" "-$bwidth" "$b" "$reset" \
           "$color_branch_upstream" "-$uwidth" "${upstream[$b]}" "$reset" \
           "$color_diff_commit" "-$hwidth" "${hash[$b]}" "$reset" \
           "$msg"
done
07070100000018000081ED0000000000000000000000016627A28D00001B03000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-bulk#!/usr/bin/env bash
inverse=$(tput rev)
reset=$(tput sgr0)
txtbld=$(tput bold)
bldred=${txtbld}$(tput setaf 1)

# default option settings
guardedmode=false
singlemode=false
allwsmode=false
quiet=false

#
# print usage message
#
usage() {
  echo 1>&2 "usage: git bulk [-q|--quiet] [-g] ([-a]|[-w <ws-name>]) <git command>"
  echo 1>&2 "       git bulk --addworkspace <ws-name> <ws-root-directory> (--from <URL or file>)"
  echo 1>&2 "       git bulk --removeworkspace <ws-name>"
  echo 1>&2 "       git bulk --addcurrent <ws-name>"
  echo 1>&2 "       git bulk --purge"
  echo 1>&2 "       git bulk --listall"
}

cdfail() {
  echo 1>&2 "failed to change directory: $1"
  exit 1
}

# add another workspace to global git config
function addworkspace {
  git config --global bulkworkspaces."$wsname" "$wsdir";
  if [ -n "$source" ]; then
        if [ ! -d "$wsdir" ]; then echo 1>&2 "Path of workspace doesn't exist, make it first."; exit 1; fi
        regex='http(s)?://|ssh://|(git@)?.*:.*/.*'
        if [[ "$source" =~ $regex ]]; then
            pushd "$wsdir" > /dev/null || cdfail "$wsdir"
            git clone "$source"
            popd > /dev/null || cdfail "$OLDPWD"
        else
            source=$(realpath "$source" 2>/dev/null)
            if [ -f "$source" ]; then
                pushd "$wsdir" > /dev/null || cdfail "$wsdir"
                while IFS= read -r line; do
                  if [ -n "$line" ]; then
                    # the git clone command to take the complete line in the repository.txt as separate argument. This facilitated the cloning of the repository with a custom folder name.
                    # shellcheck disable=SC2086
                    git clone $line;
                  fi
                done < "$source"
                popd > /dev/null || cdfail "$OLDPWD"
            else
                echo 1>&2 "format of URL or file unknown"
            fi
        fi
    fi
}

# add current directory
function addcurrent { git config --global bulkworkspaces."$wsname" "$PWD"; }

# remove workspace from global git config
function removeworkspace { checkWSName && git config --global --unset bulkworkspaces."$wsname"; }

# remove workspace from global git config
function purge { git config --global --remove-section bulkworkspaces; }

# list all current workspace locations defined
function listall { git config --global --get-regexp bulkworkspaces; }

# guarded execution of a git command in one specific repository
function guardedExecution () {
  if [ "${quiet?}" != "true" ] || $guardedmode; then
    echo 1>&2 "${bldred}->${reset} executing ${inverse}git $gitcommand${reset} in repository ${leadingpath%/*}/${bldred}${curdir##*/}${reset}"
  fi

  if $guardedmode; then
    echo 1>&2 -n "   Execute command here (y/n)? "
    read -n 1 -r </dev/tty; echo 1>&2
    if [[ $REPLY =~ ^[Yy]$ ]]; then
      git "$@"
    fi
  else
    git "$@"
  fi
}

# check if the passed command is known as a core git command
function checkGitCommand () {
  if git help -a | grep -o -q "\b${corecommand}\b"; then
    echo 1>&2 "Core command \"$corecommand\" accepted."
  else
    if git config --get-regexp alias | grep -o -q "\.${corecommand} "; then
      echo 1>&2 "Alias ${corecommand} accepted."
    else
      usage && echo 1>&2 "error: unknown GIT command: $corecommand" && exit 1
    fi
  fi
}

# check if workspace name is registered
function checkWSName () {
  while read -r workspace; do
    parseWsName "$workspace"
    if [[ $rwsname == "$wsname" ]]; then return; fi
  done <<< "$(listall)"
  # when here the ws name was not found
  usage && echo 1>&2 "error: unknown workspace name: $wsname" && exit 1
}

# parse out wsname from workspacespec
function parseWsName () {
  local wsspec="$1"
  rwsdir=${wsspec#* }
  rwsname=${wsspec#*.} && rwsname=${rwsname%% *}
}

# detects the wsname of the current directory
function wsnameToCurrent () {
  while read -r workspace; do
    if [ -z "$workspace" ]; then continue; fi
    parseWsName "$workspace"
    if echo "$PWD" | grep -o -q "$rwsdir"; then wsname="$rwsname" && return; fi
  done <<< "$(listall)"
  # when here then not in workspace dir
  echo 1>&2 "error: you are not in a workspace directory. your registered workspaces are:" && \
    wslist="$(listall)" && echo 1>&2 "${wslist:-'<no workspaces defined yet>'}" && exit 1
}

# helper to check number of arguments.
function allowedargcount () {
	if [ "$paramcount" -ne "$1"  ] && [ "$paramcount" -ne "$2" ]; then
		echo 1>&2 "error: wrong number of arguments" && usage;
		exit 1;
	fi
}

# execute the bulk operation
function executBulkOp () {
  checkGitCommand
  if ! $allwsmode && ! $singlemode; then wsnameToCurrent; fi # by default git bulk works within the 'current' workspace
  listall | while read -r workspacespec; do
    parseWsName "$workspacespec"
    if [[ -n $wsname ]] && [[ $rwsname != "$wsname" ]]; then continue; fi
    eval cd "\"$rwsdir\""
    local actual=$PWD
    [ "${quiet?}" != "true" ] && echo 1>&2 "Executing bulk operation in workspace ${inverse}$actual${reset}"

    allGitFolders=( $(eval find -L . -name ".git") )

    for line in "${allGitFolders[@]}"; do
      local gitrepodir=${line::${#line}-5} # cut the .git part of find results to have the root git directory of that repository
      eval cd "\"$gitrepodir\"" # into git repo location
      local curdir=$PWD
      local leadingpath=${curdir#"${actual}"}
      guardedExecution "$@"
      eval cd "\"$rwsdir\"" # back to origin location of last find command
    done
  done
}

paramcount="${#}"

# if no arguments show usage
if [[ $paramcount -le 0 ]]; then usage; fi

# parse command parameters
while [ "${#}" -ge 1 ] ; do
  case "$1" in
		--quiet|-q) quiet='true' ;;
    --listall|--purge)
      butilcommand="${1:2}" && break ;;
    --removeworkspace|--addcurrent|--addworkspace)
      butilcommand="${1:2}" && wsname="$2" && wsdir="$3" && if [ "$4" == "--from" ]; then source="$5"; fi && break ;;
    -a)
      allwsmode=true ;;
    -g)
      guardedmode=true ;;
    -w)
      singlemode=true && shift && wsname="$1" && checkWSName ;;
    --*)
      usage && echo 1>&2 "error: unknown argument $1" && exit 1 ;;
    -*)
      usage && echo 1>&2 "error: unknown argument $1" && exit 1 ;;
    *) # git core commands
      butilcommand="executBulkOp" && corecommand="$1" && gitcommand="$*" && break ;;
  esac && shift
done

# check option compatibility
if $allwsmode && $singlemode; then echo 1>&2 "error: options -w and -a are incompatible" && exit 1; fi

# if single mode check the supplied workspace name
if $singlemode; then echo 1>&2 "Selected single workspace mode in workspace: $wsname" && checkWSName; fi

# check right number of arguments
case $butilcommand in
  listall|purge) allowedargcount 1;;
  addcurrent|removeworkspace) allowedargcount 2;;
  addworkspace) allowedargcount 3 5;;
esac

# pass the origin arguments to the 'executBulkOp'
$butilcommand "$@" # run user command
07070100000019000081ED0000000000000000000000016627A28D00004856000000000000000000000000000000000000002300000000git-extras-7.2.0/bin/git-changelog#!/usr/bin/env bash

DEF_TAG_RECENT="n.n.n"
GIT_LOG_OPTS="$(git config changelog.opts)"
GIT_LOG_FORMAT="$(git config changelog.format)"
[[ -z "$GIT_LOG_FORMAT" ]] && GIT_LOG_FORMAT='  * %s'
GIT_MERGELOG_FORMAT="$(git config changelog.mergeformat)"
[[ -z "$GIT_MERGELOG_FORMAT" ]] && GIT_MERGELOG_FORMAT='  * %s%n%w(64,4,4)%b'
GIT_EDITOR="$(git var GIT_EDITOR)"
PROGNAME="git-changelog"

_usage() {
cat << EOF
usage: $PROGNAME options [file]
usage: $PROGNAME -h|help|?

Generate a Changelog from git(1) tags (annotated or lightweight) and commit
messages. Existing Changelog files with filenames that begin with 'Change' or
'History' will be identified automatically and their content will be appended
to the new output generated (unless the -p|--prune-old option is used). If no
tags exist, then all commits are output; if tags exist, then only the most-
recent commits are output up to the last identified tag.

OPTIONS:
  -a, --all                 Retrieve all commits (ignores --start-tag/commit, --final-tag)
  -l, --list                Display commits as a list, with no titles
  -t, --tag                 Tag label to use for most-recent (untagged) commits
  -f, --final-tag           Newest tag to retrieve commits from in a range
  -s, --start-tag           Oldest tag to retrieve commits from in a range
      --start-commit        Like --start-tag but use commit instead of tag
  -n, --no-merges           Suppress commits from merged branches
  -m, --merges-only         Only uses merge commits (uses both subject and body of commit)
  -p, --prune-old           Replace existing Changelog entirely with new content
  -x, --stdout              Write output to stdout instead of to a Changelog file
  -h, --help, ?             Show this message
EOF
}

_error() {
  [ $# -eq 0 ] && _usage && exit 0

  echo
  echo "ERROR: " "$@"
  echo
}

# _setValueForKeyFakeAssocArray()
# /*!
# @abstract Set value for key from a fake associative array
# @discussion
# Iterates over target_ary (an indexed array), searching for target_key, if the
#   key is found its value is set to new_value otherwise the target_key and
#   new_value are appended to the array.
#
#   The indexed array values must conform to this format:
#     "key:value"
#   Where key and value are separated by a single colon character.
#
#   Specify empty values as an empty, quoted string.
#
#   So-called "fake" associative arrays are useful for environments where the
#   installed version of bash(1) precedes 4.0.
# @param target_key Key to retrieve
# @param new_value New or updated value
# @param target_ary Indexed array to scan
# @return Returns new array with updated key (status 0) or an empty array
#   (status 1) on failure.
# */
_setValueForKeyFakeAssocArray() {
  # parameter list supports empty arguments!
  local target_key="$1"; shift
  local new_value="$1"; shift
  local target_ary=()
  local defaultIFS="$IFS"
  local IFS="$defaultIFS"
  local found=false

  IFS=$' ' target_ary=( $1 ) IFS="$defaultIFS"

  [[ -z "${target_key}" || "${#target_ary[@]}" -eq 0 ]] && echo "${value}" && return 1

  local _target_ary_length="${#target_ary[@]}"
  local i
  for (( i=0; i<"${_target_ary_length}"; i++ )); do
    local __val="${target_ary[$i]}"

    if [[ "${__val%%:*}" == "${target_key}" ]]; then
      target_ary[$i]="${__val%%:*}:${new_value}"
      found=true
      break
    fi

    unset __val
  done
  unset i _target_ary_length

  # key not found, append
  [[ "$found" == false ]] && target_ary+=( "${target_key}:${new_value}" )

  printf "%s" "${target_ary[*]}"
}

# _valueForKeyFakeAssocArray()
# /*!
# @abstract Fetch value for key from a fake associative array
# @discussion
# Iterates over target_ary (an indexed array), searching for target_key, if the
#   key is found its value is returned.
#
#   The indexed array values must conform to this format:
#     "key:value"
#   Where key and value are separated by a single colon character.
#
#   So-called "fake" associative arrays are useful for environments where the
#   installed version of bash(1) precedes 4.0.
# @param target_key Key to retrieve
# @param target_ary Indexed array to scan
# @return Returns string containing value (status 0) or an empty string
#   (status 1) on failure.
# */
_valueForKeyFakeAssocArray() {
  local target_key="$1"
  local target_ary=()
  local defaultIFS="$IFS"
  local IFS="$defaultIFS"
  local value=""

  IFS=$' ' target_ary=( $2 ) IFS="$defaultIFS"

  [[ -z "${target_key}" || "${#target_ary[@]}" -eq 0 ]] && echo "${value}" && return 1

  local t
  for t in "${target_ary[@]}"; do
    if [[ "${t%%:*}" == "${target_key}" ]]; then
      value="${t#*:}"
      break
    fi
  done
  unset t

  echo -e "${value}"; return 0
}

_fetchCommitRange() {
  local list_all="${1:-false}"
  local start_tag="$2"
  local final_tag="$3"

  # This shellcheck disable is applied to the whole if-body
  # shellcheck disable=SC2086
  if [[ "$list_all" == true ]]; then
    git log $GIT_LOG_OPTS --pretty=format:"${CUR_GIT_LOG_FORMAT}"
  elif [[ -n "$final_tag" && "$start_tag" == "null" ]]; then
    git log $GIT_LOG_OPTS --pretty=format:"${CUR_GIT_LOG_FORMAT}" "${final_tag}"
  elif [[ -n "$final_tag" ]]; then
    git log $GIT_LOG_OPTS --pretty=format:"${CUR_GIT_LOG_FORMAT}" "${start_tag}"'..'"${final_tag}"
  elif [[ -n "$start_tag" ]]; then
    git log $GIT_LOG_OPTS --pretty=format:"${CUR_GIT_LOG_FORMAT}" "${start_tag}"'..'
  fi | sed 's/^  \* \*/  */g'
}

_formatCommitPlain() {
  local start_tag="$1"
  local final_tag="$2"

  printf "%s\n" "$(_fetchCommitRange "false" "$start_tag" "$final_tag")"
}

_formatCommitPretty() {
  local title_tag="$1"
  local title_date="$2"
  local start_tag="$3"
  local final_tag="$4"
  local title="$title_tag / $title_date"
  local title_underline=""

  local i
  for i in $(seq ${#title}); do
    title_underline+="="
  done
  unset i

  printf '\n%s\n%s\n' "$title" "$title_underline"
  printf "\n%s\n" "$(_fetchCommitRange "false" "$start_tag" "$final_tag")"
}

commitList() {
  # parameter list supports empty arguments!
  local list_all="${1:-false}"; shift
  local title_tag="$1"; shift
  local start_tag="$1"; shift
  local final_tag="$1"; shift
  local list_style="${1:-false}"; shift # enable/disable list format
  local start_commit="$1"; shift
  local changelog="$FILE"
  local title_date="$(date +'%Y-%m-%d')"
  local tags_list=()
  local tags_list_keys=()
  local defaultIFS="$IFS"
  local IFS="$defaultIFS"

  if [[ -n "$start_commit" && "$final_tag" == "null" \
      && "$start_tag" == "null" ]]; then
    # if there is not tag after $start_commit,
    # output directly without fetch all tags
    if [[ "$list_style" == true ]]; then
      _formatCommitPlain "${start_commit}~"
    else
      _formatCommitPretty "$title_tag" "$title_date" "$start_commit~"
    fi

    return
  fi

  #
  # Tags look like this:
  #
  # >git log --tags --simplify-by-decoration --date="short" --pretty="format:%h$%x09%ad$%x09%d"
  #
  # ecf1f2b$        2015-03-15$     (HEAD, tag: v1.0.1, origin/master, origin/HEAD, master, hotfix/1.0.2)
  # a473e9c$        2015-03-04$     (tag: v1.0.0)
  # f2cb562$        2015-02-19$     (tag: v0.9.2)
  # 6197c2b$        2015-02-19$     (tag: v0.9.1)
  # 1e5f5e6$        2015-02-16$     (tag: v0.9.0)
  # 3de8ab5$        2015-02-11$     (origin/feature/restore-auto)
  # a15afd1$        2015-02-02$     (origin/feature/versionable)
  # 38a44e0$        2015-02-02$     (origin/feature/save-auto)
  # 3244b80$        2015-01-16$     (origin/feature/silent-history, upstream)
  # 85e45f8$        2014-08-25$
  #
  # The most-recent tag will be preceded by "HEAD, " if there have been zero
  # commits since the tag. Also notice that with gitflow, we see features.
  #

  # fetch our tags
  local _ref _date _tag _tab='%x09'
  local _tag_regex='tag: *'
  while IFS=$'\t' read -r _ref _date _tag; do
    [[ -z "${_tag}" ]] && continue
    # strip out tags form ()
    # git v2.2.0+ supports '%D', like '%d' without the " (", ")" wrapping. One day we should use it instead.
    _tag="${_tag# }"; _tag="${_tag//[()]/}"
    # trap tag if it points to last commit (HEAD)
    _tag="${_tag#HEAD*, }"
    # strip out branches
    [[ ! "${_tag}" =~ ${_tag_regex} ]] && continue
    # strip out any additional tags pointing to same commit, remove tag label
    _tag="${_tag%%,*}"; _tag="${_tag#tag: }"
    # add tag to assoc array; copy tag to tag_list_keys for ordered iteration
    tags_list+=( "${_tag}:${_ref}=>${_date}" )
    tags_list_keys+=( "${_tag}" )
  done <<< "$(git log --tags --simplify-by-decoration --date="short" --pretty="format:%h${_tab}%ad${_tab}%d")"
  IFS="$defaultIFS"
  unset _tag_regex
  unset _ref _date _tag _tab

  local _tags_list_keys_length="${#tags_list_keys[@]}"
  if [[ "${_tags_list_keys_length}" -eq 0 ]]
  then
    unset _tags_list_keys_length
    if [[ "$list_style" == true ]]; then
      printf "%s" "$(_fetchCommitRange "true")"
    else
      local title="$title_tag / $title_date"
      local title_underline=""

      local i
      for i in $(seq ${#title}); do
        title_underline+="="
      done
      unset i

      printf '\n%s\n%s\n' "$title" "$title_underline"
      printf "\n%s\n" "$(_fetchCommitRange "true")"
    fi
    return
  fi

  local _final_tag_found=false
  local _start_tag_found=false
  local i
  for (( i=0; i<"${_tags_list_keys_length}"; i++ )); do
    local __curr_tag="${tags_list_keys[$i]}"
    local __prev_tag="${tags_list_keys[$i+1]:-null}"
    local __curr_date
    __curr_date="$(_valueForKeyFakeAssocArray "${__curr_tag}" "${tags_list[*]}")"
    __curr_date="${__curr_date##*=>}"

    # output latest commits, up until the most-recent tag, these are all
    # new commits made since the last tagged commit.
    if [[ $i -eq 0 && ( -z "$final_tag" || "$final_tag" == "null" ) ]]; then
      if [[ "$list_style" == true ]]; then
        _formatCommitPlain "${__curr_tag}" >> "$tmpfile"
      else
        _formatCommitPretty "$title_tag" "$title_date" "${__curr_tag}"
      fi
    fi

    # both final_tag and start_tag are "null", user just wanted recent commits
    [[ "$final_tag" == "null" && "$start_tag" == "null" ]] && break;

    # find the specified final tag, continue until found
    if [[ -n "$final_tag" && "$final_tag" != "null" ]]; then
      [[ "$final_tag" == "${__curr_tag}" ]] && _final_tag_found=true
      [[ "$final_tag" != "${__curr_tag}" && "${_final_tag_found}" == false ]] && continue
    fi

    # find the specified start tag, break when found
    if [[ -n "$start_tag" ]]; then
      [[ "$start_tag" == "${__curr_tag}" ]] && _start_tag_found=true
      if [[ "${_start_tag_found}" == true ]]; then
        if [[ -n "$start_commit" ]]; then

          # output commits after start_commit to its closest tag
          if [[ "$list_style" == true ]]; then
            _formatCommitPlain "$start_commit~" "${__curr_tag}"
          else
            _formatCommitPretty "${__curr_tag}" "${__curr_date}" \
              "$start_commit~" "${__curr_tag}"
          fi

          break
        fi

        [[ "$start_tag" != "${__curr_tag}" ]] && break

      fi
    fi

    # output commits made between prev_tag and curr_tag, these are all of the
    # commits related to the tag of interest.
    if [[ "$list_style" == true ]]; then
      _formatCommitPlain "${__prev_tag}" "${__curr_tag}"
    else
      _formatCommitPretty "${__curr_tag}" "${__curr_date}" "${__prev_tag}" "${__curr_tag}"
    fi
    unset __curr_date
    unset __prev_tag
    unset __curr_tag
  done
  unset i
  unset _start_tag_found
  unset _final_tag_found
  unset _tags_list_keys_length

  return
}

commitListPlain() {
  local list_all="${1:-false}"
  local start_tag="$2"
  local final_tag="$3"
  local start_commit="$4"

  commitList "$list_all" "" "$start_tag" "$final_tag" "true" "$start_commit"
}

commitListPretty() {
  local list_all="${1:-false}"
  local title_tag="$2"
  local start_tag="$3"
  local final_tag="$4"
  local start_commit="$5"
  local title_date="$(date +'%Y-%m-%d')"

  commitList "$list_all" "$title_tag" "$start_tag" "$final_tag" "false" \
    "$start_commit"
}

_exit() {
  local pid_list=()
  local defaultIFS="$IFS"
  local IFS="$defaultIFS"

  stty sane; echo; echo "caught signal, shutting down"

  IFS=$'\n'
  # The format of `ps` is different between Windows and other platforms,
  # so we need to calculate the total column number(COL_NUM) of header first.
  # Why don't we just use the last column?
  # Because the body of CMD column may contain space and be treated as multiple fields.
  pid_list=( $(ps -f |
    awk -v ppid=$$ 'NR == 1 {
      COL_NUM = NF
    }
    $3 == ppid {
      # filter out temp processes created in this subshell
      if ($COL_NUM != "ps" && $COL_NUM != "awk" && $COL_NUM !~ "bash$")
        print $2
    }')
  )
  IFS="$defaultIFS"

  local _pid
  for _pid in "${pid_list[@]}"; do
    echo "killing: ${_pid}"
    kill -TERM "${_pid}"
  done

  wait; stty sane; exit 1
}

trap '_exit' SIGINT SIGQUIT SIGTERM

main() {
  local start_tag="null" # empty string and "null" mean two different things!
  local final_tag="null"

  local option=(
    "list_all:false"
    "list_style:false"
    "title_tag:$DEF_TAG_RECENT"
    "start_tag:"
    "start_commit:"
    "final_tag:"
    "output_file:"
    "use_stdout:false"
    "prune_old:false"
  )

  #
  # We work chronologically backwards from NOW towards start_tag where NOW also
  # includes the most-recent (un-tagged) commits. If no start_tag has been
  # specified, we work back to the very first commit; if a final_tag has been
  # specified, we begin at the final_tag and work backwards towards start_tag.
  #

  # An existing ChangeLog/History file will be appended to the output unless the
  # prune old (-p | --prune-old) option has been enabled.

  while [ "$1" != "" ]; do
    case $1 in
      -a | --all )
        option=( $(_setValueForKeyFakeAssocArray "list_all" true "${option[*]}") )
        ;;
      -l | --list )
        option=( $(_setValueForKeyFakeAssocArray "list_style" true "${option[*]}") )
        ;;
      -t | --tag )
        option=( $(_setValueForKeyFakeAssocArray "title_tag" "$2" "${option[*]}") )
        shift
        ;;
      -f | --final-tag )
        option=( $(_setValueForKeyFakeAssocArray "final_tag" "$2" "${option[*]}") )
        shift
        ;;
      -s | --start-tag )
        option=( $(_setValueForKeyFakeAssocArray "start_tag" "$2" "${option[*]}") )
        shift
        ;;
      --start-commit )
        option=( $(_setValueForKeyFakeAssocArray "start_commit" "$2" "${option[*]}") )
        shift
        ;;
      -n | --no-merges )
        GIT_LOG_OPTS='--no-merges'
        CUR_GIT_LOG_FORMAT="$GIT_LOG_FORMAT"
        ;;
      -m | --merges-only )
        GIT_LOG_OPTS='--merges'
        CUR_GIT_LOG_FORMAT="$GIT_MERGELOG_FORMAT"
        ;;
      -p | --prune-old )
        option=( $(_setValueForKeyFakeAssocArray "prune_old" true "${option[*]}") )
        ;;
      -x | --stdout )
        option=( $(_setValueForKeyFakeAssocArray "use_stdout" true "${option[*]}") )
        ;;
      -h | ? | help | --help )
        _usage
        exit 1
        ;;
      * )
        [[ "${1:0:1}" == '-' ]] && _error "Invalid option: $1" && _usage && exit 1
        option=( $(_setValueForKeyFakeAssocArray "output_file" "$1" "${option[*]}") )
        ;;
    esac
    shift
  done

  # The default log format unless already set
  [[ -z "$CUR_GIT_LOG_FORMAT" ]] && CUR_GIT_LOG_FORMAT="$GIT_LOG_FORMAT"

  local _tag="$(_valueForKeyFakeAssocArray "start_tag" "${option[*]}")"
  local start_commit="$(_valueForKeyFakeAssocArray "start_commit" "${option[*]}")"

  if [[ -n "$start_commit" ]]; then
    if [[ -n "${_tag}" ]]; then
      _error "--start-tag could not use with --start-commit!"
      return 1
    fi

    start_tag="$(git describe --tags --contains "$start_commit" 2>/dev/null || echo 'null')"
    if [[ -z "$start_tag" ]]; then
      _error "Could find the associative tag for the start-commit!"
      return 1
    fi

    # remove suffix from the $start_tag when no tag matched exactly
    start_tag="${start_tag%%~*}"
    # also remove "^0" added sometimes when tag matched exactly
    start_tag="${start_tag%%^0}"

  elif [[ -n "${_tag}" ]]; then
    start_tag="$(git describe --tags --abbrev=0 "${_tag}" 2>/dev/null)"
    if [[ -z "$start_tag" ]]; then
      _error "Specified start-tag does not exist!"
      return 1
    fi
  fi

  if [[ -n "${_tag}" ]]; then
    if [[ -n "$start_commit" ]]; then
      _error "--start-tag could not use with --start-commit!"
      return 1
    fi

  fi
  unset _tag

  local _tag="$(_valueForKeyFakeAssocArray "final_tag" "${option[*]}")"
  if [[ -n "${_tag}" ]]; then
    final_tag="$(git describe --tags --abbrev=0 "${_tag}" 2>/dev/null)"
    if [[ -z "$final_tag" ]]; then
      _error "Specified final-tag does not exist!"
      return 1
    fi
  fi
  unset _tag

  #
  # generate changelog
  #
  local tmpfile changelog title_tag
  tmpfile="$(git_extra_mktemp)"
  changelog="$(_valueForKeyFakeAssocArray "output_file" "${option[*]}")"
  title_tag="$(_valueForKeyFakeAssocArray "title_tag" "${option[*]}")"

  if [[ "$(_valueForKeyFakeAssocArray "list_style" "${option[*]}")" == true ]]; then
    if [[ "$(_valueForKeyFakeAssocArray "list_all" "${option[*]}")" == true ]]; then
      commitListPlain "true" >> "$tmpfile"
    else
      commitListPlain "false" "$start_tag" "$final_tag" \
        "$start_commit" >> "$tmpfile"
    fi
  else
    if [[ "$(_valueForKeyFakeAssocArray "list_all" "${option[*]}")" == true ]]; then
      commitListPretty "true" "$title_tag" >> "$tmpfile"
    else
      commitListPretty "false" "$title_tag" "$start_tag" "$final_tag" \
        "$start_commit" >> "$tmpfile"
    fi
  fi

  if [[ -z "$changelog" ]]; then
    changelog="$(find . -mindepth 1 -maxdepth 1 \( -iname '*change*' -o -iname '*history*' \) | head -n1)"
    if [[ -z "$changelog" ]]; then
      changelog="History.md";
    fi
  fi

  # append existing changelog?
  if [[ -f "$changelog" \
    && "$(_valueForKeyFakeAssocArray "prune_old" "${option[*]}")" == false ]]; then
    cat "$changelog" >> "$tmpfile"
  fi

  # output file to stdout or move into place
  if [[ "$(_valueForKeyFakeAssocArray "use_stdout" "${option[*]}")" == true ]]; then
    cat "$tmpfile"
    rm -f "$tmpfile"
  else
    cp -f "$tmpfile" "$changelog"
    rm -f "$tmpfile"

    if [[ -n "$GIT_EDITOR" ]]; then
      $GIT_EDITOR "$changelog" || _exit
    else
      less "$changelog" || _exit
    fi
  fi

  return
}

main "$@"

exit 0
0707010000001A000081ED0000000000000000000000016627A28D00000315000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-clear#!/usr/bin/env bash
PROGNAME="git-clear"
FORCE=0

function _usage() {
cat << EOF
usage: $PROGNAME options
usage: $PROGNAME -h|help|?

clear git repository

OPTIONS:
  -f, --force               Force clear without questioning user
  -h, --help, ?             Show this message
EOF
}

# Read arguments
while [ "$1" != "" ]; do
    case $1 in
        -f|--force)
            FORCE=1
        ;;
        -h|--help|?)
            _usage
            exit 1
        ;;
    esac

    shift
done

# Only wait for answer if not forced by user
if [[ $FORCE == 0 ]]; then
    echo -n "Sure? - This command may delete files that cannot be recovered, including those in .gitignore [y/N]: "
    read -r clean
else
    clean=y
fi

if [ "$clean" == "y" ]; then
    git clean -d -f -x && git reset --hard
fi
0707010000001B000081ED0000000000000000000000016627A28D000000F4000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-clear-soft#!/usr/bin/env bash

echo -n "Sure? - This command may delete files that cannot be recovered. Files and directories in .gitignore will be preserved [y/N]: "
read -r answer
if [ "$answer" == "y" ]
    then git clean -d -f && git reset --hard
fi
0707010000001C000081ED0000000000000000000000016627A28D000001C4000000000000000000000000000000000000002200000000git-extras-7.2.0/bin/git-coauthor#!/usr/bin/env bash

set -e -o pipefail

coauthor=$1
email=$2

test -z "$coauthor" && echo "co-author required." 1>&2 && exit 1
test -z "$email" && echo "co-author email required." 1>&2 && exit 1

old_message="$(git log --format=%B -n1)"
if [[ "$old_message" == *"Co-authored-by:"* ]]; then
  git commit --amend -m "$old_message
Co-authored-by: $coauthor <$email>"
else
  git commit --amend -m "$old_message" -m "Co-authored-by: $coauthor <$email>"
fi
0707010000001D000081ED0000000000000000000000016627A28D00000094000000000000000000000000000000000000002700000000git-extras-7.2.0/bin/git-commits-since#!/usr/bin/env bash

SINCE="last week"
test $# -ne 0 && SINCE=$*
echo "... commits since $SINCE" >&2
git log --pretty='%an - %s' --after="@{$SINCE}"0707010000001E000081ED0000000000000000000000016627A28D00000094000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-contrib#!/usr/bin/env bash

user="$*"

test -z "$user" && echo "user name required." 1>&2 && exit 1

git shortlog --format=format:"%h %s" --author="$user"
0707010000001F000081ED0000000000000000000000016627A28D000000B0000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-count#!/usr/bin/env bash

if test "$1" = "--all"; then
  git shortlog -n -s | awk '{print substr($0,index($0,$2)) " (" $1 ")"}'
  echo
fi

echo total "$(git rev-list --count HEAD)"
07070100000020000081ED0000000000000000000000016627A28D000009CF000000000000000000000000000000000000001C00000000git-extras-7.2.0/bin/git-cp#!/usr/bin/env bash
set -euo pipefail

PROGRAM=$0
CURRENT_FILENAME=""
DESTINATION_FILENAME=""

function usage()
{
    echo 1>&2 "USAGE: ${PROGRAM} CURRENT_FILENAME DESTINATION_FILENAME"
}

while [[ $# -gt 0 ]]
do
  key="$1"

  if [[ "$CURRENT_FILENAME" == "" ]]; then
      CURRENT_FILENAME=$key
  elif [[ "$DESTINATION_FILENAME" == "" ]]; then
      DESTINATION_FILENAME=$key
  else
      usage
      exit 30  # Error during arguments parsing
  fi
  shift  # past argument or value
done

if [[ "$DESTINATION_FILENAME" == "" ]]; then
    usage
    exit 20  # Missing arguments CURRENT_FILENAME
elif [[ "$CURRENT_FILENAME" == "" ]]; then
    usage
    exit 10  # Missing arguments CURRENT_FILENAME
else
    if [ -e "$DESTINATION_FILENAME"  ]; then
        echo 1>&2 "$DESTINATION_FILENAME already exists."
        echo 1>&2 "Make sure to remove the destination first."
        exit 40
    fi

    if [[ "$DESTINATION_FILENAME" == */ ]]; then
      echo 1>&2 "$DESTINATION_FILENAME is not a file path."
      exit 80
    fi
    if [[ "$DESTINATION_FILENAME" == */* ]]; then
      DESTINATION_DIR="${DESTINATION_FILENAME%/*}"
      if ! mkdir -p "$DESTINATION_DIR"; then
        echo 1>&2 "Failed to create destination directory: $DESTINATION_DIR"
        exit 160
      fi
    fi

    MERGE_OPT=
    ff=$(git config --get merge.ff || true)
    if [[ "$ff" == "only" ]]; then
        MERGE_OPT="--ff"
    fi

    echo "Copying $CURRENT_FILENAME into $DESTINATION_FILENAME"

    INTERMEDIATE_FILENAME="${CURRENT_FILENAME//\//__}-move-to-${DESTINATION_FILENAME//\//__}"

    # We keep the existing file on the side in a commit
    git mv "${CURRENT_FILENAME}" "${INTERMEDIATE_FILENAME}"
    git commit -nm "Keep $CURRENT_FILENAME"

    # We come back to the previous state and revert that change
    INTERMEDIATE_SAVED=$(git rev-parse HEAD)
    git reset --hard HEAD^

    # We move the file to its new destination
    git mv "${CURRENT_FILENAME}" "${DESTINATION_FILENAME}"
    git commit -nm "Copy $CURRENT_FILENAME into $DESTINATION_FILENAME"

    # We come back to the previous state and revert that change again
    DESTINATION_SAVED=$(git rev-parse HEAD)
    git reset --hard HEAD^

    # We keep both files
    # shellcheck disable=SC2086
    git merge $MERGE_OPT "${DESTINATION_SAVED}" "${INTERMEDIATE_SAVED}" -m "Duplicate ${CURRENT_FILENAME} history."

    # We get back our original name
    git mv "${INTERMEDIATE_FILENAME}" "${CURRENT_FILENAME}"
    git commit -nm "Set back ${CURRENT_FILENAME} file"
fi
07070100000021000081ED0000000000000000000000016627A28D000005AE000000000000000000000000000000000000002700000000git-extras-7.2.0/bin/git-create-branch#!/usr/bin/env bash

test $# -eq 0 && echo "branch argument required." 1>&2 && exit 1

# preference takes lowest priority; look for remote from prefs first
REMOTE_PREF=$(git config git-extras.create-branch.remote)
if [ -n "$REMOTE_PREF" ]; then
	REMOTE=$REMOTE_PREF
fi

while test $# != 0
do
	case $1 in
		-r|--remote)
			if [[ -n $2 ]]
			then
				REMOTE=$2
				shift
			else
				REMOTE=origin
			fi
			;;
		--from)
			if [[ -n $2 ]]; then
				START_POINT=$2
				shift
			fi
			;;
		*)
			BRANCH=$1
	esac
	shift
done

# handle ambiguous `-r` option argument by shift
if [[ -z $BRANCH ]] && [[ -n $REMOTE ]]
then
	BRANCH=$REMOTE
	REMOTE=origin
fi

test -z $BRANCH && echo "branch argument required." 1>&2 && exit 1

if [[ -n $REMOTE ]]
then
	stderr=$(git_extra_mktemp)
	git ls-remote --exit-code "$REMOTE" 1>/dev/null 2>"$stderr"
	REMOTE_EXIT=$?
	REMOTE_ERROR=$(<"$stderr")
	rm -f "$stderr"
	if [ $REMOTE_EXIT -eq 0 ]
	then
		if [[ -n $START_POINT ]]; then
			git fetch "$REMOTE"
			git checkout --track -b "$BRANCH" "$START_POINT"
			git push "$REMOTE" "HEAD:refs/heads/$BRANCH"
		else
			git push "$REMOTE" "HEAD:refs/heads/$BRANCH"
			git fetch "$REMOTE"
			git checkout --track -b "$BRANCH" "$REMOTE/$BRANCH"
		fi
		exit $?
	else
		echo
		echo "    Error connecting to remote '$REMOTE': $REMOTE_ERROR"
		echo
		exit $REMOTE_EXIT
	fi
fi

if [[ -n $START_POINT ]]
then
    git checkout -b "$BRANCH" "$START_POINT"
else
    git checkout -b "$BRANCH"
fi
07070100000022000081ED0000000000000000000000016627A28D000001DB000000000000000000000000000000000000002700000000git-extras-7.2.0/bin/git-delete-branch#!/usr/bin/env bash
set -e

# Assert there is at least one branch provided
test -z "$1" && echo "branch required." 1>&2 && exit 1

for branch in "$@"
do
  remote=$(git config "branch.$branch.remote" || echo "origin")
  ref=$(git config "branch.$branch.merge" || echo "refs/heads/$branch")

  git branch -D "$branch" || true
  # Avoid deleting local upstream
  [ "$remote" = "." ] && continue
  git branch -d -r "$remote/$branch" || continue
  git push "$remote" ":$ref"
done
07070100000023000081ED0000000000000000000000016627A28D000000DA000000000000000000000000000000000000003000000000git-extras-7.2.0/bin/git-delete-merged-branches#!/usr/bin/env bash

branches=$(git branch --no-color --merged | grep -vE "^(\*|\+)" | grep -v "$(git_extra_default_branch)" | grep -v svn)
if [ -n "$branches" ]
then
    echo "$branches" | xargs -n 1 git branch -d
fi
07070100000024000081ED0000000000000000000000016627A28D000002CC000000000000000000000000000000000000003200000000git-extras-7.2.0/bin/git-delete-squashed-branches#!/usr/bin/env bash

set -euo pipefail

proceed=false
if [[ $# -gt 0 && ("$1" == "--proceed" || "$1" == "-p") ]]; then
    proceed=true
    shift
fi

if [[ $# -eq 0 ]]; then
  targetBranch=$(git rev-parse --abbrev-ref HEAD)
else
  targetBranch=$1
  git checkout "$targetBranch"
fi

git for-each-ref refs/heads/ "--format=%(refname:short)" | while read -r branch; do
    mergeBase=$(git merge-base "$targetBranch" "$branch")

    if [[ $(git cherry "$targetBranch" "$(git commit-tree "$(git rev-parse "$branch^{tree}")" -p "$mergeBase" -m _)") == "-"* ]]; then
        if [[ $proceed == true ]]; then
            git branch -D "$branch" || true
        else
            git branch -D "$branch"
        fi
    fi
done
07070100000025000081ED0000000000000000000000016627A28D000006D9000000000000000000000000000000000000002A00000000git-extras-7.2.0/bin/git-delete-submodule#!/usr/bin/env bash

abort() {
	error="$1" && shift
	echo "ERROR: $*" 1>&2
	test -z "$FORCE" && exit "$error"
}

# Don't abort on failures.  This allows to cleanup after a previous failure.
[ "$1" = '--force' ] && FORCE=1 && shift

test -z "$1"            && abort 1 'Submodule required'
cd "$(git root)"        || abort 5 'Cannot change to repository root'
test ! -f '.gitmodules' && abort 2 '.gitmodules file not found'

NAME="${1%/}"
test -z "$(git config --file='.gitmodules' "submodule.$NAME.url")" \
   && abort 3 'Submodule not found'

# 1. Handle the .git directory
# 1.a. Delete the relevant section from .git/config
git submodule deinit -f "$NAME" || abort 4 "Failed to deinitialize $NAME"
# 1.b. Delete empty submodule directory
git rm -f "$NAME"

# 2. Handle .gitmodules file
# 2.a. Delete the relevant line from .gitmodules
git config --file='.gitmodules' --remove-section "submodule.$NAME" 2>/dev/null || :
# 2.b and stage changes
git add '.gitmodules'
# 2.c. Delete empty .gitmodules
[  "$(wc -l '.gitmodules' | cut -d' ' -f1)" = '0' ] && git rm -f '.gitmodules'

# 3. Need to confirm and commit the changes for yourself
git_status_text="$(git submodule status 2>&1)"
git_status_exit=$?
if [ "$git_status_exit" -eq 0 ] \
    && printf '%s' "DUMMY$git_status_text" | grep -v "$NAME" > /dev/null; then
    #  grep fails when piping in an empty string, so we add a DUMMY prefix

	echo "Successfully deleted $NAME."
else
	abort 6 "Failed to delete $NAME with error:\n$git_status_text"
fi
printf '\n%s\n' '== git submodule status =='
printf '%s\n'   "$git_status_text"
printf '%s\n'   '=========================='
# shellcheck disable=SC2016
echo 'Confirm the output of `git submodule status` above (if any)' \
	'and then commit the changes.'
07070100000026000081ED0000000000000000000000016627A28D0000026D000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-delete-tag#!/usr/bin/env bash

# Assert there is at least one tag provided
test -z "$1" && echo "tag required." 1>&2 && exit 1

# Detect the default remote exists or not
default_remote=$(git config git-extras.default-remote)

if [[ -n "$default_remote" ]]; then
    origin="$default_remote"
else
    origin=origin
fi

# Concatenate all the tag references
local_tags=""
origin_refs=""
for tagname in "$@"
do
  local_tags=$local_tags" $tagname"
  origin_refs=$origin_refs" :refs/tags/$tagname"
done

# Delete all the tags
# shellcheck disable=SC2086
git tag -d $local_tags
# shellcheck disable=SC2086
git push "$origin" $origin_refs
07070100000027000081ED0000000000000000000000016627A28D000000E0000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-delta#!/usr/bin/env bash

branch=$(git_extra_default_branch)
filter=ACM

if test $# -eq 1; then
  branch=$1
else
  if test $# -eq 2; then
    branch=$1
    filter=$2
  fi
fi

git diff --name-only --diff-filter="$filter" "$branch"07070100000028000081ED0000000000000000000000016627A28D00001150000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-effort#!/usr/bin/env bash

tmp=$(git_extra_mktemp)
above=0
# if the output won't be printed to tty, disable the color
test -t 1 && to_tty=true
color=

#
# print usage message
#
usage() {
  echo 1>&2 "usage: git effort [--above <value>] [<path>...] [-- [<log options>...]]"
}

#
# get dates for the given <commit>
#
dates() {
  eval "git log $args_to_git_log --pretty='format: %ad' --date=short -- \"$1\""
}

# tput, being quiet about unknown capabilities
tputq() {
  tput "$@" 2>/dev/null
  return 0
}

#
# hide cursor
#

hide_cursor() {
  tputq civis
}

#
# show cursor, and remove temporary file
#

show_cursor_and_cleanup() {
  tputq cnorm
  tputq sgr0
  rm "$tmp" > /dev/null 2>&1
  exit 0
}

#
# get active days for the given <commit>
#

active_days() {
  echo "$1" | sort -r | uniq | wc -l
}

#
# set 'color' based on the given <num>
#

color_for() {
  if [ "$to_tty" = true ]; then
    if   [ "$1" -gt 200 ]; then color="$(tputq setaf 1)$(tputq bold)"
    elif [ "$1" -gt 150 ]; then color="$(tputq setaf 1)"  # red
    elif [ "$1" -gt 125 ]; then color="$(tputq setaf 2)$(tputq bold)"
    elif [ "$1" -gt 100 ]; then color="$(tputq setaf 2)"  # green
    elif [ "$1" -gt 75 ]; then color="$(tputq setaf 5)$(tputq bold)"
    elif [ "$1" -gt 50 ]; then color="$(tputq setaf 5)"  # purplish
    elif [ "$1" -gt 25 ]; then color="$(tputq setaf 3)$(tputq bold)"
    elif [ "$1" -gt 10 ]; then color="$(tputq setaf 3)"  # yellow
    else color="$(tputq sgr0)" # default color
    fi
  else
    color=""
  fi
}

#
# compute the effort of the given <path ...>
#

effort() {
    path=$1
    local commit_dates
    local color reset_color commits len dot f_dot i msg active
    reset_color=""
    test "$to_tty" = true && reset_color="$(tputq sgr0)"
    if ! commit_dates=$(dates "$path"); then
      exit 255
    fi

    # Ensure it's not just an empty line
    if [ -z "$(head -c 1 <<<"$commit_dates")" ]
    then
      exit 0
    fi

    commits=$(wc -l <<<"$commit_dates")
    color='90'

    # ignore <= --above
    test "$commits" -le "$above" && exit 0

    # commits
    color_for $(( commits - above ))
    len=${#path}
    dot="."
    f_dot="$path"
    i=0 ; while test $i -lt $(( columns - len )) ; do
      f_dot=$f_dot$dot
      i=$((i+1))
    done

    msg=$(printf "  ${color}%s %-10d" "$f_dot" "$commits")

    # active days
    active=$(active_days "$commit_dates")
    color_for $(( active - above ))
    msg="$msg $(printf "${color} %d${reset_color}\n" "$active")"
    echo "$msg"
}

#
# print heading
#

heading() {
  echo
  printf "  %-${columns}s %-10s %s\n" 'path' 'commits' 'active days'
  echo
}

#
# output sorted results
#

sort_effort() {
  clear
  echo " "
  heading
  < "$tmp" sort -rn -k 2
}

#
# get processor count, default 8
#
procs() {
  if ! (nproc --all || getconf NPROCESSORS_ONLN || getconf _NPROCESSORS_ONLN || grep -c processor /proc/cpuinfo) 2>/dev/null; then
      echo 8
  fi
}

declare -a paths=()
while [ "${#}" -ge 1 ] ; do

  case "$1" in
    --above)
      shift
      above=$1
      ;;
    --)
      shift
      args_to_git_log=$(printf " %q" "${@:1}")
      break
      ;;
    --*)
      usage
      echo 1>&2 "error: unknown argument $1"
      echo 1>&2 "error: if that argument was meant for git-log,"
      echo 1>&2 "error: please put it after two dashes ( -- )."
      exit 1
      ;;
    *)
      paths+=( "$1" )
      ;;
  esac

  shift
done

# Exit if above-value is not an int
if [ -z "${above##*[!0-9]*}" ] ; then
  echo "error: argument to --above was not an integer" 1>&2
  exit 1
fi

# remove empty quotes that appear when there are no arguments
args_to_git_log="${args_to_git_log#\ \'\'}"
export args_to_git_log

# [path ...]

if test "${#paths}" -eq 0; then
  save_ifs=$IFS
  IFS=$(echo -en "\n\b")
  paths=($(git ls-files))
  IFS=$save_ifs
  unset save_ifs
fi

# set column width to match longest filename
max=0
for path in "${paths[@]}"; do
    cur=${#path}
    if [[ $max -lt $cur ]]; then
        max=$cur
    fi
done
columns=$(( max + 5 ))
export columns

# hide cursor

hide_cursor
trap show_cursor_and_cleanup INT

heading

# send paths to effort
nPaths=${#paths[@]}
nProcs=$(procs)
nJobs="\j"
for ((i=0; i<nPaths; ++i))
do
    while (( ${nJobs@P} >= nProcs )); do
        wait -n
    done
    effort "${paths[i]}" &
done|tee "$tmp"

# if more than one path, sort and print
test "$(wc -l "$tmp" | awk '{print $1}')" -gt 1 && sort_effort
echo

show_cursor_and_cleanup
07070100000029000081ED0000000000000000000000016627A28D0000051E000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-extras#!/usr/bin/env bash

VERSION="7.2.0"
INSTALL_SCRIPT="https://raw.githubusercontent.com/tj/git-extras/main/install.sh"

update() {
  local bin="$(command -v git-extras)"
  local prefix=${bin%/*/*}
  local orig=$PWD

  curl -s $INSTALL_SCRIPT | PREFIX="$prefix" bash /dev/stdin \
    && cd "$orig" \
    && echo "... updated git-extras $VERSION -> $(git extras --version)"
}

updateForWindows() {
  local bin="$(command -v git-extras)"
  local prefix=${bin%/*/*}
  local orig=$PWD

  # we need to clean up /tmp manually on windows
  cd /tmp \
    && rm -rf ./git-extras \
    && echo "Setting up 'git-extras'...." \
    && git clone https://github.com/tj/git-extras.git &> /dev/null \
    && cd git-extras \
	&& git checkout \
        $(git describe --tags $(git rev-list --tags --max-count=1)) \
        &> /dev/null \
	&& ./install.cmd "$prefix" \
	&& cd "$orig" \
	&& echo "... updated git-extras $VERSION -> $(git extras --version)"
  rm -rf /tmp/git-extras &> /dev/null
}

case "$1" in
  -v|--version)
    echo $VERSION && exit 0
    ;;
  update)
    platform=$(uname -s)
    if [ "${platform::9}" = "CYGWIN_NT" ] || \
      [ "${platform::5}" = "MINGW" ] || \
      [ "${platform::7}" = "MSYS_NT" ]
    then
      updateForWindows
    else
      update
    fi
    ;;
  *)
    git extras --help
    ;;
esac
0707010000002A000081ED0000000000000000000000016627A28D0000074B000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-feature#!/usr/bin/env bash

branch_prefix=$(git config --get git-extras.feature.prefix)

if [ -z "$branch_prefix" ]; then
   branch_prefix="feature"
fi

branch_separator=$(git config --get git-extras.feature.separator)

if [ -z "$branch_separator" ]; then
   branch_separator="/"
fi

merge_mode="--no-ff"
finish=false
declare -a argv
while test $# != 0
do
  case $1 in
  -a|--alias )
    if [[ -n $2 ]] && [[ $2 != -- ]]
    then
      shift # shift -a|-alias
      branch_prefix=$1
    else
      echo >&2 "option $1 requires a value"
      exit 1
    fi
    ;;
  -r|--remote )
    if [[ -n $2 ]] && [[ $2 != -- ]]
    then
      remote=$2
      shift
    else
      remote="origin"
    fi
    ;;
  -s|--separator )
    if [[ -n $2 ]] && [[ $2 != -- ]]
    then
      branch_separator=$2
      shift
    else
      echo >&2 "option $1 requires a value"
      exit 1
    fi
    ;;
  --squash )
    merge_mode="--squash"
    ;;
  --from )
    start_point=$2
    shift
    ;;
  -- )
    # terminate argument parsing
    shift
    argv+=("$@")
    break
    ;;
  finish )
    finish=true
    ;;
  * )
    argv+=("$1")
    ;;
  esac
  shift
done

concatargs() {
  str=$(IFS='-'; echo "$*")
  branch="$branch_prefix$branch_separator$str"
}

test -z "${argv[0]}" && echo "$branch_prefix" "<name> required." 1>&2 && exit 1

concatargs "${argv[@]}"

if "${finish}"
then
  git merge ${merge_mode} "$branch" && git delete-branch "$branch"
else
  if [[ -n $remote ]] && [[ -z $start_point ]]
  then
    git create-branch -r "$remote" "$branch"
  fi

  if [[ -z $remote ]] && [[ -z $start_point ]]
  then
    git create-branch "$branch"
  fi

  if [[ -n $remote ]] && [[ -n $start_point ]]
  then
    git create-branch -r "$remote" --from "$start_point" "$branch"
  fi

  if [[ -z $remote ]] && [[ -n $start_point ]]
  then
    git create-branch --from "$start_point" "$branch"
  fi
fi
0707010000002B000081ED0000000000000000000000016627A28D000009CB000000000000000000000000000000000000002500000000git-extras-7.2.0/bin/git-force-clone#! /usr/bin/env bash

set -euo pipefail

_usage() {
  echo "
Usage:
  git-force-clone -b branch remote_url destination_path

Example:
  git-force-clone -b master git@github.com:me/repo.git ./repo_dir

Provides the basic functionality of 'git clone', but if the destination git
repository already exists it will force-reset it to resemble a clone of the
remote.

Because it doesn't actually delete the directory, it is usually significantly
faster than the alternative of deleting the directory and cloning the
repository from scratch.

**CAUTION**: If the repository exists, this will destroy *all* local work:
changed files will be reset, local branches and other remotes will be removed.

OPTIONS:
  -b, --branch    The branch to pull from the remote
  -h, --help      Display this help message
"
}

_check() {
  if [ -z "$1" ]; then
    echo "Error: Missing ${2}"
    _usage
    exit 1
  fi
}

main() {
  while [[ -n "${1:-}" ]] && [[ "${1:0:1}" == "-" ]]; do
    case $1 in
      -b | --branch )
        branch=${2:-}
        shift
        ;;
      -h | --help )
        _usage
        exit 0
        ;;
      * )
        echo "Error: Invalid option: $1"  >>/dev/stderr
        _usage
        exit 1
        ;;
    esac
    shift
  done

  remote_url=${1:-}
  destination_path=${2:-}

  _check "${remote_url}" "remote_url"
  _check "${destination_path}" "destination_path"

  if [ -d "${destination_path}/.git" ]; then
    (
      cd "${destination_path}"

      # Delete all remotes
      for remote in $(git remote); do
        git remote rm "${remote}"
      done

      # Add origin
      git remote add origin "${remote_url}"
      git fetch origin

      # Set default branch
      if [ -z "${branch:-}" ]; then
        branch=$(LC_ALL=C git remote show origin | grep -oP '(?<=HEAD branch: )[^ ]+$')
        git remote set-head origin "${branch}"
      else
        git remote set-head origin -a
      fi

      # Make sure current branch is clean
      git clean -fd
      git reset --hard HEAD

      # Get on the desired branch
      git checkout "${branch}"
      git reset --hard "origin/${branch}"

      # Delete all other branches
      # shellcheck disable=SC2063
      branches=$(git branch | grep -v '*' | xargs)
      if [ -n "${branches}" ]; then
        git branch -D "${branches}"
      fi
    )
  elif [ -n "${branch:-}" ]; then
    git clone -b "${branch}" "${remote_url}" "${destination_path}"
  else
    git clone "${remote_url}" "${destination_path}"
  fi
}

main "$@"

exit 0
0707010000002C000081ED0000000000000000000000016627A28D0000078B000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-fork#!/usr/bin/env bash

abort() {
  echo "$@"
  exit 1
}

url="$1"
test -z "$url" && url=$(git remote get-url origin 2> /dev/null) && origin=true
# validate repo url
test -z "$url" && abort "github repo needs to be specified as an argument"

# validate user
echo "Enter your github username"
read -r user
[ -n "$user" ] || abort "git username required"
# personal access token
# config name is github-personal-access-token '_' is not allowed in git config

github_personal_access_token=$(git config git-extras.github-personal-access-token)

test -z "$github_personal_access_token" && abort "git config git-extras.github-personal-access-token required"

# extract owner + project from repo url
project=${url##*/}
owner=${url%/"$project"}
project=${project%.git}
if [[ $owner == git@* ]]; then
  owner=${owner##*:}
else
  owner=${owner##*/}
fi

# validate
[[ -z "$project" || -z "$owner" ]] && abort "github repo needs to be specified as an argument"

# create fork
if ! curl -qsf \
  -X POST \
  -u "$user:$github_personal_access_token" \
  -H "X-GitHub-OTP: $MFA_CODE" \
  "https://api.github.com/repos/$owner/$project/forks"
then
  abort "fork failed"
fi

echo "Add GitHub remote branch via SSH (you will be prompted to verify the server's credentials)? (y/n)"
read -r use_ssh
# Check if user has ssh configured with GitHub
if [ -n "$use_ssh" ] && ssh -T git@github.com 2>&1 | grep -qi 'success'; then
  remote_prefix="git@github.com:"
else
  remote_prefix="https://github.com/"
fi

if [ "$origin" = true ]; then
    git remote rename origin upstream
    git remote add origin "${remote_prefix}${user}/${project}.git"
    git fetch origin
else
    # clone forked repo into current dir
    git clone "${remote_prefix}${user}/${project}.git" "$project"
    # add reference to origin fork so can merge in upstream changes
    cd "$project"
    git remote add upstream "${remote_prefix}${owner}/${project}.git"
    git fetch upstream
fi
0707010000002D000081ED0000000000000000000000016627A28D00000190000000000000000000000000000000000000002600000000git-extras-7.2.0/bin/git-fresh-branch#!/usr/bin/env bash

branch=$1

test -z "$branch" && echo "branch required." 1>&2 && exit 1

changes=$(git status --porcelain)

clean()
{
    git symbolic-ref HEAD "refs/heads/$branch"
    rm .git/index
    git clean -fdx
}

if [ -n "$changes" ]; then
    read -rp "All untracked changes will be lost. Continue [y/N]? " res
    case $res in
        [Yy]* ) ;;
        * ) exit 0;;
    esac
fi

clean
0707010000002E000081ED0000000000000000000000016627A28D000002E5000000000000000000000000000000000000001D00000000git-extras-7.2.0/bin/git-get#!/usr/bin/env bash

_usage() {
    printf '%s\n' "usage: ${0##*/} <url>
usage: ${0##*/} --help

Clone a repository in a particular directory."
}

if (( $# == 0 )); then
    _usage
    exit 0
fi

for arg; do
    if [ "$arg" = '-h' ] || [ "$arg" = '--help' ]; then
        _usage
        exit 0
    fi
done

url=$1
if ! shift; then
    printf 'ERROR: Failed to shift' >&2
    exit 1
fi

clone_path=$(git config --get git-extras.get.clone-path)

if [ -z "$clone_path" ]; then
    printf 'ERROR: %s\n' "Git configuration key 'git-extras.get.clone-path' must be set to a directory to clone under" >&2
    exit 1
fi

dirname=${url%/}
dirname=${url%.git}
dirname=${dirname##*/}

mkdir -p "$clone_path"
git clone "$url" "$clone_path/$dirname" "$@"
0707010000002F000081ED0000000000000000000000016627A28D0000022A000000000000000000000000000000000000002200000000git-extras-7.2.0/bin/git-gh-pages#!/usr/bin/env bash

echo 'setting up gh-pages'
echo '-------------------'
 
echo 'Tell me your github account username: '
read -r username
 
echo 'Now, tell me your repository name: '
read -r repository
 
git stash \
&& git checkout -b 'gh-pages' \
&& echo 'My Page' > index.html \
&& git add . \
&& git commit -a -m 'Initial commit' \
&& git remote add origin https://github.com/"$username"/"$repository".git \
&& git push -u origin gh-pages \
&& echo 'Complete' \
&& echo '-------------------' \
&& echo 'You can find your last changes in the stash!'
07070100000030000081ED0000000000000000000000016627A28D000000FA000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-graft#!/usr/bin/env bash

src=$1
dst=$2

test -z "$src" && echo "source branch required." 1>&2 && exit 1
test -z "$dst" && echo "destination branch required." 1>&2 && exit 1

git checkout "$dst" \
  && git merge --no-ff "$src" \
  && git branch -d "$src"
07070100000031000081ED0000000000000000000000016627A28D00000C7D000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-guilt#!/usr/bin/env bash

for param in "$@"
do
    case $param in
        -h)
            echo 'Usage: git-guilt [<options>] <since> <until>'
            echo 'Calculates the change in blame between two revisions'
            echo 'Example: git guilt HEAD~3 HEAD'
            echo
            echo 'Options:'
            echo
            echo '  -h, --help               output usage information'
            echo '  -e, --email              display author emails instead of names'
            echo '  -w, --ignore-whitespace  ignore whitespace only changes when attributing blame'
            echo '  -d, --debug              output debug information'
            exit 0
            ;;
        -e|--email )
            EMAIL='-e'
            shift
            ;;
        -w|--ignore-whitespace )
            NOT_WHITESPACE='-w'
            shift
            ;;
        -d|--debug )
            DEBUG=$(git_extra_mktemp)
            shift
            ;;
    esac
done

cd "$(git-root)" # cd for git blame
MERGED_LOG=$(git_extra_mktemp)
if [[ $EMAIL == '-e' ]]
then
    PATTERN='s/^author-mail <\(.*\)>/\1/p'
else
    PATTERN='s/^author //p'
fi

for file in $(git diff --name-only "$@")
do
    test -n "$DEBUG" && echo "git blame $file"
    # $1 - since $2 - until
    git blame $NOT_WHITESPACE --line-porcelain "$1" -- "$file" 2> /dev/null |
        LC_ALL=C sed -n "$PATTERN" | sort | uniq -c | LC_ALL=C sed 's/^\(.\)/- \1/' >> "$MERGED_LOG"
    # if $2 not given, use current commit as "until"
    git blame $NOT_WHITESPACE --line-porcelain "${2-@}" -- "$file" 2> /dev/null |
        LC_ALL=C sed -n "$PATTERN" | sort | uniq -c | LC_ALL=C sed 's/^\(.\)/+ \1/' >> "$MERGED_LOG"
done

DEBUG="$DEBUG" awk '
NR==1 {
    # the index of $2 does not change in each line
    name_start_at = index($0, $3)
}
/^\+/ {
    contributors[substr($0, name_start_at)] += $2
}
/^-/ {
    contributors[substr($0, name_start_at)] -= $2
}
END {
    for (people in contributors) {
        if (ENVIRON["DEBUG"]) {
           printf("%d %s\n", contributors[people], people) >> ENVIRON["DEBUG"]
        }
        if (contributors[people] != 0) {
            printf("%d %s\n", contributors[people], people)
        }
    }
}' $MERGED_LOG | sort -nr | # only gawk supports built-in sort function
while read -r line
do
    people=${line#* }
    num=${line%% *}

    if [[ $num -gt 0 ]]
    then
        printf "%-29s \033[00;32m" "$people"
        if [[ $num -ge 50 ]]
        then
            len=${#num}
            for (( i = 0; i < 48 - len; i++ ))
            do
                printf "+"
            done
            printf "(%s)" "$num"
        else
            for (( i = 0; i < num; i++ ))
            do
                printf "+"
            done
        fi
    else
        printf "%-29s \033[00;31m" "$people"
        if [[ $num -le -50 ]]
        then
            len=${#num}
            for (( i = 0; i < 48 - len; i++ ))
            do
                printf "-"
            done
            printf "(%s)" $num
        else
            for (( i = 0; i > num; i-- ))
            do
                printf "-"
            done
        fi
    fi
    printf "\033[00m\n"
done

test -n "$DEBUG" && sort -nr "$DEBUG"
07070100000032000081ED0000000000000000000000016627A28D00000B25000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-ignore#!/usr/bin/env bash

GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)

function show_contents {
  local file="${2/#~/$HOME}"
  if [ -f "$file" ]; then
    echo "$1 gitignore: $2" && cat "$file"
  else
    echo "There is no $1 .gitignore yet"
  fi
}

function cd_to_git_root {
  local error_level="$1"

  if ! git rev-parse --git-dir &>/dev/null; then
    if [ "$error_level" = '--warn' ]; then
      echo "Warning: Not currently in a Git repository" >&2
    elif [ "$error_level" = '--error' ]; then
      echo "Error: Not currently in a Git repository" >&2
      exit 1
    fi
  fi

  local result=
  if result=$(git rev-parse --show-toplevel 2>/dev/null); then
    cd "$result" || exit
  fi
}

function global_ignore() {
  if ! git config --global core.excludesFile 2>/dev/null; then
    if [ -f "$HOME/.gitignore" ]; then
      echo "$HOME/.gitignore"
    else
      echo "${XDG_CONFIG_HOME:-$HOME/.config}/git/ignore"
    fi
  fi
}

function show_global {
  show_contents Global "$(global_ignore)"
}

function add_global {
  local global_gitignore
  global_gitignore="$(global_ignore)"
  if [ -z "$global_gitignore" ]; then
    echo "Can't find global .gitignore."
    echo ""
    echo "Use 'git config --global --add core.excludesfile ~/.gitignore-global' to set the path to your global gitignore file to '~/.gitignore-global'."
    echo ""
  else
    add_patterns "$global_gitignore" "$@"
  fi
}

function show_local {
  cd_to_git_root --warn
  show_contents Local .gitignore
}

function add_local {
  cd_to_git_root --warn
  add_patterns .gitignore "$@"
}

function show_private {
  cd_to_git_root --error
  show_contents Private "${GIT_DIR}/info/exclude"
}

function add_private {
  cd_to_git_root --error
  test -d "${GIT_DIR}/info" || mkdir -p "${GIT_DIR}/info"
  add_patterns "${GIT_DIR}/info/exclude" "$@"
}

function add_patterns {
  echo "Adding pattern(s) to: $1"
  local file="${1/#~/$HOME}"
  dir_name=$(dirname "$file")
  if [ ! -d "$dir_name" ]; then
      mkdir -p "$dir_name"
  fi
  if [ -s "$file" ]; then
      # If the content of $file doesn't end with a newline, add one
      test "$(tail -c 1 "$file")" != "" && echo "" >> "$file"
  fi
  for pattern in "${@:2}"; do
    echo "... adding '$pattern'"
    (test -f "$file" && test "$pattern" && grep -q -F -x -- "$pattern" "$file") || echo "$pattern" >> "$file"
  done
}

if test $# -eq 0; then
   show_global
   echo "---------------------------------"
   show_local
   echo "---------------------------------"
   show_private
else
  case "$1" in
    -l|--local)
      test $# -gt 1 && add_local "${@:2}" && echo
      show_local
      ;;
    -g|--global)
      test $# -gt 1 && add_global "${@:2}" && echo
      show_global
      ;;
    -p|--private)
      test $# -gt 1 && add_private "${@:2}" && echo
      show_private
      ;;
    *)
      add_local "$@"
      ;;
  esac
fi

07070100000033000081ED0000000000000000000000016627A28D00001024000000000000000000000000000000000000002300000000git-extras-7.2.0/bin/git-ignore-io#!/usr/bin/env bash

gitignore_io_url="https://www.toptal.com/developers/gitignore/api/"
default_path="$HOME/.gi_list"
if [[ -n "$XDG_CACHE_HOME" ]]; then
  default_path="$XDG_CACHE_HOME/git-extras/gi_list"
  mkdir -p "$XDG_CACHE_HOME/git-extras"
fi

update_gi_list() {
    curl -L -s  "${gitignore_io_url}/list" > "$default_path"
}

print_in_alphabetical_order() {
    local first_character previous_first_character ignorable
    local first=true
    for ignorable in $(echo "$gi_list" | sort);
    do
        first_character=${ignorable:0:1}
        if [[ $first_character = "$previous_first_character" ]]; then
            printf " %s" "$ignorable"
        elif [[ $first = true ]]; then
            previous_first_character=$first_character
            first=false
            printf "%s" "$ignorable"
        else
            previous_first_character=$first_character
            printf "\n%s" "$ignorable"
        fi
    done
    echo
}

print_in_table_format() {
    echo "$gi_list" | column
}

search() {
    for type in $gi_list;
    do
        if [[ "$type" == *$1* ]]
        then
            echo "$type"
        fi
    done
}

print_last_modified_time() {
    if ! gi_list_date=$(stat -c "%y" "$default_path" 2> /dev/null); then
        if ! gi_list_date=$(stat -f "%t%Sm" "$default_path" 2> /dev/null); then
            if ! gi_list_date=$(date -r "$default_path" +%s 2> /dev/null); then
                gi_list_date=0
            fi
        fi
    fi
    echo "Last update time: $gi_list_date"
}

gi() {
    curl -L -s $gitignore_io_url/"$1"
}

gi_replace() {
    gi "$1" > .gitignore
}

gi_append() {
    gi "$1" >> .gitignore
}

show_usage() {
    echo "Usage:"
    echo "  git ignore-io <types>...                    Show gitignore template"
    echo "                [-a|--append] <types>...      Append new .gitignore content to .gitignore under the current directory"
    echo "                [-r|--replace] <types>...      Export new .gitignore to the current directory (The old one will be replaced)"
    echo "                [-l|--list-in-table]          Print available types in table format"
    echo "                [-L|--list-alphabetically]    Print available types in alphabetical order    "
    echo "                [-s|--search] <word>          Search word in available types"
    echo "                [-t|--show-update-time]       Show the last modified time of $default_path (where the list of available types is stored)"
    echo "                [-u|--update-list]            Update $default_path"
}


check_list_exist() {
    if ! [ -f "$default_path" ]; then
        echo "-----Initial gitignore.io list----"
        update_gi_list
        echo "-----Save to $default_path-----"
        echo
    fi
    gi_list=$(tr "," "\n" < "$default_path" 2>/dev/null)
}

check_list_exist
if [[ $# -eq 0 ]]; then
    show_usage
else
    case $1 in
        -a|--append|-r|--replace)
            opt=$1
            shift
            if [[ $# -eq 0 ]]; then
                echo "There should be at least one type"
                echo
                show_usage
                exit
            fi

            gi_to_curl=$(echo "$@" | tr " " ",")
            case $opt in
            -a|--append)
                gi_append "$gi_to_curl"
                ;;
            -r|--replace)
                gi_replace "$gi_to_curl"
                ;;
            esac

            exit
            ;;
        -t|--show-update-time)
            print_last_modified_time
            ;;
        -u|--update-list)
            update_gi_list
            ;;
        -s|--search)
            opt=$1
            shift
            if [[ $# -eq 0 ]]; then
                show_usage
                exit
            fi
            search "$1"
            ;;
        -L|--list-alphabetically)
            print_in_alphabetical_order
            ;;
        -l|--list-in-table)
            print_in_table_format
            ;;
        -*)
            echo No Such option
            show_usage
            ;;
        *)
            gi_to_curl=$(echo "$@" | tr " " ",")
            gi "$gi_to_curl"
            ;;
    esac
fi
07070100000034000081ED0000000000000000000000016627A28D00000623000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-info#!/usr/bin/env bash

GREEN="$(tput setaf 2)"
NORMAL="$(tput sgr0)"
if [ "$1" = "--color" ] || [ "$2" = "--color" ] || \
     [ "$1" = "-c" ] || [ "$2" = "-c" ] ; then
  COLOR_TITLE="$GREEN"
else
  COLOR_TITLE="$NORMAL"
fi

HIDE_CONFIG=
if [ "$1" != "--no-config" ] && [ "$2" != "--no-config" ]; then
  HIDE_CONFIG=1
fi

get_config() {
  cmd_get_config="$(git config --get-all git-extras.info.config-grep)"
  if [ -z "$cmd_get_config" ]; then
    git config --list
  else
    eval "$cmd_get_config"
  fi
}

most_recent_commit() {
  cmd_get_log="$(git config --get-all git-extras.info.log)"
  if [ -z "$cmd_get_log" ]; then
    git log --max-count=1 --pretty=short
  else
    eval "$cmd_get_log"
  fi
}

submodules() {
  # short sha1
  git submodule status | sed 's/\([^abcdef0-9]\{0,2\}\)\([abcdef0-9]\{7\}\)\([abcdef0-9]\{33\}\)\(.*\)/\1\2\4/'
}

local_branches() {
  git branch
}

remote_branches() {
  git branch -r
}

remote_urls() {
  git remote -v
}

echon() {
  echo "$@"
  echo
}

echo
echon "${COLOR_TITLE}## Remote URLs:${NORMAL}"
echon "$(remote_urls)"

echon "${COLOR_TITLE}## Remote Branches:${NORMAL}"
echon "$(remote_branches)"

echon "${COLOR_TITLE}## Local Branches:${NORMAL}"
echon "$(local_branches)"

SUBMODULES_LOG=$(submodules)
if [ -n "$SUBMODULES_LOG" ]; then
  echon "${COLOR_TITLE}## Submodule(s):${NORMAL}"
  echon "$SUBMODULES_LOG"
fi

echon "${COLOR_TITLE}## Most Recent Commit:${NORMAL}"
echon "$(most_recent_commit)"

if [ -n "$HIDE_CONFIG" ]; then
  echon "${COLOR_TITLE}## Configuration (.git/config):${NORMAL}"
  echon "$(get_config)"
fi
07070100000035000081ED0000000000000000000000016627A28D00000033000000000000000000000000000000000000002700000000git-extras-7.2.0/bin/git-local-commits#!/usr/bin/env bash

git log "@{upstream}..@" "$@"
07070100000036000081ED0000000000000000000000016627A28D00000090000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-lock#!/usr/bin/env bash

filename="$1"
test -z "$filename" && echo "filename required." 1>&2 && exit 1
git update-index --skip-worktree "$filename"
07070100000037000081ED0000000000000000000000016627A28D00000041000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-locked#!/usr/bin/env bash

git ls-files -v | grep ^S | sed -e 's|S ||'
07070100000038000081ED0000000000000000000000016627A28D000005F0000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-magic#!/usr/bin/env bash


# Bash unofficial strict mode
set -eo pipefail
IFS=$'\n\t'

cd "$(git rev-parse --show-toplevel)"

USAGE='git-magic [-a] [-m msg] [-e] [-p] [-f]'

ALL=false
PUSH=false
FORCE=''
ARGS=()

while getopts "m:eapfh" arg; do
  case "${arg}" in
    m)
      ARGS+=("-m")
      ARGS+=("${OPTARG}")
      ;;
    e)
      ARGS+=("-e")
      ;;
    a)
      ALL=true
      ;;
    p)
      PUSH=true
      ;;
    f)
      FORCE='-f'
      ;;
    h)
      echo "$USAGE"
      exit 0
      ;;
    ?)
      echo "${USAGE}"
      exit 1
      ;;
  esac
done

shift $((OPTIND-1))

if [[ $# != 0 ]]; then
  echo "Unknown arguments: $*"
  echo "${USAGE}"
  exit 1
fi

set -- "${ARGS[@]}" # restore positional parameters

if [[ $ALL == true ]]; then

  # Check if there is no changes to stage
  if [[ -z $(git status --porcelain) ]]; then
    echo "No changes to commit"
    exit 0
  fi

  # Get confirmation from user
  git status
  echo "Everything will be added"
  read -rp "Press enter to continue"

  # Restore staging area so that, for example,
  # add and modify will not be separate entries in status
  git restore --staged . || true
  git add .
fi

# Commit with generated message
git commit --no-edit "$@" -m "$(git status --porcelain -uno)"

if [[ $PUSH == true ]]; then
  git push $FORCE
fi

# --no-edit by default. use option -e to override this

# Arguments are passed with quoted "$@" to avoid misparsing

# Generated message comes after user provided arguments
# so that user can insert title before it
07070100000039000081ED0000000000000000000000016627A28D000003B1000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-merge-into#!/usr/bin/env bash

current_branch() {
    git rev-parse --abbrev-ref HEAD
}

usage() {
    echo "Usage: git merge-into [src] dest [--ff-only]"
}

cur_branch=$(current_branch)

stashed=0
if [ -n "$(git status --porcelain)" ];
then
    echo "Local modifications detected, stashing"
    stashed=1
    git stash
fi

if [ "${!#}" == '--ff-only' ]; then
    case $# in
        2 ) # dest --ff
            git push "$(git rev-parse --show-toplevel)" "$cur_branch":"$1";;
        3 )
            git push "$(git rev-parse --show-toplevel)" "$1":"$2";;
        * )
            usage
    esac
else
    case $# in
        1 )
            git checkout "$1"
            git merge "$cur_branch" "$1" && git checkout "$cur_branch"
            ;;
        2 )
            git checkout "$2"
            git merge "$1" "$2" && git checkout "$cur_branch"
            ;;
        * )
            usage
    esac
fi

if [ $stashed -eq 1 ];
then
    git stash pop;
fi
0707010000003A000081ED0000000000000000000000016627A28D00000182000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-merge-repo#!/usr/bin/env bash

repo=$1
branch=$2
prefix=$3
flat=0

if test "$prefix" = "."; then
	prefix=$(mktemp -u 'git-merge-repo.XXXXXXX')
	flat=1
fi

git subtree add -P "$prefix" "$repo" "$branch" "${@:4}"

message=$(git log -1 --pretty=%B)

if test $flat -eq 1; then
	git stash -u
	mv -i "$prefix"/* ./
	git undo
	git add .
	git commit -am "$message"
	git stash apply
	rm -drf "$prefix"
fi
0707010000003B000081ED0000000000000000000000016627A28D000002FE000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-missing#!/usr/bin/env bash

usage() {
    echo 1>&2 "usage: git missing [<first branch>] <second branch> [<git log options>]"
}

if [ "${#}" -lt 1 ]
then
    usage
    exit 1
fi

declare -a git_log_args=()
declare -a branches=()
for arg in "$@" ; do

    case "$arg" in
        --*)
            git_log_args+=( "$arg" )
            ;;
        *)
            branches+=( "$arg" )
            ;;
    esac
done

firstbranch=
secondbranch=
if [ ${#branches[@]} -eq 2 ]
then
    firstbranch="${branches[0]}"
    secondbranch="${branches[1]}"
elif [ ${#branches[@]} -eq 1 ]
then
    secondbranch="${branches[0]}"
else
    echo >&2 "error: at least one branch required"
    exit 1
fi

git log "${git_log_args[@]}" "$firstbranch"..."$secondbranch" --format="%m %h %s" --left-right
0707010000003C000081ED0000000000000000000000016627A28D000002D1000000000000000000000000000000000000001C00000000git-extras-7.2.0/bin/git-mr#!/usr/bin/env bash

set -eu

if [  -z "${1-}" ] ; then
    echo "mr number or URL required. See --help for usage." 1>&2
    exit 1
fi

if test "$1" = "clean"; then
  git for-each-ref refs/heads/mr/* --format='%(refname)' | while read -r ref; do
    git branch -D "${ref#refs/heads/}"
  done
  exit 0
elif [[ $1 =~ ^(https?://[^/]+/(.+))/merge_requests/([0-9]+).*$ ]]; then
  remote=${BASH_REMATCH[1]}.git
  id=${BASH_REMATCH[3]}
else
  id=$1
  remote=${2:-origin}
fi

branch=mr/$id
remote_ref=refs/merge-requests/$id/head
git fetch -fu "$remote" "$remote_ref:$branch"
git checkout "$branch"
git config --local --replace "branch.$branch.merge" "$remote_ref"
git config --local --replace "branch.$branch.remote" "$remote"
0707010000003D000081ED0000000000000000000000016627A28D000002A1000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-obliterate#!/usr/bin/env bash

file=""
range=""
for i in "$@"
do
    # use '--' to separate file list and rev-list arguments
    test "$i" == '--' && shift && break
    file="$file"' '"$i"
    shift
done
test -n "$*" && range="$*"

test -z "$file" && echo "file required." 1>&2 && exit 1
if [ -z "$range" ]
then
    git filter-branch -f --index-filter "git rm -r --cached ""$file"" --ignore-unmatch" \
        --prune-empty --tag-name-filter cat -- --all
else
    # don't quote $range so that we can forward multiple rev-list arguments
    git filter-branch -f --index-filter "git rm -r --cached ""$file"" --ignore-unmatch" \
        --prune-empty --tag-name-filter cat -- $range
fi
0707010000003E000081ED0000000000000000000000016627A28D00000110000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-paste#!/usr/bin/env bash
set -e
set -o pipefail

if ! command -v pastebinit >/dev/null 2>&1; then
    echo >&2 "To run 'git paste', you need to install pastebinit in your system"
    exit 1
fi

test $# -ne 0 || set -- '@{u}'
git format-patch --stdout "$@" | pastebinit -f diff
0707010000003F000081ED0000000000000000000000016627A28D0000068A000000000000000000000000000000000000001C00000000git-extras-7.2.0/bin/git-pr#!/usr/bin/env bash
# Based on https://gist.github.com/gnarf/5406589 and https://gist.github.com/jhnns/d654d9d6da6d3b749986
TO_MERGE=

pull() {
  local remote="$1"
  local id="$2"
  local branch="$3"
  local ref="refs/pull/$id/head"

  if [ -n "$TO_MERGE" ]; then
    ref="refs/pull/$id/merge"
  fi

  git fetch -fu "$remote" "$ref:$branch" && \
  git checkout "$branch" && \
  git config --local --replace "branch.$branch.merge" "$ref" && \
  git config --local --replace "branch.$branch.remote" "$remote"
}

pull_pr_if_matched() {
  if [[ $1 =~ ^(.*):([0-9]+)|(https?://[^/]+/.+)/pull/([0-9]+).*$ ]]; then
    if [[ -n ${BASH_REMATCH[2]} ]]; then
        remote="${BASH_REMATCH[1]:-origin}"
        id="${BASH_REMATCH[2]}"
    else
        remote="${BASH_REMATCH[3]}.git"
        id="${BASH_REMATCH[4]}"
    fi

    branch=pr/$id
    pull "$remote" "$id" "$branch"
    return $?
  fi

  echo "$1 doesn't match the pr id pattern."
  return 1
}

for arg in "$@"; do
    case "$arg" in
        -m|--merge)
            TO_MERGE=1
            ;;
        *)
            # set the argument back
            set -- "$@" "$arg"
            ;;
    esac

    shift
done

test -z "$1" && echo "pr number required." 1>&2 && exit 1

if test "$1" = "clean"; then
  git for-each-ref refs/heads/pr/* --format='%(refname)' | while read -r ref; do
    git branch -D "${ref#refs/heads/}"
  done

elif [[ "$1" =~ ^[0-9]+$ ]]; then
  remote_pref=${2:-$(git config --get git-extras.pr.remote)}
  remote=${remote_pref:-origin}
  id=$1
  branch=pr/$id
  pull "$remote" "$id" "$branch"

else
  rc=1
  while [ "$1" != "" ]; do
    pull_pr_if_matched "$1"
    rc=$?
    shift
  done

  exit "$rc"
fi
07070100000040000081ED0000000000000000000000016627A28D00000933000000000000000000000000000000000000002500000000git-extras-7.2.0/bin/git-psykorebase#!/usr/bin/env bash
PROGRAM=$0
PRIMARY_BRANCH=""
SECONDARY_BRANCH=""
FF="--ff"
CONTINUE="no"

function current_branch() {
    git rev-parse --abbrev-ref HEAD
}

function usage()
{
    echo "USAGE: ${PROGRAM} PRIMARY_BRANCH [SECONDARY_BRANCH] [--no-ff]"
    echo "USAGE: ${PROGRAM} --continue"
    echo ""
    echo "OPTIONS:"
    echo "  --no-ff:			Force rebase commit."
    echo "  -c|--continue:		Continue after the user updates conflicts."
}

while [[ $# -gt 0 ]]
do
  key="$1"

  case $key in
      --no-ff)
      FF="--no-ff"
      ;;
      -c|--continue)
      CONTINUE=yes
      ;;
      *)
      if [[ "$PRIMARY_BRANCH" == "" ]]; then
          PRIMARY_BRANCH=$key
      elif [[ "$SECONDARY_BRANCH" == "" ]]; then
          SECONDARY_BRANCH=$key
      else
          usage
          exit 20  # Error during arguments parsing
      fi
      ;;
  esac
  shift  # past argument or value
done

if [[ "$SECONDARY_BRANCH" == "" ]]; then
    SECONDARY_BRANCH=$(current_branch)
fi

if [[ "$CONTINUE" == "yes" ]]; then
    TARGET_BRANCH=$(current_branch)
    SECONDARY_BRANCH=${TARGET_BRANCH%"-rebased-on-top-of-"*}
    PRIMARY_BRANCH=${TARGET_BRANCH#*"-rebased-on-top-of-"}
    if [[ "${SECONDARY_BRANCH}-rebased-on-top-of-${PRIMARY_BRANCH}" != $TARGET_BRANCH ]]; then
        echo "Couldn't continue rebasing on ${TARGET_BRANCH}"
        exit 30  # Impossible to detect PRIMARY_BRANCH AND SECONDARY_BRANCH
    fi

    echo "Continuing rebasing of $SECONDARY_BRANCH on top of $PRIMARY_BRANCH"
    git commit || exit 51
    git branch -d "${SECONDARY_BRANCH}"  || exit 52
    git branch -m "${TARGET_BRANCH}" "${SECONDARY_BRANCH}" || exit 53

elif [[ "$PRIMARY_BRANCH" == "" ]]; then
    usage
    exit 10  # Missing arguments PRIMARY_BRANCH
else
    echo "Rebasing $SECONDARY_BRANCH on top of $PRIMARY_BRANCH"
    TARGET_BRANCH="${SECONDARY_BRANCH}-rebased-on-top-of-${PRIMARY_BRANCH}"

    git checkout "${PRIMARY_BRANCH}" || exit 41
    git checkout -b "${TARGET_BRANCH}" || exit 42

    if git merge "${SECONDARY_BRANCH}" ${FF} \
        -m "Psycho-rebased branch ${SECONDARY_BRANCH} on top of ${PRIMARY_BRANCH}"; then
        git branch -d "${SECONDARY_BRANCH}" || exit 43
        git branch -m "${TARGET_BRANCH}" "${SECONDARY_BRANCH}" || exit 44
    else
        echo "Resolve the conflict and run ``${PROGRAM} --continue``."
        exit 1
    fi
fi
07070100000041000081ED0000000000000000000000016627A28D0000077C000000000000000000000000000000000000002600000000git-extras-7.2.0/bin/git-pull-request#!/usr/bin/env bash

#
# Echo <msg> and exit
#

abort() {
  echo >&2 "$@"
  exit 1
}

#
# Produce json with <title>, <body>, <head> and <base>
#

json() {
  local title="${1//\"/\\\"}"
  local body="${2//\"/\\\"}"
  local head="${3//\"/\\\"}"
  local base="${4//\"/\\\"}"
  cat <<EOF
{
  "title": "$title",
  "body": "$body",
  "head": "$head",
  "base": "$base"
}
EOF
}

# personal access token
# config name is github-personal-access-token '_' is not allowed in git config

github_personal_access_token=$(git config git-extras.github-personal-access-token)

test -z "$github_personal_access_token" && abort "git config git-extras.github-personal-access-token required"

# branch

branch=${1-$(git symbolic-ref HEAD | sed 's/refs\/heads\///')}
remote=$(git config branch."$branch".remote)
if [ -z "$remote" ]; then
    echo 'no upstream found, push to origin as default'
    remote="origin"
fi
[ "$remote" == "." ] && abort "the upstream should be a remote branch."

# make sure it's pushed

git push "$remote" "$branch" || abort "failed to push $branch"

remote_url=$(git config remote."$remote".url)
if [[ "$remote_url" == git@* ]]; then
    project=${remote_url##*:}
else
    project=${remote_url#https://*/}
fi
project=${project%.git}

# prompt

echo
echo "  create pull-request for $project '$branch'"
echo
printf "  title: " && read -r title
printf "  body: " && read -r body
printf "  base [%s]: " "$(git_extra_default_branch)" && read -r base
printf "  GitHub two-factor authentication code (leave blank if not set up): " && read -r mfa_code
echo

# create pull request

if [ -z "$base" ]
then
    base="$(git_extra_default_branch)"
fi

body=$(json "$title" "$body" "$branch" "$base")

curl \
		-X POST \
		-H "Accept: application/vnd.github.v3+json" \
		-H "Authorization: token $github_personal_access_token" \
		-H "X-GitHub-OTP: $mfa_code" \
    "https://api.github.com/repos/$project/pulls" -d "$body"
07070100000042000081ED0000000000000000000000016627A28D00001021000000000000000000000000000000000000002200000000git-extras-7.2.0/bin/git-reauthor#!/usr/bin/env bash


init_variables() {
  COMMAND=${0#*-}

  CONFIG=false
  ALL=false
  unset OLD_EMAIL
  unset CORRECT_EMAIL
  unset CORRECT_NAME
  TYPE='both'
}


usage() {
  cat << EOF
usage: git ${COMMAND} [<options>]

Options
    -a, --all                     rewrite all identities in commits and tags
    -c, --use-config              define correct values from user Git config
    -e, --correct-email  <email>  define the correct email to set
    -n, --correct-name   <name>   define the correct name to set
    -o, --old-email      <email>  rewrite identities matching old email in commits and tags
    -t, --type           <id>     define the type of identities affected by the rewrite
                                  author, committer, both (default)
EOF
}


error() {
  if [[ -n "$1" ]]; then
    local msg=$( echo "error: $1" | sed 's/\\n/\\n       /g' )
    echo -e "${msg}" >&2
  fi
  usage
  exit 1
}


reauthor() {
  local author='
    if ${ALL} || [ "${GIT_AUTHOR_EMAIL}" = "${OLD_EMAIL}" ]; then
      [ -z "${CORRECT_EMAIL+x}" ] || export GIT_AUTHOR_EMAIL="${CORRECT_EMAIL}"
      [ -z "${CORRECT_NAME+x}" ] || export GIT_AUTHOR_NAME="${CORRECT_NAME}"
    fi
  '
  local committer='
    if ${ALL} || [ "${GIT_COMMITTER_EMAIL}" = "${OLD_EMAIL}" ]; then
      [ -z "${CORRECT_EMAIL+x}" ] || export GIT_COMMITTER_EMAIL="${CORRECT_EMAIL}"
      [ -z "${CORRECT_NAME+x}" ] || export GIT_COMMITTER_NAME="${CORRECT_NAME}"
    fi
  '
  local filter

  case "${TYPE}" in
    author) filter="${author}" ;;
    committer) filter="${committer}" ;;
    both) filter="${author} ${committer}" ;;
  esac

  export ALL
  export OLD_EMAIL
  export CORRECT_EMAIL
  export CORRECT_NAME

  git filter-branch --force --env-filter "${filter}" \
  --tag-name-filter cat -- --branches --tags
}


parse_options() {
  while [[ "$#" -gt 0 ]]; do
    case "$1" in
      --all|-a)
        ALL=true
        shift
        ;;
      --correct-email|-e)
        [[ -n "${2+x}" ]] || error 'Missing correct-email value'
        CORRECT_EMAIL="$2"
        shift 2
        ;;
      -h)
        usage
        exit 0
        ;;
      --correct-name|-n)
        [[ -n "${2+x}" ]] || error 'Missing correct-name value'
        CORRECT_NAME="$2"
        shift 2
        ;;
      --old-email|-o)
        [[ -n "${2+x}" ]] || error 'Missing old-email value'
        OLD_EMAIL="$2"
        shift 2
        ;;
      --type|-t)
        [[ -n "${2+x}" ]] || error 'Missing type value'
        TYPE="$2"
        shift 2
        ;;
      --use-config|-c)
        CONFIG=true
        shift
        ;;
      *)
        error "invalid option '$1'"
        ;;
    esac
  done

  if ${CONFIG}; then
    # use config values if not explicitly already defined
    [[ -n "${CORRECT_EMAIL+x}" ]] || CORRECT_EMAIL=$( git config user.email )
    [[ -n "${CORRECT_NAME+x}" ]] || CORRECT_NAME=$( git config user.name )
  fi
}


validate_options() {
  # Either OLD_EMAIL should be set or ALL should be true
  if [[ -z "${OLD_EMAIL+x}" ]] && ! ${ALL}; then
    msg="missing target of the rewrite"
    msg="${msg}\nuse either --old-email option or --all flag"
    error "${msg}"
  fi

  # OLD_EMAIL shouldn't be set if ALL is true as well to prevent misuse
  if [[ -n "${OLD_EMAIL+x}" ]] && ${ALL}; then
    msg="ambiguous target of the rewrite"
    msg="${msg}\nuse either --old-email option or --all flag"
    error "${msg}"
  fi

  # CORRECT_NAME should be either unset or set to non-empty string
  [[ -n "${CORRECT_NAME-x}" ]] || error "empty name is not allowed"

  # Either CORRECT_EMAIL or CORRECT_NAME should be set
  if [[ -z "${CORRECT_EMAIL+x}" ]] && [[ -z "${CORRECT_NAME+x}" ]]; then
    msg="missing correct email and/or name to set"
    msg="${msg}\nuse --correct-email and/or --correct-name options"
    msg="${msg}\nor --use-config flag with user values set in Git config"
    error "${msg}"
  fi

  # TYPE should be a valid identifier
  if [[ "${TYPE}" != 'both' ]] \
     && [[ "${TYPE}" != 'author' ]] \
     && [[ "${TYPE}" != 'committer' ]]; then
    error "invalid type '${TYPE}'"
  fi
}


init_variables
parse_options "$@"
validate_options

reauthor
07070100000043000081ED0000000000000000000000016627A28D00000732000000000000000000000000000000000000002600000000git-extras-7.2.0/bin/git-rebase-patch#!/usr/bin/env bash

# Warn on a dirty work tree.
git rev-parse --verify HEAD >/dev/null || exit 1
git update-index -q --ignore-submodules --refresh
if ! git diff-files --quiet --ignore-submodules
then
        echo "WARNING (dirty work tree): The patch will only be checked against actual commits."
fi

# Warn on a dirty index.
if ! git diff-index --cached --quiet --ignore-submodules HEAD --
then
        echo "WARNING (dirty index): The patch will only be checked against actual commits."
fi

# Use a temporary index.
index=$(git_extra_mktemp)
cleanup() {
        rm "$index"
        exit 2
}
trap cleanup INT

# Go back in history while parent commits are available.
echo "Trying to find a commit the patch applies to..."
rev=$(git rev-parse HEAD)
while [ $? = 0 ]
do
        GIT_INDEX_FILE=$index git read-tree "$rev"

        # Try to apply the patch.
        GIT_INDEX_FILE=$index git apply --cached "$1" >/dev/null 2>&1
        patch_failed=$?

        # Do it again, but show the error, if the problem is the patch itself.
        if [ $patch_failed = 128 ]
        then
                GIT_INDEX_FILE=$index git apply --index --check "$1"
                exit $patch_failed
        fi

        # The patch applied. Commit and rebase.
        if [ $patch_failed = 0 ]
        then
                # Manufacture a commit.
                tree=$(GIT_INDEX_FILE=$index git write-tree)
                commit=$(git commit-tree "$tree" -p "$rev" -m "$1")
                rm "$index"

                echo "Patch applied to $(git rev-parse --short "$rev") as $(git rev-parse --short "$commit")"

                git cherry-pick "$commit"
                exit $?
        fi

        rev=$(git rev-parse --verify -q "$rev^")
done

# No compatible commit found. Restore.
echo "Failed to find a commit the patch applies to."
rm "$index"
exit 1
07070100000044000081ED0000000000000000000000016627A28D00000C2B000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-release#!/usr/bin/env bash
set -e

hook() {
  local hook=.git/hooks/$1.sh
  # compat without extname
  if test ! -f "$hook"; then
    hook=.git/hooks/$1
  fi

  if test -f "$hook"; then
    echo "... $1"
    shift
    if test -x "$hook"; then
      $hook "$@"
    else
      . "$hook" "$@"
    fi
  fi
}

exit_with_msg() {
    >&2 echo "$1"
    exit 1
}

if test $# -gt 0; then
  remote=''

  # check for flags
  while test $# != 0
  do
    case "$1" in
    -c) need_changelog=true;;
    -r) remote=$2; shift ;;
    -m) msg=$2; shift ;;
    -s)
      test -n "$keyid" &&
          exit_with_msg "Please use '-s' OR '-u'"
      sign=true
      ;;
    -u)
      test -n "$sign" &&
          exit_with_msg "Please use '-s' OR '-u'"
      keyid=$2
      shift
      ;;
    --semver)
      test -z "$2" &&
          exit_with_msg "major/minor/patch required for --semver option"
      semver=$2
      shift
      ;;
    --prefix)
      test -z "$2" &&
          exit_with_msg "prefix string required for --prefix option"
      prefix="$2"
      shift
      ;;
    --no-empty-commit) no_empty_commit=true;;
    --) shift; hook_args="$hook_args $*"; break;;
    *) test -z "$version" && version=$1 ;;
    esac

    shift

  done

  if [ -n "$semver" ]; then
    if [ -z "$(git tag)" ]; then
      echo "there is no tag in the git repo" 1>&2
      exit 1
    fi

    latest_tag=$(git describe --tags "$(git rev-list --tags --max-count=1)")

    if [[ ! "$latest_tag" =~ \
        ^$prefix([^0-9]*)([1-9][0-9]+|[0-9])\.([1-9][0-9]+|[0-9])\.([1-9][0-9]+|[0-9])(.*) ]]; then
      echo "the latest tag doesn't match semver format requirement" 1>&2
      exit 1
    fi

    case "$semver" in
    major ) version="${BASH_REMATCH[2]}" ;;
    minor ) version="${BASH_REMATCH[3]}" ;;
    patch ) version="${BASH_REMATCH[4]}" ;;
    *     ) echo "invalid semver argument given: $semver" 1>&2
            exit 1
            ;;
    esac

    (( ++version ))

    case "$semver" in
    major ) version="$prefix${BASH_REMATCH[1]}$version.0.0${BASH_REMATCH[5]}" ;;
    minor ) version="$prefix${BASH_REMATCH[1]}${BASH_REMATCH[2]}.$version.0${BASH_REMATCH[5]}" ;;
    patch ) version="$prefix${BASH_REMATCH[1]}${BASH_REMATCH[2]}.${BASH_REMATCH[3]}.$version${BASH_REMATCH[5]}" ;;
    esac
  fi

  hook_args="$version"

  if [ -z "$msg" ]; then
    msg="Release ${version}"
  fi

  # shellcheck disable=SC2086
  hook pre-release $hook_args \
    || exit_with_msg "pre-release hook failed! Cancelling release."
  echo "... releasing $version"
  if [ "$need_changelog" = true ]; then
    git-changelog -t "$version"
  fi

  if [ "$no_empty_commit" = true ]; then
    git commit -a -m "$msg" || true
  else
    git commit -a -m "$msg" --allow-empty
  fi

  declare -a sign_args
  if [ "$sign" == true ]; then
    sign_args=("-s")
  fi

  if [ -n "$keyid" ]; then
    sign_args=("-u" "$keyid")
  fi

  # shellcheck disable=SC2086
  git tag "${sign_args[@]}" $version -a -m "$msg" \
    && git push $remote --tags \
    && git push $remote \
    && hook post-release $hook_args \
    && echo "... complete"
else
  echo "tag required" 1>&2 && exit 1
fi
07070100000045000081ED0000000000000000000000016627A28D0000023B000000000000000000000000000000000000002700000000git-extras-7.2.0/bin/git-rename-branch#!/usr/bin/env bash
set -e

# Assert there is at least one branch provided
test -z "$1" && echo "new branch name required." 1>&2 && exit 1

if [ -z "$2" ]; then
    new_branch="$1"
    old_branch="$(git symbolic-ref --short -q HEAD)"
else
    new_branch="$2"
    old_branch="$1"
fi

remote=$(git config branch."$old_branch".remote; true)

git branch -m "$old_branch" "$new_branch"
# check if the branch is tracking a remote branch
if [[ -n "$remote" && "$remote" != "." ]]
then
    git push "$remote" :"$old_branch"
    git push --set-upstream "$remote" "$new_branch"
fi
07070100000046000081ED0000000000000000000000016627A28D000001AC000000000000000000000000000000000000002700000000git-extras-7.2.0/bin/git-rename-remote#!/usr/bin/env bash

set -euo pipefail

old=$1
new=$2

test -z "$old" && echo "old remote name required." 1>&2 && exit 1
test -z "$new" && echo "new remote name required." 1>&2 && exit 1

if ! git config --get "remote.$old.fetch" > /dev/null; then
  echo "remote $old doesn't exist"
  exit 1
fi

if git config --get "remote.$new.fetch" > /dev/null; then
  git remote remove "$new"
fi
git remote rename "$old $new"
git remote -v
07070100000047000081ED0000000000000000000000016627A28D00000104000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-rename-tag#!/usr/bin/env bash

old=$1
new=$2

test -z "$old" && echo "old tag name required." 1>&2 && exit 1
test -z "$new" && echo "new tag name required." 1>&2 && exit 1

git tag "$new" "$old"
git tag -d "$old"
git push origin "$new"
git push origin ":refs/tags/$old"
07070100000048000081ED0000000000000000000000016627A28D000002FD000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-repl#!/usr/bin/env bash

git version
echo "git-extras version ""$(git-extras -v)"
echo "type 'ls' to ls files below current directory, '!command' to execute any command or just 'subcommand' to execute any git subcommand"

while true; do
  # Current branch
  cur=$(git symbolic-ref HEAD 2> /dev/null | cut -d/ -f3-)

  # Prompt
  if test -n "$cur"; then
    prompt="git ($cur)> "
  else
    prompt="git> "
  fi

  # Readline
  read -e -r -p "$prompt" cmd

  # EOF
  test $? -ne 0 && break

  # History
  history -s "$cmd"

  # Built-in commands
  case $cmd in
    ls) cmd=ls-files;;
    "") continue;;
    quit|exit) break;;
  esac

  if [[ $cmd == !*  ]]; then
    eval ${cmd:1} 
  elif [[ $cmd == git* ]]; then
    eval $cmd
  else
    eval git "$cmd"
  fi
done

echo
07070100000049000081ED0000000000000000000000016627A28D00000135000000000000000000000000000000000000002400000000git-extras-7.2.0/bin/git-reset-file#!/usr/bin/env bash

file="$1"
commit="$2"

if [[ -f $file ]]; then
	git rm --cached -q -f -- "$file"
	if [[ -z $commit ]]; then
		git checkout HEAD -- "$file"
		echo "Reset '$1' to HEAD"
	else
		git checkout "$commit" -- "$file"
		echo "Reset '$1' to $commit"
	fi
else
	echo "File '$1' not found in $PWD"
fi
0707010000004A000081ED0000000000000000000000016627A28D00000214000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-root#!/usr/bin/env bash

git_root() {
  git rev-parse --show-toplevel
}

# get the relative path of current path according to root of repo
git_root_relative() {
    rel=$(git rev-parse --show-prefix)
    if [ -z "$rel" ]; then
        # git rev-parse --show-prefix will output empty string when we are in the root dir
        echo "."
    else
        echo "$rel"
    fi
}

if test $# -eq 0; then
    git_root
else
    case "$1" in
    -r|--relative)
        git_root_relative
        ;;
    *)
        git_root
        ;;
    esac
fi

0707010000004B0000A1FF00000000000000000000000166A5AA9300000007000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-rscpgit-scp0707010000004C000081ED0000000000000000000000016627A28D00000FA4000000000000000000000000000000000000001D00000000git-extras-7.2.0/bin/git-scp#!/usr/bin/env bash

COLOR_RED()   { test -t 1 && echo -n "$(tput setaf 1)"; }
COLOR_GREEN() { test -t 1 && echo -n "$(tput setaf 2)"; }
COLOR_YELLOW(){ test -t 1 && echo -n "$(tput setaf 3)"; }
COLOR_BLUE()  { test -t 1 && echo -n "$(tput setaf 4)"; }
COLOR_RESET() { test -t 1 && echo -n "$(tput sgr 0)"; }

function _test_git_scp()
{
	command -v rsync    > /dev/null || _error requires rsync
	command -v git      > /dev/null || _error requires git
	command -v ssh      > /dev/null || _error requires ssh
	command -v php      > /dev/null || _info  optional php
	command -v dos2unix > /dev/null || _info  optional dos2unix
}

function set_remote()
{
	remote=$1
	if [ "$(git remote | grep -c -- "^$remote$")" -eq 0 ]
	then
		COLOR_RED
		echo "Remote $remote does not exist in your git config"
		COLOR_RESET
		exit 1
	fi
}

# Check file for PHP syntax errors
# takes a list of filenames
function php_lint()
{
	local error_count=()
	for i
	do
		# check if file exists
		# check if file ends with ".php"
		test ! -f "$i" && continue
		case "$i" in
			*\.php|*\.phtml)
				if ! php -l "$i" > /dev/null; then
					error_count[${#error_count[@]}]="$i"
				fi
			;;
		esac
	done

	# syntax check fails, force exit
	test ${#error_count[@]} -gt 0 &&
		COLOR_RED &&
		echo "Error: ${#error_count[@]} PHP syntax error found" &&
		echo "${error_count[@]}" | tr " " '\n' &&
		COLOR_RESET &&
		exit 255

	return 0
}

function _dos2unix()
{
	command -v dos2unix > /dev/null && dos2unix $@
	return 0
}

function _sanitize()
{
	git config --get-all extras.scp.sanitize | while read -r i
	do
		case $i in
			php_lint) php_lint  $@;; # git config --global --add extras.scp.sanitize php_lint
			dos2unix) _dos2unix $@;; # git config --global --add extras.scp.sanitize dos2unix
		esac
	done
	return $?
}

function scp_and_stage
{
	set_remote "$1"
	shift

	local refhead
	refhead="$(git rev-parse --quiet --verify "$1")"
	if [ -n "$refhead" ]
	then
		shift
		[ "$(git branch --contains "$refhead" | grep -c '\*')" -eq 0 ] &&
			_error "refhead provided is not part of current branch"
	fi

	if [ $# -ge 1 ]
	then
		list=$(git ls-files "$@")" "$(git ls-files -o "$@")
	elif [ -n "$refhead" ]
	then
		git diff --stat "$refhead"
		list=$(git diff "$refhead" --name-only)
	else
		git diff
		list=$(git diff --name-only)
	fi

	deleted=$(for i in $list; do [ -f "$i" ] || echo "$i"; done)
	   list=$(for i in $list; do [ -f "$i" ] && echo "$i"; done)

	if [ -n "$list" ]
	then
		local _TMP=${0///}
		echo "$list" > "$_TMP" &&
		_sanitize $list &&
		_info "Pushing to $remote ($(git config "remote.$remote.url"))" &&
		rsync -rlDv --files-from="$_TMP" ./ "$(git config "remote.$remote.url")/" &&
		git add --force $list &&
		rm "$_TMP"
	fi

	deleted=$(for i in $deleted; do echo "$(git config "remote.$remote.url" | cut -d: -f2)/$i"; done)

	[ -n "$deleted" ] &&
	COLOR_RED &&
	echo Deleted remote files &&
	ssh "$(git config "remote.$remote.url" | cut -d: -f1)" -t "rm $deleted" &&
	echo "$deleted"
	COLOR_RESET
}

function reverse_scp()
{
	set_remote "$1"
	shift

	local _TMP=${0///}
	echo $@ > "$_TMP" &&
		rsync -rlDv --files-from="$_TMP" "$(git config "remote.$remote.url")/" ./ &&
		rm "$_TMP"
}

function _info()
{
	COLOR_YELLOW
	test $# -gt 0 && echo "$@"
	COLOR_RESET
}

function _usage()
{
	echo "Usage:
	git scp -h|help|?
	git scp <remote> [ref|file..]         # scp and stage your files to specified remote
	git scp <remote> [<ref>]              # show diff relative to <ref> and upload unstaged files to <remote>
	git rscp <remote> [<file|directory>]  # copy <remote> files to current working directory
	"

	case $1 in
		-v|verbose|--verbose) grep -A100 '^#* OPTIONS #*$' "$0" ;;
	esac
	exit
}

function _error()
{
	[ $# -eq 0 ] && _usage && exit 0

	echo
	echo "ERROR: $*"
	echo
	exit 1
}

### OPTIONS ###
case $(basename "$0") in
	git-scp)
		case $1 in
			''|-h|'?'|help|--help) shift; _test_git_scp; _usage "$@";;
			*)                   scp_and_stage $@;;
		esac
	;;
	git-rscp)                  reverse_scp $@;;
esac
0707010000004D000081ED0000000000000000000000016627A28D00000AD8000000000000000000000000000000000000001D00000000git-extras-7.2.0/bin/git-sed#!/usr/bin/env bash

usage() {
    cat <<EOF
usage: git sed [ -c ] [ -f <flags> ] <search> <replacement> [ <flags> ]

Run git grep and then send results to sed for replacement with the
given flags, if they are provided via -f or as the third argument.

Also runs git commit if -c is provided.
EOF
}

# don't commit by default
do_commit() {
    true
}

pathspec=
while [ "$1" != "" ]; do
    case "$1" in
        -c|--commit)
            if git status --porcelain | grep .; then
                echo "you need to commit your changes before running with --commit"
                exit 1
            fi
            do_commit() {
                git commit -m"replace $search with $replacement

actual command:

    $command" -a
            }
            ;;
        -f|--flags)
            if [ "$2" = "" ]; then
                usage
                echo "missing argument for $1"
                exit 1
            fi
            shift
            flags=$1
            ;;
        -h|--help)
            usage
            exit
            ;;
        --)
            pathspec="$*"
            break
            ;;
        -*)
            usage
            echo "unknown flag: $1"
            exit 1
            ;;
        *)
            if [ "$search" = "" ]; then
                search="$1"
            elif [ "$replacement" = "" ]; then
                replacement="$1"
            elif [ "$flags" = "" ]; then
                flags="$1"
            else
                usage
                echo "too many arguments: $1"
                exit 1
            fi
            ;;
    esac
    shift
done

all="$search$replacement$flags"
case "$all" in
    */*)
        ascii="$(for((i=32;i<=127;i++)) do printf '%b' "\\$(printf '%03o' "$i")"; done)"
        escaped="${all//-/\\-}"
        escaped="${escaped//[/\\[}"
        sep="$(printf '%s' "$ascii" | tr -d "$escaped")"
        sep="$(printf %.1s "$sep")"
        if [ "$sep" = "" ] ; then
            echo 'could not find an unused character for sed separator character'
            exit 1
        fi
        ;;
    *)
        sep=/
        ;;
esac

r=$(xargs -r false < /dev/null > /dev/null 2>&1 && echo r)
need_bak=$(sed -i s/hello/world/ "$(git_extra_mktemp)" > /dev/null 2>&1 || echo true)

if [ "$need_bak" ]; then
    command="git grep -lz '$search' $pathspec | xargs -0$r sed -i '' 's$sep$search$sep$replacement$sep$flags'"
    # shellcheck disable=SC2086
    git grep -lz "$search" $pathspec | xargs -0"$r" sed -i '' "s$sep$search$sep$replacement$sep$flags"
else
    command="git grep -lz '$search' $pathspec | xargs -0$r sed -i 's$sep$search$sep$replacement$sep$flags'"
    # shellcheck disable=SC2086
    git grep -lz "$search" $pathspec | xargs -0"$r" sed -i "s$sep$search$sep$replacement$sep$flags"
fi
do_commit
0707010000004E000081ED0000000000000000000000016627A28D000001AE000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-setup#!/usr/bin/env bash

COMMIT_MESSAGE='Initial commit'

if [ "$1" == "-m" ]; then
    COMMIT_MESSAGE=$2
    shift; shift
fi

gitdirexists(){
    if [ -d ".git" ]; then
        echo ".git directory already exists, aborting"
        exit 1
    fi
}

dir=$(test -z "$*" && echo "." || echo "$*")
mkdir -p "$dir" \
  && cd "$dir" \
  && gitdirexists \
  && git init \
  && git add . \
  && git commit --allow-empty -m "$COMMIT_MESSAGE"
0707010000004F000081ED0000000000000000000000016627A28D00000077000000000000000000000000000000000000002E00000000git-extras-7.2.0/bin/git-show-merged-branches#!/usr/bin/env bash

git branch --no-color --merged | grep -v "\*" | grep -v "$(git_extra_default_branch)" | tr -d ' '
07070100000050000081ED0000000000000000000000016627A28D00000059000000000000000000000000000000000000002300000000git-extras-7.2.0/bin/git-show-tree#!/usr/bin/env bash

git log --all --graph --decorate --oneline --simplify-by-decoration
07070100000051000081ED0000000000000000000000016627A28D0000007A000000000000000000000000000000000000003000000000git-extras-7.2.0/bin/git-show-unmerged-branches#!/usr/bin/env bash

git branch --no-color --no-merged | grep -v "\*" | grep -v "$(git_extra_default_branch)" | tr -d ' '
07070100000052000081ED0000000000000000000000016627A28D000006F3000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-squash#!/usr/bin/env bash

SQUASH_MSG=
for arg in "$@"; do
    case "$arg" in
        --squash-msg)
            SQUASH_MSG=1
            ;;
        *)
            # set the argument back
            set -- "$@" "$arg"
            ;;
    esac

    shift
done

src="$1"
msg="$2"
if [[ -n "$msg" ]] && [[ -n "$SQUASH_MSG" ]]; then
    >&2 echo "When commit message is given, --squash-msg is not allowed."
    exit 1
fi

is_branch() {
  git show-ref --verify --quiet "refs/heads/$src"
}

is_commit_reference() {
  git rev-parse --verify --quiet "$src" > /dev/null 2>&1
}

is_on_current_branch() {
  local commit_sha
  commit_sha=$(git rev-parse "$src")
  git rev-list HEAD |
    grep -q -- "$commit_sha"
}

commit_if_msg_provided() {
  if test -n "$msg"; then
    git commit -a -m "$msg"
  fi
}

prompt_continuation_if_squashing_default_branch() {
  if [[ $src == $(git_extra_default_branch) ]]; then
    read -p "Warning: squashing '$src'! Continue [y/N]? " -r
    if ! [[ $REPLY =~ ^[Yy]$ ]]; then
      echo "Exiting"
      exit 1
    fi
  fi
}

squash_branch() {
  prompt_continuation_if_squashing_default_branch
  if [ -n "$SQUASH_MSG" ]; then
      base=$(git merge-base "$src" @)
      msg=$(git log "$base".."$src" --format="%s%n%n%b" --no-merges --reverse)
  fi
  git merge --squash "$src" || exit 1  # quits if `git merge` fails
  commit_if_msg_provided
}

squash_current_branch() {
  if [ -n "$SQUASH_MSG" ]; then
      msg=$(git log "$src"..@ --format="%s%n%n%b" --no-merges --reverse)
  fi
  git reset --soft "$src" || exit 1    # quits if `git reset` fails
  commit_if_msg_provided
}

if is_branch; then
  squash_branch
elif is_commit_reference && is_on_current_branch; then
  squash_current_branch
else
  echo "Source branch or commit reference required." 1>&2 && exit 1
fi
07070100000053000081ED0000000000000000000000016627A28D00000560000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-stamp#!/usr/bin/env bash


init_variables() {
  COMMAND=${0#*-}

  REPLACE=false
  unset ID
  unset MSG
}


usage() {
  cat << EOF
usage: git ${COMMAND} [<options>] <id> [<messages>]

Options:
    -r, --replace    replace all previous stamps with same id
EOF
}


error() {
  if [[ -n "$1" ]]; then
    echo "error: $1" >&2
  fi
  usage
  exit 1
}


stamp() {
  local commit_msg=$( git log -1 --pretty=%B )
  local stamp_msg
  [[ -n "${MSG}" ]] && stamp_msg="${ID} ${MSG}" || stamp_msg="${ID}"

  if ${REPLACE}; then
    # remove previous stamps with same ID from the commit message
    commit_msg=$(
      echo "${commit_msg}" \
        | grep --ignore-case --invert-match "^${ID}\b" \
        | cat -s
    )
  fi

  # append the stamp to the commit message in a new paragraph
  git commit --amend \
    --message "${commit_msg}" \
    --message "${stamp_msg}" \
    > /dev/null

  # show result
  git log -1 --pretty=full
}


parse_options() {
  while [[ "$#" -gt 0 ]]; do
    case "$1" in
      -h)
        usage
        exit 0
        ;;
      --replace|-r)
        REPLACE=true
        shift
        ;;
      *)
        break
        ;;
    esac
  done

  ID="$1"
  MSG="${*:2}"
}


validate_options() {
  # ID should be set to non-empty string
  if [[ -z "${ID}" ]]; then
    error "missing stamp identifier"
  fi
}


init_variables
parse_options "$@"
validate_options

stamp
07070100000054000081ED0000000000000000000000016627A28D0000225F000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-standup#!/usr/bin/env bash

# Code modified from https://github.com/kamranahmedse/git-standup,
# under the MIT LICENSE.
usage() {
    cat <<EOS
    Usage:
    git standup [-a <author name>] [-w <weekstart-weekend>|-d <days-ago>] [-m <max-dir-depth>] [-D date-format] [-L] [-h] [-f] [-B] [-n <number-of-commits] [-F <gpg|authordate>]

    -a      - Specify author to restrict search to, default to current git user.
              Use "-a all" if you don't want the restriction.
    -w      - Specify weekday range to limit search to
    -m      - Specify the depth of recursive directory search
    -L      - Toggle inclusion of symbolic links in recursive directory search
    -d      - Specify the number of days back to include
    -D      - Specify the date format for "git log" (default: relative)
    -h      - Display this help screen
    -f      - Fetch the latest commits beforehand
    -B      - Display the commits in branch groups
    -n      - Limit the number of commits displayed per group
    -F gpg  - Show if commit is GPG signed (G) or not (N)
    -F authordate - Print author date instead of commit date

    Examples:
    git standup -a "John Doe" -w "MON-FRI" -m 3
EOS
}

warn() {
    >&2 echo "${BOLD}${RED}WARNING: $1${NORMAL}"
}

git rev-parse --show-toplevel > /dev/null 2>&1
in_git_repo=$?

# Use colors, but only if connected to a terminal, and that terminal
# supports them.
if command -v tput >/dev/null 2>&1; then
    ncolors=$(tput colors)
fi
if [[ -t 1 ]] && [[ -n "$ncolors" ]] && [[ "$ncolors" -ge 8 ]] ; then
    RED="$(tput setaf 1)"
    GREEN="$(tput setaf 2)"
    YELLOW="$(tput setaf 3)"
    BOLD="$(tput bold)"
    NORMAL="$(tput sgr0)"
    BOLD=$(tput bold)
    UNDERLINE=$(tput smul)
    NORMAL=$(tput sgr0)
    COLOR=always
else
    RED=""
    GREEN=""
    YELLOW=""
    BOLD=""
    NORMAL=""
    BOLD=""
    UNDERLINE=""
    NORMAL=""
    COLOR=never
fi

# Only enable exit-on-error after the non-critical colorization stuff,
# which may fail on systems lacking tput or terminfo
set -e

RANGE_SPECIFIED=
COMMIT_DATE_FORMAT=%cd
USE_GPG_FORMAT=no

while getopts "hgfF:Bd:a:w:m:D:n:L" opt; do
    case $opt in
        h)
            usage
            exit 0
            ;;
        a)
            if [[ "$OPTARG" = 'all' ]] ; then
                AUTHOR=".*"
            else
                AUTHOR="$OPTARG"
            fi
            ;;
        d)
            test -n "$RANGE_SPECIFIED" && warn "-d option is conflict with -w"
            RANGE_SPECIFIED=yes
            if [ "$OPTARG" -lt 1 ]; then
                >&2 echo "Specify days less than one is invalid"
                exit 1
            fi
            SINCE="$OPTARG days ago"
            ;;
        w)
            if [ -n "$RANGE_SPECIFIED" ]; then
                warn "-w option is conflict with -d"
                continue
            fi
            RANGE_SPECIFIED=yes

            week_range=${OPTARG}
            week_start="${week_range%%-*}"
            week_start="${week_start:="Mon"}"
            week_end="${week_range##*-}"
            week_end=${week_end:="Fri"}

            ## In case it is the start of week, we need to
            ## show the commits since the last weekend
            shopt -s nocasematch
            if [[ "$week_start" == "$(LC_ALL=C date +%a)" ]] ; then
                SINCE="last $week_end";
            fi
            ;;
        f)
            FETCH_LAST_COMMIT=true
            ;;
        m)
            MAXDEPTH=$((OPTARG + 1))
            if [ "$MAXDEPTH" -lt 1 ]; then
                >&2 echo "Specify depth less than one is invalid"
                exit 1
            fi
            ;;
        L)
            INCLUDE_LINKS=-L
            ;;
        D)
            GIT_DATE_FORMAT=${OPTARG}
            ;;
        g)
            warn "-g option is deprecated, use '-F gpg' instead"
            USE_GPG_FORMAT=yes
            ;;
        B)
            GROUP_BY_BRANCHES=true
            ;;
        n)
            MAX_COMMIT_NUM=${OPTARG}
            ;;
        F)
            case $OPTARG in
                gpg)
                    USE_GPG_FORMAT=yes
                    ;;
                authordate)
                    COMMIT_DATE_FORMAT=%ad
                    ;;
                *)
                    warn "Invalid argument for -F: $OPTARG"
                    usage
                    exit 1
                    ;;
            esac
            ;;
        \?)
            usage
            exit 1
            ;;
    esac
done

shift $((OPTIND-1))

if [[ $# -gt 0 ]]; then
    warn "please upgrade to new-style interface. Run 'git help standup' to get more info."
    if [[ $# -gt 3 ]] ; then
        usage
        exit 1
    fi
    AUTHOR=$1
    SINCE=$2
    UNTIL=$3
fi

AUTHOR=${AUTHOR:="$(git config user.name || echo '')"}
if [ -z "${AUTHOR}" ]; then
    warn "please configure an author with 'git config user.name' or specify an author via '-a'"
    exit 1
fi

FETCH_LAST_COMMIT=${FETCH_LAST_COMMIT:=false}
MAXDEPTH=${MAXDEPTH:=2}
GIT_PRETTY_FORMAT="%Cred%h%Creset - %s %Cgreen(${COMMIT_DATE_FORMAT}) %C(bold blue)<%an>%Creset"
GIT_DATE_FORMAT=${GIT_DATE_FORMAT:=relative}
if [[ "$USE_GPG_FORMAT" == 'yes' ]]; then
    GIT_PRETTY_FORMAT="$GIT_PRETTY_FORMAT %C(yellow)gpg: %G?%Creset"
fi

# Handle config of implicit week
IMPLICIT_WEEK=$(git config --get git-extras.standup.implicit-week || echo '')
if [[ -z "$RANGE_SPECIFIED" ]] && [[ -n "${IMPLICIT_WEEK}" ]]; then
    week_start=${IMPLICIT_WEEK%%-*}
    week_end=${IMPLICIT_WEEK##*-}
    shopt -s nocasematch
    if [[ "$week_start" == "$(LC_ALL=C date +%a)" ]]; then
        SINCE="last $week_end"
    fi
    UNTIL=today
else
    SINCE=${SINCE:=yesterday}
    UNTIL=${UNTIL:=today}
fi

GIT_LOG_COMMAND="git --no-pager log \
    --no-merges
    --since \"$SINCE\"
    --until \"$UNTIL\"
    --author=\"$AUTHOR\"
    --abbrev-commit
    --oneline
    --color=$COLOR
    --pretty=format:'$GIT_PRETTY_FORMAT'
    --date='$GIT_DATE_FORMAT'"
if [[ -n "$MAX_COMMIT_NUM" ]]; then
    GIT_LOG_COMMAND="$GIT_LOG_COMMAND --max-count=$MAX_COMMIT_NUM"
fi

git_output() {
    if [ "$GROUP_BY_BRANCHES" = true ]; then
        local branches
        branches=$(git branch --sort=-committerdate | awk '{print substr($0, 3)}')
        for branch in $branches; do
            # shellcheck disable=SC2086
            if output=$(eval $GIT_LOG_COMMAND "$branch"); then
                if [[ -n "$output" ]] ;  then
                    echo "${GREEN}${branch}${NORMAL}"
                    echo "$output"
                    echo ""
                fi
            fi
            # TODO optimize:return if the latest commit of a branch is earlier than the 'since' day
        done
    else
        # shellcheck disable=SC2086
        eval $GIT_LOG_COMMAND --all
    fi
}

## For when the command has been run in a non-repo directory
if [[ $in_git_repo != 0 ]]; then
    ## Set delimiter to newline for the loop
    IFS=$'\n'
    ## Recursively search for git repositories
    # shellcheck disable=SC2086
    PROJECT_DIRS=$(find $INCLUDE_LINKS . -maxdepth "$MAXDEPTH" -mindepth 0 -name .git)

    # Fetch the latest commits, if required
    if [ "$FETCH_LAST_COMMIT" = true ]; then

        echo "${BOLD}${GREEN}Fetching commits ..${NORMAL}"

        # Foreach of the project directories, fetch the commits
        for DIR in $PROJECT_DIRS; do
            DIR="$(dirname "$DIR")"
            pushd "$DIR" > /dev/null

            if [[ -d ".git" ]] ; then
                echo "   ${YELLOW}$(basename "$DIR")${NORMAL}"
                git fetch --all > /dev/null 2>&1
            fi

            popd > /dev/null
        done
    fi

    # Get the standup details for each of the projects
    for DIR in $PROJECT_DIRS; do
        DIR="$(dirname "$DIR")"
        pushd "$DIR" > /dev/null
        ## Show the detail only if it is a git repository
        if [[ -d ".git" || -f ".git" ]] ; then
            if GITOUT=$(git_output); then
                ## Only output if there is some activities
                if [[ -n "$GITOUT" ]] ;  then
                    echo "${BOLD}${UNDERLINE}${YELLOW}$(basename "$DIR")${NORMAL}"
                    echo "$GITOUT"
                    echo ""
                fi
            else
                echo "Repository under $DIR could not be queried." >&2
            fi
        fi
        popd > /dev/null
    done
else
    if [ "$FETCH_LAST_COMMIT" = true ]; then
        echo "${GREEN}Fetching commits ..${NORMAL}"
        git fetch --all > /dev/null 2>&1
    fi

    if GITOUT=$(git_output); then
        if [[ -n "$GITOUT" ]] ;  then
            echo "$GITOUT"
        else
            if [[ $AUTHOR = '.*' ]] ; then
                AUTHOR="all the contributors"
            fi

            echo "${YELLOW}Seems like $AUTHOR did nothing!${NORMAL}"
        fi
    fi
fi
07070100000055000081ED0000000000000000000000016627A28D000018B6000000000000000000000000000000000000002100000000git-extras-7.2.0/bin/git-summary#!/usr/bin/env bash


cd "$(git root)" || { echo "Can't cd to top level directory";exit 1; }

SUMMARY_BY_LINE=
DEDUP_BY_EMAIL=
MERGES_ARG=
OUTPUT_STYLE=
for arg in "$@"; do
    case "$arg" in
        --line)
            SUMMARY_BY_LINE=1
            ;;
        --dedup-by-email)
            DEDUP_BY_EMAIL=1
            ;;
        --no-merges)
            MERGES_ARG="--no-merges"
            ;;
        --output-style)
            OUTPUT_STYLE="$2"
            shift
            ;;
        -*)
            >&2 echo "unknown argument $arg found"
            exit 1
            ;;
        *)
            # set the argument back
            set -- "$@" "$arg"
            ;;
    esac

    shift
done

if [ -n "$DEDUP_BY_EMAIL" ] && [ -n "$SUMMARY_BY_LINE" ]; then
    >&2 echo "--dedup-by-email used with --line is not supported"
    exit 1
fi

if [ -n "$MERGES_ARG" ] && [ -n "$SUMMARY_BY_LINE" ]; then
    >&2 echo "--no-merges used with --line is not supported"
    exit 1
fi

commit="HEAD"
if [ -n "$SUMMARY_BY_LINE" ]; then
  paths=( "$@" )
else
  [ $# -ne 0 ] && commit=$*
fi
project=${PWD##*/}

#
# get date for the given <commit>
#
commit_date() {
  # the $1 can be empty
  # shellcheck disable=SC2086
  git log $MERGES_ARG --pretty='format: %ai' "$1" | cut -d ' ' -f 2
}

#
# get active days for the given <commit>
#
active_days() {
  commit_date "$1" | sort -r | uniq | awk '
    { sum += 1 }
    END { print sum }
  '
}

#
# get the commit total
#
commit_count() {
  # shellcheck disable=SC2086
  git log $MERGES_ARG --oneline "$commit" | wc -l | tr -d ' '
}

#
# total file count
#
file_count() {
  git ls-files | wc -l | tr -d ' '
}

#
# remove duplicate authors who belong to the same email address
#
dedup_by_email() {
    # in:
    # 27  luo zexuan <LuoZexuan@xxx.com>
    #  7  罗泽轩 <luozexuan@xxx.com>
    # out:
    # 34 luo zexuan
    LC_ALL=C awk '
    {
        sum += $1
        last_field = tolower($NF)
        if (last_field in emails) {
            emails[last_field] += $1
        } else {
            email = last_field
            emails[email] = $1
            # set commits/email to empty
            $1=$NF=""
            sub(/^[[:space:]]+/, "", $0)
            sub(/[[:space:]]+$/, "", $0)
            name = $0
            if (name in names) {
                # when the same name is associated with existed email,
                # merge the previous email into the later one.
                emails[email] += emails[names[name]]
                emails[names[name]] = 0
            }
            names[name] = email
        }
    }
    END {
        for (name in names) {
            email = names[name]
            printf "%6d\t%s\n", emails[email], name
        }
    }' | sort -rn -k 1
}

#
# list authors
#
format_authors() {
  # a rare unicode character is used as separator to avoid conflicting with
  # author name. However, Linux column utility will escape tab if separator
  # specified, so we do unesaping after it.
  LC_ALL=C awk '
  { args[NR] = $0; sum += $0 }
  END {
    for (i = 1; i <= NR; ++i) {
      printf "%s♪%2.1f%%\n", args[i], 100 * args[i] / sum
    }
  }
  ' | column -t -s♪ | sed "s/\\\x09/\t/g"
}

#
# fetch repository age from oldest commit
#
repository_age() {
  git log --reverse --pretty=oneline --format="%ar" | head -n 1 | LC_ALL=C sed 's/ago//'
}

#
# fetch repository age of the latest commit
#
last_active() {
  git log --pretty=oneline --format="%ar" -n 1
}

#
# list the last modified author for each line
#
single_file() {
  while read -r data
  do
    if [[ $(file "$data") = *text* ]]; then
      git blame --line-porcelain "$data" 2>/dev/null | grep "^author " | LC_ALL=C sed -n 's/^author //p';
    fi
  done
}

current_branch_name() {
  git rev-parse --abbrev-ref HEAD
}

#
# list the author for all file
#
lines() {
  git ls-files -- "$@" | single_file
}

#
# get the number of the lines
#
line_count() {
  lines "$@" | wc -l
}

uncommitted_changes_count() {
  git status --porcelain | wc -l
}


COLUMN_CMD_DELIMTER="¬" # Hopefully, this symbol is not used in branch names... I use it as a separator for columns
SP="$COLUMN_CMD_DELIMTER|"

print_summary_by_line() {
  if [ "$OUTPUT_STYLE" == "tabular" ]; then
    tabular_headers="# Repo $SP Lines"
    echo -e "$tabular_headers\n$project $SP $(line_count "${paths[@]}")" | column -t -s "$COLUMN_CMD_DELIMTER"
  elif [ "$OUTPUT_STYLE" == "oneline" ]; then
    echo "$project / lines: $(line_count "${paths[@]}")"
  elif [ -n "$SUMMARY_BY_LINE" ]; then
    echo
    echo " project     : $project"
    echo " lines       : $(line_count "${paths[@]}")"
    echo " authors     :"
    lines "${paths[@]}" | sort | uniq -c | sort -rn | format_authors
  fi
}

print_summary() {
  if [ "$OUTPUT_STYLE" == "tabular" ]; then
    tabular_headers="# Repo $SP Age $SP Last active $SP Active on $SP Commits $SP Uncommitted $SP Branch"
    echo -e "$tabular_headers\n$project $SP $(repository_age) $SP $(last_active) $SP $(active_days "$commit") days $SP $(commit_count "$commit") $SP $(uncommitted_changes_count) $SP $(current_branch_name)" | column -t -s "$COLUMN_CMD_DELIMTER"
  elif [ "$OUTPUT_STYLE" == "oneline" ]; then
    echo "$project / age: $(repository_age) / last active: $(last_active) / active on $(active_days "$commit") days / commits: $(commit_count "$commit") / uncommitted: $(uncommitted_changes_count) / branch: $(current_branch_name)"
  else
    echo
    echo " project     : $project"
    echo " repo age    : $(repository_age)"
    echo " branch:     : $(current_branch_name)"
    echo " last active : $(last_active)"
    echo " active on   : $(active_days "$commit") days"
    echo " commits     : $(commit_count "$commit")"

    # The file count doesn't support passing a git ref so ignore it if a ref is given
    if [ "$commit" == "HEAD" ]; then
      echo " files       : $(file_count)"
    fi
    echo " uncommitted : $(uncommitted_changes_count)"
    echo " authors     : "
    if [ -n "$DEDUP_BY_EMAIL" ]; then
      # the $commit can be empty
      # shellcheck disable=SC2086
      git shortlog $MERGES_ARG -n -s -e "$commit" | dedup_by_email | format_authors
    else
      # shellcheck disable=SC2086
      git shortlog $MERGES_ARG -n -s "$commit" | format_authors
    fi
  fi
}

if [ -n "$SUMMARY_BY_LINE" ]; then
  print_summary_by_line
else
  print_summary
fi
07070100000056000081ED0000000000000000000000016627A28D00000959000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-sync#!/usr/bin/env bash

function _usage()
{
  local command="git sync"
  cat << EOS
Usage:
  ${command} [<remote> <branch>]
  ${command} -h | --help
  ${command} -s | --soft
  ${command} -f | --force

Sync local branch with <remote>/<branch>.
When <remote> and <branch> are not specified on the command line, upstream of local branch will be used by default.
All changes and untracked files and directories will be removed unless you add -s(--soft).

Examples:
  Sync with upstream of local branch:
    ${command}

  Sync with origin/master:
    ${command} origin master

  Sync without cleaning untracked files:
    ${command} -s

  Sync without interaction:
    ${command} -f
EOS
}

function main()
{
  while [ "$1" != "" ]; do
    case $1 in
      -h | --help)
        _usage
        exit
        ;;
      -s | --soft)
        local soft="true"
        ;;
      -f | --force)
        local force="YES"
        ;;
      * )
        if [ "${remote}" = "" ]; then
          local remote="$1"
        elif [ "${branch}" = "" ]; then
          local branch="$1"
        else
          echo -e "Error: too many arguments.\n"
          _usage
          exit 1
        fi
        ;;
    esac
    shift
  done

  local remote_branch
  if [ -z "${remote}" ]; then
    if ! remote_branch="$(git rev-parse --abbrev-ref --symbolic-full-name '@{u}' 2>/dev/null)"; then
      echo "There is no upstream information of local branch."
      exit 1
    fi
    local branch="$(git rev-parse --abbrev-ref --symbolic-full-name @)"
    local remote=$(git config "branch.${branch}.remote")
  elif [ -z "${branch}" ]; then
    echo -e "Error: too few arguments.\n"
    _usage
    exit 1
  else
    remote_branch="${remote}/${branch}"
  fi

  if [ "${force}" != "YES" ]; then
    if [ "${soft}" = "true" ]; then
      echo -n "Are you sure you want to sync with '${remote_branch}'? [y/N]: "
    else
      echo -n "Are you sure you want to clean all changes & sync with '${remote_branch}'? [y/N]: "
    fi
    local force
    read -r force
  fi
  case "${force}" in
    "Y" | "y" | "yes" | "Yes" | "YES" )
      if [ "${soft}" = "true" ]; then
        git fetch "${remote}" "${branch}" && git reset --hard "${remote_branch}"
      else
        git fetch "${remote}" "${branch}" && git reset --hard "${remote_branch}" && git clean -d -f -x
      fi
      ;;
    * )
      echo "Canceled."
      ;;
  esac
}

main "$@"

07070100000057000081ED0000000000000000000000016627A28D000000C8000000000000000000000000000000000000001F00000000git-extras-7.2.0/bin/git-touch#!/usr/bin/env bash

USAGE(){
  echo "git touch <filename> [ <filename> . . .]" 1>&2
  exit 1
}

test $# -lt 1 && USAGE

for filename in "$@"; do
  touch "$filename" \
    && git add "$filename"
done
07070100000058000081ED0000000000000000000000016627A28D00000521000000000000000000000000000000000000001E00000000git-extras-7.2.0/bin/git-undo#!/usr/bin/env bash

cstr="commits"
ccnt=$(git rev-list --count HEAD)
if [ "$ccnt" -eq 1 ]; then cstr="commit"; fi
parm3=""

function _undo()
{
  type=${1:-soft}
  undo_cnt=${2:-1}
  reset=${3:-""}

  if [ "$undo_cnt" -gt "$ccnt" ]; then
    echo "Only $ccnt $cstr, cannot undo $undo_cnt"
  elif [ "$type" = "hard" ] && [ "$ccnt" -eq "$undo_cnt" ]; then
    echo "Cannot hard undo all commits"
  elif [ "$type" = "soft" ] && [ "$ccnt" -eq 1 ]; then
    git update-ref -d HEAD
  else
    git reset "--$type" "HEAD~$undo_cnt"
  fi
  if [ "$reset" != "" ]; then git reset; fi
}

case "$1" in
  -h)
    cat << EOL
This will erase any changes since your last commit.
If you want to get help info, run "git undo --help" instead.
Do you want to continue? [yN]"
EOL
    read -r res
    case "${res}" in
      "Y" | "y")
        parm1=hard
        parm2=${2:-1}
        ;;
      * )
        exit 0
        ;;
    esac
    ;;
  --hard)
    parm1=hard
    parm2=${2:-1}
    ;;
  -s|--soft)
    parm1=soft
    parm2=${2:-1}
    parm3=reset
    ;;
  "")
    parm1=soft
    parm2=1
    ;;
  *[!0-9]*)
    echo "Invalid parameter: $1"
    exit 1
    ;;
  *)
    parm1=soft
    parm2="$1"
    ;;
esac

if [[ ! $parm2 =~ ^[1-9][0-9]*$ ]]; then
    echo "Invalid undo count: $parm2"
    exit 1
fi

_undo "$parm1" "$parm2" "$parm3"
07070100000059000081ED0000000000000000000000016627A28D00000093000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-unlock#!/usr/bin/env bash

filename="$1"
test -z "$filename" && echo "filename required." 1>&2 && exit 1
git update-index --no-skip-worktree "$filename"
0707010000005A000081ED0000000000000000000000016627A28D00000B45000000000000000000000000000000000000002000000000git-extras-7.2.0/bin/git-utimes#!/usr/bin/env bash
#
# Change files modification time to their last commit date
#

# Bash unofficial strict mode
set -euo pipefail
IFS=$'\n\t'

if [[ "${1:-}" == "--newer" ]]; then
  op=le
  shift
else
  op=eq
fi

# BSD systems
if date -j &>/dev/null; then
  stat_flags="-f %m"
  date_flags="-r"
else
  # Non-BSD systems
  stat_flags="-c %Y"
  date_flags="-d@"
fi

bash_opts=()
if bash --help 2>&1 | grep -q -- '--noprofile'; then
  bash_opts+=(--noprofile)
fi
if bash --help 2>&1 | grep -q -- '--norc'; then
  bash_opts+=(--norc)
fi

status_opts=(--porcelain --short)
# %ct: committer date, UNIX timestamp / %at: author date, UNIX timestamp
whatchanged_opts=(--format='%ct')
if git status --help 2>&1 | grep -q -- "--no-renames"; then
  status_opts+=(--no-renames)
  whatchanged_opts+=(--no-renames)
fi
if git status --help 2>&1 | grep -q -- "--untracked-files"; then
  status_opts+=(--untracked-files=no)
fi
if git status --help 2>&1 | grep -q -- "--ignored"; then
  status_opts+=(--ignored=no)
fi

prefix="$(git rev-parse --show-prefix) "
strip="${#prefix}"

tmpfile=$(mktemp)
# shellcheck disable=SC2064
trap "rm -f '${tmpfile}'" 0

awk_flags=(
  -F'\t'
  -v date_flags="${date_flags}"
  -v op="${op}"
  -v stat_flags="${stat_flags}"
  -v strip="${strip}"
  -v tmpfile="${tmpfile}"
)

# sanity check, not required:
if awk --help 2>&1 | grep -q -- '--posix'; then
  awk_flags+=(--posix)
fi

read -r -d '' awk_script <<"EOF" || true
BEGIN {
  seen[""]=1
  print "#!/usr/bin/env bash"
  print "set +e"
  print "t() {"
  print " test -e \"$2\" || return 0"
  printf(" test \"$(stat %s \"$2\" 2>/dev/null)\" -%s \"$1\" && return 0\n", stat_flags, op)
  if (date_flags == "-d@") {
    print " echo \"+ touch -h -d@$1 $2\""
    print " touch -h -d@$1 \"$2\""
  } else {
    print " t=$(date -r$1 \"+%Y%m%d%H%M.%S\")"
    print " echo \"+ touch -h -t $t $2\""
    print " touch -h -t $t \"$2\""
  }
  print "}"
}
FILENAME==tmpfile {
  skip[$1]=1
  next
}
# skip blank lines
!/^$/ {
  # skip deletes
  if (substr($1, length($1), 1) ~ /D/) {
    next
  }
  if (NF == 1) {
    ct=$1
    next
  }
  $2 = substr($2, strip, length($2)- strip + 1)
  if ($2 in seen) {
    next
  }
  if ($2 in skip) {
    next
  }
  seen[$2]=1
  # remove enclosing double quotes that git adds:
  if (substr($2, 1, 1) == "\"" && substr($2, length($2), 1) == "\"") {
    $2 = substr($2, 2, length($2) - 2)
    # unescape remaining double quotes
    gsub(/\\"/, "\"", $2)
    # unescape escaped backslashes
    gsub(/\\\\/, "\\", $2)
  }
  # escape apostrophes: ' => '\''
  gsub(/'/, "'\\''", $2)
  printf("t %s '%s'\n", ct, $2)
}
EOF

# prefix is stripped:
git --no-pager status "${status_opts[@]}" . \
  | cut -c 4- >"${tmpfile}"

# prefix is not stripped:
git --no-pager whatchanged "${whatchanged_opts[@]}" . \
  | awk "${awk_flags[@]}" "${awk_script}" "${tmpfile}" - \
  | BASH_ENV='' bash "${bash_opts[@]}" -
0707010000005B000081A40000000000000000000000016627A28D000002C8000000000000000000000000000000000000002400000000git-extras-7.2.0/brew-release.patchdiff --git a/bin/git-extras b/bin/git-extras
index e49cd24..4ae28b5 100755
--- a/bin/git-extras
+++ b/bin/git-extras
@@ -4,13 +4,12 @@ VERSION="4.3.0"
 INSTALL_SCRIPT="https://raw.githubusercontent.com/tj/git-extras/main/install.sh"

 update() {
-  local bin="$(command -v git-extras)"
-  local prefix=${bin%/*/*}
-  local orig=$PWD
-
-  curl -s $INSTALL_SCRIPT | PREFIX="$prefix" bash /dev/stdin \
-    && cd "$orig" \
-    && echo "... updated git-extras $VERSION -> $(git extras --version)"
+  echo "This git-extras installation is managed by Homebrew."
+  echo "If you'd like to update git-extras, run the following:"
+  echo
+  echo "  brew upgrade git-extras"
+  echo
+  return 1
 }

 updateForWindows() {
0707010000005C000081ED0000000000000000000000016627A28D000000CE000000000000000000000000000000000000002700000000git-extras-7.2.0/check_dependencies.sh#!/usr/bin/env bash

err() {
    echo >&2 "$1"
    exit 1
}

if ! command -v column >/dev/null 2>&1; then
    err "Need to install dependency 'column' before installation (can be found in bsdmainutils)"
fi
0707010000005D000081ED0000000000000000000000016627A28D0000090F000000000000000000000000000000000000002400000000git-extras-7.2.0/check_integrity.sh#!/usr/bin/env bash

err() {
    echo >&2 "$1"
    exit 1
}

make_doc() {
    echo "'touch man/git-$1.md && make man/git-$1.{1,html}'"
}

check_bash_script() {
    local cmd="git-$1"

    test -f "bin/$cmd" \
        || err "bin/$cmd does not exist"

    test -x "bin/$cmd" \
        || err "Run 'chmod +x bin/$cmd' to make it executable"

    shebang=$(head -n1 "bin/$cmd")
    [[ "$shebang" =~ \#![[:space:]]*/usr/bin/env[[:space:]]+bash ]] \
        || err "Start git-$1 with '#!/usr/bin/env bash'"
}

check_git_extras_cmd_list() {
    local whitelist=('extras')
    for cmd in "${whitelist[@]}"; do
        test "$1" == "$cmd" && return
    done

    grep "\- \*\*git\-$1(1)\*\*" man/git-extras.md >/dev/null \
        || err "Add git-$1 in the list of commands in man/git-extras.md via $(make_doc "$1")"
}

check_man_page_index() {
    grep "git\-$1(1) git\-$1" man/index.txt >/dev/null \
        || err "Add git-$1 to index.txt via $(make_doc "$1")"
}

check_documentation() {
    local cmd="git-$1"
    test -f "man/$cmd.md" || err "man/$cmd.md is required for bin/$cmd"

    if [ ! -f "man/$cmd.1" ] || [ ! -f "man/$cmd.html" ]
    then
        err "Create man/$cmd.1 and man/$cmd.html via $(make_doc "$1")"
    fi

    check_git_extras_cmd_list "$@"
    check_man_page_index "$@"
}

check_Commands_page() {
    # These are special cases. All listed together, so we ignore them
    local whitelist=('bug' 'chore' 'feature' 'refactor')
    for cmd in "${whitelist[@]}"; do
        test "$1" == "$cmd" && return
    done

    grep "\- \[\`git $1\`\](#git-$1)" Commands.md >/dev/null \
        || err "Add git-$1 in the list of commands in Commands.md"

    grep "^## git $1" Commands.md >/dev/null \
        || err "Add description of git-$1 in Commands.md"
}

check_completion() {
    grep "$1:" etc/git-extras-completion.zsh > /dev/null || \
        err "Add git-$1 to the completion list at the end of etc/git-extras-completion.zsh"
}

check() {
    check_bash_script "$1"
    check_documentation "$1"
    check_Commands_page "$1"
    check_completion "$1"
}

usage() {
    echo >&2 "Usage: ./check_integrity.sh <command-name> [<command-name2> ...]"
    exit 0
}

test $# == 0 && usage

for name in "$@"; do
    name=${name#git-}
    [[ "$name" == "rscp" ]] && continue
    check "$name"
done

echo 'All done'
0707010000005E000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000001500000000git-extras-7.2.0/etc0707010000005F000081A40000000000000000000000016627A28D00000D87000000000000000000000000000000000000002800000000git-extras-7.2.0/etc/bash_completion.sh# shellcheck shell=bash
# bash completion support for git-extras.

_git_changelog(){
  local s_opts=( '-a' '-l' '-t' '-f' '-s' '-n' '-p' '-x' '-h' '?' )
  local l_opts=(
    '--all'
    '--list'
    '--tag'
    '--final-tag'
    '--start-tag'
    '--start-commit'
    '--no-merges'
    '--prune-old'
    '--stdout'
    '--help'
  )
  local merged_opts_str=""
  merged_opts_str+="$(printf "%s " "${s_opts[@]}")"
  merged_opts_str+="$(printf "%s " "${l_opts[@]}")"

  __gitcomp "$merged_opts_str"
}

_git_authors(){
  __gitcomp "-l --list --no-email"
}

_git_brv(){
  __gitcomp "-r --reverse"
}

_git_coauthor(){
  local oldIfs=$IFS
  IFS=$'\n'
  local cur="${COMP_WORDS[COMP_CWORD]}"
  local selection=
  if ((COMP_CWORD == 2)); then
    for line in $(git authors --list); do
      selection+="${line% *}"$'\n'
    done
  elif ((COMP_CWORD == 3)); then
    local chosen_name="${COMP_WORDS[COMP_CWORD-1]}"
    for line in $(git authors --list); do
      if [ "$chosen_name" = "${line% *}" ]; then
        local email=${line#*<}
        email=${email%>*}
        selection+="$email"$'\n'
      fi
    done
  fi
  compopt +o default
  compopt -o filenames
  COMPREPLY=($(compgen -W "$selection" -- "$cur"))
  IFS=$oldIfs
}

_git_contrib(){
# git completion function modified from
# https://github.com/markgandolfo/git-bash-completion/blob/master/git-completion.bash
  contributors="$(git shortlog -s | cut -f2)"
  local all c s=$'\n' IFS=$'\n'
  local cur="${COMP_WORDS[COMP_CWORD]}"
  for c in $contributors; do
    all="$all$c $s"
  done
  COMPREPLY=($(compgen -W "$all" -- "$cur"))
}

_git_count(){
  __gitcomp "--all"
}

__git_cp(){
  __git_complete_file
}

_git_delete_branch(){
  __gitcomp "$(__git_heads)"
}

_git_delete_squashed_branches(){
  __gitcomp "$(__git_heads)"
}

_git_delete_submodule(){
  __gitcomp "$(git submodule status | awk '{print $2}')"
}

_git_delete_tag(){
  __gitcomp "$(__git_tags)"
}

_git_effort(){
  __git_has_doubledash && return

  case "$cur" in
  --*)
    # shellcheck disable=SC2154
    __gitcomp "
      --above
      $__git_log_common_options
      $__git_log_shortlog_options
      "
    return
    ;;
  esac
}

_git_extras(){
  __gitcomp "--version update"
}

__git_extras_workflow(){
  __gitcomp "$(__git_heads | grep -- "^$1/" | sed s/^"$1"\\///g) finish"
}

_git_feature(){
  __git_extras_workflow "feature"
}

_git_graft(){
  __gitcomp "$(__git_heads)"
}

_git_ignore(){
  case "$cur" in
  --*)
    __gitcomp "--global --local --private"
    return
    ;;
  -*)
    __gitcomp "--global --local --private -g -l -p"
    return
    ;;
  esac
}

_git_missing(){
    # Suggest all known refs
    __gitcomp "$(git for-each-ref --format='%(refname:short)')"
}

_git_psykorebase(){
  __gitcomp "$(__git_heads) --continue --no-ff"
}

_git_reauthor(){
  local prev="${COMP_WORDS[COMP_CWORD-1]}"
  local comp

  if [[ "${prev}" == '--type' ]] || [[ "${prev}" == '-t' ]]; then
    comp='author committer full'
  else
    comp='--all --correct-email --correct-name --old-email --type --use-config'
  fi

   __gitcomp "${comp}"
}

_git_scp(){
  __git_complete_remote_or_refspec
}

_git_stamp(){
  __gitcomp '--replace -r'
}

_git_rscp(){
  __git_complete_remote_or_refspec
}

_git_squash(){
  __gitcomp "$(__git_heads)"
}

_git_undo(){
   __gitcomp "--hard --soft -h -s"
}

_git_info(){
  __gitcomp "--color -c --no-config"
}

_git_browse(){
  __git_complete_remote_or_refspec
}

_git_browse_ci(){
  __git_complete_remote_or_refspec
}
07070100000060000081A40000000000000000000000016627A28D00003625000000000000000000000000000000000000002F00000000git-extras-7.2.0/etc/git-extras-completion.zsh# ------------------------------------------------------------------------------
# Description
# -----------
#
#  Completion script for git-extras (https://github.com/tj/git-extras).
#
#  This depends on and reuses some of the internals of the _git completion
#  function that ships with zsh itself. It will not work with the _git that ships
#  with git.
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
#  * Alexis GRIMALDI (https://github.com/agrimaldi)
#  * spacewander (https://github.com/spacewander)
#
# ------------------------------------------------------------------------------
# Inspirations
# -----------
#
#  * git-extras (https://github.com/tj/git-extras)
#  * git-flow-completion (https://github.com/bobthecow/git-flow-completion)
#
# ------------------------------------------------------------------------------


# Internal functions
# These are a lot like their __git_* equivalents inside _git

__gitex_command_successful () {
  if (( ${#*:#0} > 0 )); then
    _message 'not a git repository'
    return 1
  fi
  return 0
}

__gitex_commits() {
    declare -A commits
    git log --oneline -15 | sed 's/\([[:alnum:]]\{7\}\) /\1:/' | while read commit
    do
        hash=$(echo $commit | cut -d':' -f1)
        commits[$hash]="$commit"
    done
    local ret=1
    _describe -t commits commit commits && ret=0
}

__gitex_remote_names() {
    local expl
    declare -a remote_names
    remote_names=(${(f)"$(_call_program remotes git remote 2>/dev/null)"})
    __gitex_command_successful || return
    _wanted remote-names expl remote-name compadd $* - $remote_names
}

__gitex_tag_names() {
    local expl
    declare -a tag_names
    tag_names=(${${(f)"$(_call_program tags git for-each-ref --format='"%(refname)"' refs/tags 2>/dev/null)"}#refs/tags/})
    __gitex_command_successful || return
    _wanted tag-names expl tag-name compadd $* - $tag_names
}


__gitex_branch_names() {
    local expl
    declare -a branch_names
    branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads 2>/dev/null)"}#refs/heads/})
    __gitex_command_successful || return
    _wanted branch-names expl branch-name compadd $* - $branch_names
}

__gitex_specific_branch_names() {
    local expl
    declare -a branch_names
    branch_names=(${${(f)"$(_call_program branchrefs git for-each-ref --format='"%(refname)"' refs/heads/"$1" 2>/dev/null)"}#refs/heads/$1/})
    __gitex_command_successful || return
    _wanted branch-names expl branch-name compadd - $branch_names
}

__gitex_feature_branch_names() {
    __gitex_specific_branch_names 'feature'
}

__gitex_submodule_names() {
    local expl
    declare -a submodule_names
    submodule_names=(${(f)"$(_call_program branchrefs git submodule status | awk '{print $2}')"})  # '
    __gitex_command_successful || return
    _wanted submodule-names expl submodule-name compadd $* - $submodule_names
}


__gitex_author_names() {
    local expl
    declare -a author_names
    author_names=(${(f)"$(_call_program branchrefs git log --format='%aN' | sort -u)"})
    __gitex_command_successful || return
    _wanted author-names expl author-name compadd $* - $author_names
}

__gitex_author_emails() {
    local expl
    declare -a author_names
    author_names=(${(f)"$(_call_program branchrefs git log --format='%aE' | sort -u)"})
    __gitex_command_successful || return
    _wanted author-names expl author-name compadd $* - $author_names
}

# subcommands
# new subcommand should be added in alphabetical order
_git-authors() {
    _arguments  -C \
        '(--list -l)'{--list,-l}'[show authors]' \
        '--no-email[without email]' \
}

_git-brv() {
    _arguments \
        '(-r --reverse)'{-r,--reverse}'[reverse order]'
}

_git-changelog() {
    _arguments \
        '(-l --list)'{-l,--list}'[list commits]' \
}

_git-clear() {
    _arguments \
        '(-f --force)'{-f,--force}'[force clear]' \
        '(-h --help)'{-h,--help}'[help message]' \
}

_git-coauthor() {
    _arguments \
        ':co-author[co-author to add]:__gitex_author_names' \
        ':co-author-email[email address of co-author to add]:__gitex_author_emails'
}

_git-contrib() {
    _arguments \
        ':author:__gitex_author_names'
}


_git-count() {
    _arguments \
        '--all[detailed commit count]'
}

_git-create-branch() {
    local curcontext=$curcontext state line
    _arguments -C \
        ': :->command' \
        '*:: :->option-or-argument'

    case "$state" in
        (command)
            _arguments \
                '(--remote -r)'{--remote,-r}'[setup remote tracking branch]'
            ;;
        (option-or-argument)
            curcontext=${curcontext%:*}-$line[1]:
            case $line[1] in
                -r|--remote )
                    _arguments -C \
                        ':remote-name:__gitex_remote_names'
                    ;;
            esac
    esac
}

_git-delete-branch() {
    _arguments \
        ':branch-name:__gitex_branch_names'
}

_git-delete-squashed-branches() {
    _arguments \
        ':branch-name:__gitex_branch_names'
}


_git-delete-submodule() {
    _arguments \
        ':submodule-name:__gitex_submodule_names'
}


_git-delete-tag() {
    _arguments \
        ':tag-name:__gitex_tag_names'
}


_git-effort() {
    _arguments \
        '--above[ignore file with less than x commits]'
}


_git-extras() {
    local curcontext=$curcontext state line ret=1
    declare -A opt_args

    _arguments -C \
        ': :->command' \
        '*:: :->option-or-argument' && ret=0

    case $state in
        (command)
            declare -a commands
            commands=(
                'update:update git-extras'
            )
            _describe -t commands command commands && ret=0
            ;;
    esac

    _arguments \
        '(-v --version)'{-v,--version}'[show current version]'
}


_git-feature() {
    local curcontext=$curcontext state line ret=1
    declare -A opt_args

    _arguments -C \
        ': :->command' \
        '*:: :->option-or-argument' && ret=0

    case $state in
        (command)
            declare -a commands
            commands=(
                'finish:merge feature into the current branch'
            )
            _describe -t commands command commands && ret=0
            ;;
        (option-or-argument)
            curcontext=${curcontext%:*}-$line[1]:
            case $line[1] in
                (finish)
                    _arguments -C \
                        '--squash[Use squash merge]' \
                        ':branch-name:__gitex_feature_branch_names'
                    ;;
                -r|--remote )
                    _arguments -C \
                        ':remote-name:__gitex_remote_names'
                    ;;
            esac
            return 0
    esac

    _arguments \
        '(--remote -r)'{--remote,-r}'[setup remote tracking branch]'
}

_git-graft() {
    _arguments \
        ':src-branch-name:__gitex_branch_names' \
        ':dest-branch-name:__gitex_branch_names'
}

_git-guilt() {
    _arguments -C \
        '(--email -e)'{--email,-e}'[display author emails instead of names]' \
        '(--ignore-whitespace -w)'{--ignore-whitespace,-w}'[ignore whitespace only changes]' \
        '(--debug -d)'{--debug,-d}'[output debug information]' \
        '-h[output usage information]'
}

_git-ignore() {
    _arguments -C \
        '(--local -l)'{--local,-l}'[show local gitignore]' \
        '(--global -g)'{--global,-g}'[show global gitignore]' \
        '(--private -p)'{--private,-p}'[show repo gitignore]' \
        '*:filename:_files'
}


_git-info() {
    _arguments -C \
        '(--color -c)'{--color,-c}'[use color for information titles]' \
        '--no-config[do not show list all variables set in config file, along with their values]'
}


_git-merge-into() {
    _arguments '--ff-only[merge only fast-forward]'
    _arguments \
        ':src:__gitex_branch_names' \
        ':dest:__gitex_branch_names'
}

_git-missing() {
    _arguments \
        ':first-branch-name:__gitex_branch_names' \
        ':second-branch-name:__gitex_branch_names'
}

_git-release() {
    _arguments -C \
        '-c[Generates/populates the changelog with all commit message since the last tag.]' \
        '-r[The "remote" repository that is destination of a push operation.]' \
        '-m[use the custom commit information instead of the default message.]' \
        '-s[Create a signed and annotated tag.]' \
        '-u[Create a tag, annotated and signed with the given key.]' \
        '--semver[If the latest tag in your repo matches the semver format requirement, you could increase part of it as the new release tag.]' \
        '--prefix[Add a prefix string to semver to allow more complex tags.]' \
        '--no-empty-commit[Avoid creating empty commit if nothing could be committed.]' \
        '--[The arguments listed after "--" separator will be passed to pre/post-release hook.]'
}

_git-squash() {
    _arguments '--squash-msg[commit with the squashed commit messages]'
    _arguments \
        ':branch-name:__gitex_branch_names'
}

_git-stamp() {
    _arguments -C \
         '(--replace -r)'{--replace,-r}'[replace stamps with same id]'
}

_git-standup() {
    _arguments -C \
        '-a[Specify the author of commits. Use "all" to specify all authors.]' \
        '-d[Show history since N days ago]' \
        '-D[Specify the date format displayed in commit history]' \
        '-f[Fetch commits before showing history]' \
        '-g[Display GPG signed info]' \
        '-h[Display help message]' \
        '-L[Enable the inclusion of symbolic links]' \
        '-m[The depth of recursive directory search]' \
        '-B[Display the commits in branch groups]'
}

_git-summary() {
    _arguments '--line[summarize with lines rather than commits]'
    _arguments '--dedup-by-email[remove duplicate users by the email address]'
    _arguments '--no-merges[exclude merge commits]'
    __gitex_commits
}

_git-undo(){
    _arguments -C \
        '(--soft -s)'{--soft,-s}'[only rolls back the commit but changes remain un-staged]' \
        '(--hard -h)'{--hard,-h}'[wipes your commit(s)]'
}

zstyle -g existing_user_commands ':completion:*:*:git:*' user-commands

zstyle ':completion:*:*:git:*' user-commands $existing_user_commands \
    alias:'define, search and show aliases' \
    abort:'abort current revert, merge, rebase, or cherry-pick process' \
    archive-file:'export the current head of the git repository to an archive' \
    authors:'generate authors report' \
    browse:'open repo website in browser' \
    browse-ci:'open repo CI page in browser' \
    bug:'create bug branch' \
    bulk:'run bulk commands' \
    brv:'list branches sorted by their last commit date'\
    changelog:'generate a changelog report' \
    chore:'create chore branch' \
    clear-soft:'soft clean up a repository' \
    clear:'rigorously clean up a repository' \
    coauthor:'add a co-author to the last commit' \
    commits-since:'show commit logs since some date' \
    contrib:'show user contributions' \
    count:'show commit count' \
    create-branch:'create branches' \
    delete-branch:'delete branches' \
    delete-merged-branches:'delete merged branches' \
    delete-squashed-branches:'delete squashed branches' \
    delete-submodule:'delete submodules' \
    delete-tag:'delete tags' \
    delta:'lists changed files' \
    effort:'show effort statistics on file(s)' \
    extras:'awesome git utilities' \
    feature:'create/merge feature branch' \
    force-clone:'overwrite local repositories with clone' \
    fork:'fork a repo on GitHub' \
    fresh-branch:'create fresh branches' \
    get:'clone a repository in a directory' \
    gh-pages:'create the GitHub pages branch' \
    graft:'merge and destroy a given branch' \
    guilt:'calculate change between two revisions' \
    ignore-io:'get sample gitignore file' \
    ignore:'add .gitignore patterns' \
    info:'returns information on current repository' \
    local-commits:'list local commits' \
    lock:'lock a file excluded from version control' \
    locked:'ls files that have been locked' \
    magic:'commits everything with a generated message' \
    merge-into:'merge one branch into another' \
    merge-repo:'merge two repo histories' \
    missing:'show commits missing from another branch' \
    mr:'checks out a merge request locally' \
    obliterate:'rewrite past commits to remove some files' \
    paste:'send patches to pastebin sites' \
    pr:'checks out a pull request locally' \
    psykorebase:'rebase a branch with a merge commit' \
    pull-request:'create pull request to GitHub project' \
    reauthor:'replace the author and/or committer identities in commits and tags' \
    rebase-patch:'rebases a patch' \
    refactor:'create refactor branch' \
    release:'commit, tag and push changes to the repository' \
    rename-branch:'rename a branch' \
    rename-tag:'rename a tag' \
    rename-remote:'rename a remote' \
    repl:'git read-eval-print-loop' \
    reset-file:'reset one file' \
    root:'show path of root' \
    scp:'copy files to ssh compatible `git-remote`' \
    sed:'replace patterns in git-controlled files' \
    setup:'set up a git repository' \
    show-merged-branches:'show merged branches' \
    show-tree:'show branch tree of commit history' \
    show-unmerged-branches:'show unmerged branches' \
    squash:'import changes from a branch' \
    stamp:'stamp the last commit message' \
    standup:'recall the commit history' \
    summary:'show repository summary' \
    sync:'sync local branch with remote branch' \
    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'
07070100000061000081A40000000000000000000000016627A28D00003B2E000000000000000000000000000000000000002500000000git-extras-7.2.0/etc/git-extras.fish
set __fish_git_extras_commands \
    "alias:Define, search and show aliases" \
    "archive-file:Export the current HEAD of the git repository to an archive" \
    "authors:Generate authors report" \
    "browse:View the web page for the current repository" \
    "browse-ci:View the CI page for the current repository" \
    "brv:List branches sorted by their last commit date" \
    "bulk:Run git commands on multiple repositories" \
    "changelog:Generate a changelog report" \
    "clear-soft:Soft clean up a repository" \
    "clear:Rigorously clean up a repository" \
    "coauthor:Add a co-author to the last commit" \
    "commits-since:Show commit logs since some date" \
    "contrib:Show user's contributions" \
    "count:Show commit count" \
    "cp:Copy a file keeping its history" \
    "create-branch:Create branches" \
    "delete-branch:Delete branches" \
    "delete-merged-branches:Delete merged branches" \
    "delete-squashed-branches:Delete squashed branches" \
    "delete-submodule:Delete submodules" \
    "delete-tag:Delete tags" \
    "delta:Lists changed files" \
    "effort:Show effort statistics on file(s)" \
    "feature:Create/Merge feature branch" \
    "force-clone:overwrite local repositories with clone" \
    "fork:Fork a repo on github" \
    "fresh-branch:Create fresh branches" \
    "get:Clone a repository in a directory" \
    "gh-pages:Create the GitHub Pages branch" \
    "graft:Merge and destroy a given branch" \
    "guilt:calculate change between two revisions" \
    "ignore-io:Get sample gitignore file" \
    "ignore:Add .gitignore patterns" \
    "info:Returns information on current repository" \
    "local-commits:List local commits" \
    "lock:Lock a file excluded from version control" \
    "locked:ls files that have been locked" \
    "merge-into:Merge one branch into another" \
    "merge-repo:Merge two repo histories" \
    "missing:Show commits missing from another branch" \
    "mr:Checks out a merge request locally" \
    "obliterate:rewrite past commits to remove some files" \
    "paste:Send patches to pastebin for chat conversations" \
    "pr:Checks out a pull request locally" \
    "psykorebase:Rebase a branch with a merge commit" \
    "pull-request:Create pull request for GitHub project" \
    "reauthor:Rewrite history to change author's identity" \
    "rebase-patch:Rebases a patch" \
    "release:Commit, tag and push changes to the repository" \
    "rename-branch:rename local branch and push to remote" \
    "rename-remote:Rename a remote" \
    "rename-tag:Rename a tag" \
    "repl:git read-eval-print-loop" \
    "reset-file:Reset one file" \
    "root:show path of root" \
    "scp:Copy files to SSH compatible git-remote" \
    "sed:replace patterns in git-controlled files" \
    "setup:Set up a git repository" \
    "show-merged-branches:Show merged branches" \
    "show-tree:show branch tree of commit history" \
    "show-unmerged-branches:Show unmerged branches" \
    "squash:Import changes from a branch" \
    "stamp:Stamp the last commit message" \
    "standup:Recall the commit history" \
    "summary:Show repository summary" \
    "sync:Sync local branch with remote branch" \
    "touch:Touch and add file to the index" \
    "undo:Remove latest commits" \
    "unlock:Unlock a file excluded from version control"

# completion for git-extras itself
complete -c git -f -n __fish_git_needs_command -a extras -d 'GIT utilities: repo summary, repl, changelog population, and more'
complete -c git -f -n '__fish_git_using_command extras' -s h -l help -d 'Show the help message, can be used for any git-extras commands'
complete -c git -f -n '__fish_git_using_command extras' -s v -l version -d 'Show git-extras version number'
complete -c git -f -n '__fish_git_using_command extras; and not contains -- update (commandline -opc)' -a update -d 'Self update'

# completion for git-extras provided commands
set __fish_git_extras_commands (printf -- '%s\n' $__fish_git_extras_commands | sed 's/:/\textras:/' | string collect | string escape)
complete -c git -n __fish_git_needs_command -a "$__fish_git_extras_commands"
# authors
complete -c git -f -n '__fish_git_using_command authors' -s l -l list -d 'show authors'
complete -c git -f -n '__fish_git_using_command authors' -l no-email -d 'without email'
# brv
complete -c git -f -n '__fish_git_using_command brv' -s r -l reverse -d 'reverse the sort order'
# bulk
complete -c git -n '__fish_git_using_command bulk' -s a -d 'Run a git command on all workspaces and their repositories'
complete -c git -n '__fish_git_using_command bulk' -s g -d 'Ask the user for confirmation on every execution'
complete -c git -x -n '__fish_git_using_command bulk' -s w -d 'Run on specified workspace'
complete -c git -x -n '__fish_git_using_command bulk' -l addworkspace -d 'Register a workspace for builk operations'
complete -c git -x -n '__fish_git_using_command bulk; and contains addworkspace (commandline -opc)' -l addworkspace -d 'the URL or file with URLs to be added'
complete -c git -x -n '__fish_git_using_command bulk' -l removeworkspace -d 'Remove the workspace with the logical name <ws-name >'
complete -c git -x -n '__fish_git_using_command bulk' -l addcurrent -d 'Add the current directory as a workspace'
complete -c git -x -n '__fish_git_using_command bulk' -l purge -d 'Removes all defined repository locations'
complete -c git -x -n '__fish_git_using_command bulk' -l listall -d 'List all registered repositories'
# changelog
complete -c git -f -n '__fish_git_using_command changelog' -s a -l all -d 'Retrieve all commits'
complete -c git -f -n '__fish_git_using_command changelog' -s l -l list -d 'Show commits in list format (without titles, dates)'
complete -c git -f -n '__fish_git_using_command changelog' -s t -l tag -d 'Specify a tag label to use for most-recent (untagged) commits'
complete -c git -f -n '__fish_git_using_command changelog' -s f -l final-tag -d 'When specifying a range, the newest tag at which point commit retrieval will end'
complete -c git -f -n '__fish_git_using_command changelog' -s s -l start-tag -d 'When specifying a range, the oldest tag to retrieve commits from'
complete -c git -f -n '__fish_git_using_command changelog' -l start-commit -d 'Like the --start-tag but specify the oldest commit instead of tag'
complete -c git -f -n '__fish_git_using_command changelog' -s n -l no-merges -d 'Filters out merge commits (commits with more than 1 parent) from generated changelog'
complete -c git -f -n '__fish_git_using_command changelog' -s m -l merges-only -d 'Uses only merge commits (commits with more than 1 parent) for generated changelog'
complete -c git -f -n '__fish_git_using_command changelog' -s p -l prune-old -d 'Replace existing changelog entirely with newly generated content'
complete -c git -f -n '__fish_git_using_command changelog' -s x -l stdout -d 'Write output to stdout instead of to a new changelog file'
# coauthor
function __fish_git_arg_number -a number
    set -l cmd (commandline -opc)
    test (count $cmd) -eq $number
end
function __fish_git_extra_coauthor_name
    for line in (git authors --list)
        printf '%s\n' $line | string replace --regex ' <.*' ''
    end
end
function __fish_git_extra_coauthor_email
    set -l cmd (commandline -opc)
    # name provided in the previous positional argument
    set -l name $cmd[3]

    for line in (git authors --list)
        set -l loop_name (printf '%s\n' $line | string replace --regex ' <.*' '')

        if test "$name" = "$loop_name"
            printf '%s\n' $line | string replace --regex '.*?<' '' | string replace --regex '>.*?' ''
        end
    end
end
complete -c git -f -n '__fish_git_using_command coauthor; and __fish_git_arg_number 2' -a '(__fish_git_extra_coauthor_name)'
complete -c git -f -n '__fish_git_using_command coauthor; and __fish_git_arg_number 3' -a '(__fish_git_extra_coauthor_email)'
# count
complete -c git -f -n '__fish_git_using_command count' -l all -d 'detailed commit count'
# create-branch
complete -c git -x -n '__fish_git_using_command create-branch' -s r -l remote -a '(__fish_git_unique_remote_branches)' -d 'setup remote tracking branch'
# delete-branch
complete -c git -x -n '__fish_git_using_command delete-branch' -a '(__fish_git_branches)' -d 'branch to delete'
# delete-squashed-branches
complete -c git -x -n '__fish_git_using_command delete-squashed-branches' -a '(__fish_git_branches)' -d 'branch to target for squashed merges'
# delete-submodule
complete -c git -x -n "__fish_git_using_command delete-submodule" -a "(__fish_git submodule status 2>/dev/null | string trim | cut -d ' ' -f 2)" -d 'submodule to delete'
# delete-tag
complete -c git -x -n "__fish_git_using_command delete-tag" -a '(__fish_git for-each-ref --format="%(refname)" refs/tags 2>/dev/null)' -d 'tag to delete'
# effort
complete -c git -f -n '__fish_git_using_command effort' -l above -d 'ignore file with less than x commits'
# feature
complete -c git -x -n '__fish_git_using_command feature' -s a -l alias -d 'use branch_prefix instead of feature'
complete -c git -f -n '__fish_git_using_command feature; and not contains -- finish (commandline -opc)' -a finish -d 'merge and delete the feature branch'
complete -c git -f -n '__fish_git_using_command feature; and contains -- finish (commandline -opc)' -l squash -d 'Run a squash merge'
complete -c git -x -n '__fish_git_using_command feature; and contains -- finish (commandline -opc)' -a '(__fish_git for-each-ref --format="%(refname)" 2>/dev/null | grep "refs/heads/feature")' -d 'name of feature branch'
complete -c git -x -n '__fish_git_using_command feature; and not contains -- finish (commandline -opc)' -s r -l remote -a '(__fish_git_unique_remote_branches)' -d 'Setup a remote tracking branch'
# graft
complete -c git -x -n '__fish_git_using_command graft' -s r -l remote -a '(__fish_git_branches)' -d src-branch-name
complete -c git -x -n '__fish_git_using_command graft' -s r -l remote -a '(__fish_git_branches)' -d dest-branch-name
# guilt
complete -c git -f -n '__fish_git_using_command guilt' -s w -l ignore-whitespace -d 'ignore whitespace only changes'
complete -c git -f -n '__fish_git_using_command guilt' -s e -l email -d 'display author emails instead of names'
complete -c git -f -n '__fish_git_using_command guilt' -s d -l debug -d 'output debug information'
complete -c git -f -n '__fish_git_using_command guilt' -s h -d 'output usage information'
# ignore
complete -c git -f -n '__fish_git_using_command ignore' -s l -l local -d 'show local gitignore'
complete -c git -f -n '__fish_git_using_command ignore' -s g -l global -d 'show global gitignore'
complete -c git -f -n '__fish_git_using_command ignore' -s p -l private -d 'show repo gitignore'
# ignore-io
function __fish_git_extra_get_ignore_io_types
    # we will first remove every tab spaces, and then append `\t` at the end to remove the default description
    git ignore-io -l | string replace -r --all -- "\t+" "\n" | string replace -r -- "\$" "\t"
end
complete -c git -x -n '__fish_git_using_command ignore-io' -a '(__fish_git_extra_get_ignore_io_types)'
complete -c git -x -n '__fish_git_using_command ignore-io' -s a -l append -a '(__fish_git_extra_get_ignore_io_types)' -d 'append .gitignore'
complete -c git -x -n '__fish_git_using_command ignore-io' -s r -l replace -a '(__fish_git_extra_get_ignore_io_types)' -d 'replace .gitignore'
complete -c git -x -n '__fish_git_using_command ignore-io' -s l -l list-in-table -d 'print available types in table format'
complete -c git -x -n '__fish_git_using_command ignore-io' -s L -l list-alphabetically -d 'print available types in alphabetical order'
complete -c git -x -n '__fish_git_using_command ignore-io' -s s -l search -d 'search word in available types'
complete -c git -x -n '__fish_git_using_command ignore-io' -s t -l show-update-time -d 'Show the last modified time of ~/.gi_list'
complete -c git -x -n '__fish_git_using_command ignore-io' -s u -l update -d 'Update ~/.gi_list'
# merge-into
complete -c git -n '__fish_git_using_command merge-into' -l ff-only -d 'merge only fast-forward'
complete -c git -x -n '__fish_git_using_command merge-into' -a '(__fish_git_branches)'
# missing
complete -c git -x -n '__fish_git_using_command missing' -a '(__fish_git_branches)'
# squash
complete -c git -x -n '__fish_git_using_command squash' -a '(__fish_git_branches)'
complete -c git -x -n '__fish_git_using_command squash' -l squash-msg -d 'commit with the squashed commit messages'
# stamp
complete -c git -x -n '__fish_git_using_command stamp' -s r -l replace -d 'replace stamps with same id'
# standup
complete -c git -x -n '__fish_git_using_command standup' -s a -d 'Specify the author of commits. Use all to specify all authors'
complete -c git -x -n '__fish_git_using_command standup' -s m -d 'The depth of recursive directory search'
complete -c git -x -n '__fish_git_using_command standup' -s d -d 'Show history since N days ago'
complete -c git -x -n '__fish_git_using_command standup' -s D -d 'Specify the date format displayed in commit history'
complete -c git -n '__fish_git_using_command standup' -s f -d 'Fetch commits before showing history'
complete -c git -n '__fish_git_using_command standup' -s g -d 'Display GPG signed info'
complete -c git -n '__fish_git_using_command standup' -s h -l help -d 'Display help message'
complete -c git -n '__fish_git_using_command standup' -s L -d 'Enable the inclusion of symbolic links'
complete -c git -n '__fish_git_using_command standup' -s B -d 'Display the commits in branch group'
complete -c git -x -n '__fish_git_using_command standup' -s n -d 'Limit the number of commits displayed per group'
# summary
complete -c git -n '__fish_git_using_command summary' -l line -d 'summarize with lines rather than commits'
complete -c git -n '__fish_git_using_command summary' -l dedup-by-email -d 'remove duplicate users by the email address'
complete -c git -n '__fish_git_using_command summary' -l no-merges -d 'exclude merge commits'
# release
complete -c git -x -n '__fish_git_using_command release' -s c -d 'Generates/populates the changelog with all commit message since the last tag'
complete -c git -x -n '__fish_git_using_command release' -s r -d 'The remote repository that is destination of a push operation'
complete -c git -x -n '__fish_git_using_command release' -s m -d 'use the custom commit information instead of the default message'
complete -c git -x -n '__fish_git_using_command release' -s s -d 'Create a signed and annotated tag'
complete -c git -x -n '__fish_git_using_command release' -s u -d 'Create a tag, annotated and signed with the given key'
complete -c git -x -n '__fish_git_using_command release' -l semver -d 'If the latest tag matches semver format, increase part of it as the new release tag'
complete -c git -x -n '__fish_git_using_command release' -l no-empty-commit -d 'Avoid creating empty commit if nothing could be committed'
# undo
complete -c git -x -n '__fish_git_using_command undo' -s s -l soft -d 'only rolls back the commit but changes remain un-staged'
complete -c git -x -n '__fish_git_using_command undo' -s h -l hard -d 'wipes your commit(s)'
07070100000062000081A40000000000000000000000016627A28D00000265000000000000000000000000000000000000001F00000000git-extras-7.2.0/etc/test.fishcomplete -e blah

function __fish_git_arg_number -a number
    set -l cmd (commandline -opc)
    test (count $cmd) -eq $number
end

function __fish_git_extra_coauthor_name
    printf '%s\n' 'a' 'apple' 'ann'
end

function __fish_git_extra_coauthor_email
    set -l cmd (commandline -opc)

    set -l value $cmd[3]
    printf '%s\n' 'n' 'n1' 'n2' "$value"
end

complete -c blah -f -n '__fish_git_using_command coauthor; and __fish_git_arg_number 2' -a '(__fish_git_extra_coauthor_name)'
complete -c blah -f -n '__fish_git_using_command coauthor; and __fish_git_arg_number 3' -a '(__fish_git_extra_coauthor_email)'
07070100000063000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000001800000000git-extras-7.2.0/helper07070100000064000081ED0000000000000000000000016627A28D0000021D000000000000000000000000000000000000002A00000000git-extras-7.2.0/helper/git-extra-utility# put all utility functions here

# make a temporary file
git_extra_mktemp() {
    mktemp -t "$(basename "$0")".XXXXXXX
}

git_extra_default_branch() {
    local extras_default_branch init_default_branch
    extras_default_branch=$(git config --get git-extras.default-branch)
    init_default_branch=$(git config --get init.defaultBranch)
    if [ -n "$extras_default_branch" ]; then
        echo "$extras_default_branch"
    elif [ -n "$init_default_branch" ]; then
        echo "$init_default_branch"
    else
        echo "main"
    fi
}
07070100000065000081A40000000000000000000000016627A28D000000F6000000000000000000000000000000000000002700000000git-extras-7.2.0/helper/has-git-commit#
# check whether current directory contains any git commit
#

has_git_commit() {
  git rev-parse --short HEAD > /dev/null 2>&1
  result=$?
  if test $result != 0; then
    >&2 echo 'Not git commit found!'
    exit $result
  fi
}

has_git_commit
07070100000066000081ED0000000000000000000000016627A28D000000F0000000000000000000000000000000000000002400000000git-extras-7.2.0/helper/is-git-repo#
# check whether current directory is inside a git repository
#

is_git_repo() {
  git rev-parse --show-toplevel > /dev/null 2>&1
  result=$?
  if test $result != 0; then
    >&2 echo 'Not a git repo!'
    exit $result
  fi
}

is_git_repo
07070100000067000081A40000000000000000000000016627A28D0000005B000000000000000000000000000000000000002200000000git-extras-7.2.0/helper/reset-env# reset environment variables that could interfere with normal usage
unset -v GREP_OPTIONS
07070100000068000081A40000000000000000000000016627A28D0000131B000000000000000000000000000000000000001D00000000git-extras-7.2.0/install.cmd@ECHO OFF
:: don't leak env variables into the calling interpreter...
setlocal
:: better defaults for dealing with quotes...
:: You need to escape ! afterwards with ^^! or "^!"
SETLOCAL enabledelayedexpansion

:: A comment on quotes around file path variables:
:: only add quotes around the variable when you use the variable
:: as a file path (exists, type, pipe,...) and the parenthesis of a
:: for, not when used as a string (-> setting variables)

:: more does not work if the codepage is set to unicode 65001
for /F "tokens=*" %%F in ('chcp') do (
    for %%A in (%%F) do (set _last=%%A)
)
SET CP=%_last:~0%
if "!CP:~-1!"=="." (
    SET CP=!CP:~0,-1!
)
chcp 850 > NUL
:: echo %CP%

:: not so sane default...
SET PREFIX=C:\SCM\PortableGit\mingw64

:: find a git.exe in path and use that as a default dir
where /Q git.exe
if errorlevel 1 goto :defaultpath

for /F "delims=" %%F in ('where git.exe') do (
    set bindir=%%~dpF
    rem break after the first, so that we get the first in path
    goto :break
)
goto :defaultpath

:break
rem remove the last slash
SET bindir=%bindir:~0,-1%
for %%G in ("%bindir%") do set installdir=%%~dpG
set PREFIX=%installdir%mingw64
goto :foundprefix

:defaultpath
:: default for Git for Windows 2.x
if exist "%ProgramFiles%\Git" (
    set PREFIX=%ProgramFiles%\Git\mingw64
)

:foundprefix
:: overwrite with whatever the user supplied...
IF NOT "%~1"=="" (
    REM make it easier for the user to specify a prefix:
    REM just supplying the git dir is enough...
    if exist "%~1\mingw64" (
        set PREFIX=%~1\mingw64
    ) else (
        echo Using git install path "%~1" as PREFIX, please make sure it's really a
        echo path to the mingw64 directory...
        echo.
        SET PREFIX=%~1
    )
)
:: remove a trailing slash, but only after removing quotes...
set PREFIX=!PREFIX:"=!
IF %PREFIX:~-1%==\ SET PREFIX=%PREFIX:~0,-1%

for %%H in ("%PREFIX%") do set GIT_INSTALL_DIR=%%~dpH

set GIT_INSTALL_DIR=!GIT_INSTALL_DIR:"=!
IF %GIT_INSTALL_DIR:~-1%==\ SET GIT_INSTALL_DIR=%GIT_INSTALL_DIR:~0,-1%

if not exist "%GIT_INSTALL_DIR%\mingw64" (
    echo No mingw64 folder found in %GIT_INSTALL_DIR%.
    echo.
    echo Please supply a proper "Git for Windows 2.x" install path:
    echo "install.cmd c:\[git-install-path]"
    set ERROR=1
    goto :exit
)

echo Installing to %PREFIX%
SET HTMLDIR=%PREFIX%\share\doc\git-doc
SET GITEXTRAS=%~dp0

IF NOT EXIST "%PREFIX%\bin" MKDIR "%PREFIX%\bin"

:: Check that we can install into that dir or need admin rights...
set _testfile=%PREFIX%\bin\testfile_to_check_if_dir_is_writeable-577423947123.~
copy NUL "%_testfile%" >NUL 2>&1
IF EXIST "%_testfile%" (
    set IS_WRITEABLE=yes
    del "%_testfile%"
) else (
    set IS_WRITEABLE=no
)
if "%IS_WRITEABLE%"=="no" (
    echo.
    echo Directory for binaries ["%PREFIX%\bin"] is not writeable by install.cmd.
    echo.
    echo You probably need to run install.cmd from an admin prompt.
    set ERROR=1
    goto :exit
)

FOR /F "eol=# delims=" %%A in (not_need_git_repo) DO (
    SET COMMANDS_WITHOUT_REPO=!COMMANDS_WITHOUT_REPO! %%A
)

echo Installing binaries...
FOR /R "%GITEXTRAS%\bin" %%i in (*.*) DO (
    IF "%DEBUG%"=="true" ( ECHO "Writing File: %PREFIX%\bin\%%~ni" )

    ECHO #^^!/usr/bin/env bash > "%PREFIX%\bin\%%~ni"
    TYPE "%GITEXTRAS%\helper\reset-env" >> "%PREFIX%\bin\%%~ni"
    TYPE "%GITEXTRAS%\helper\git-extra-utility" >> "%PREFIX%\bin\%%~ni"
    TYPE "%GITEXTRAS%\helper\is-git-repo" >> "%PREFIX%\bin\%%~ni"
    
    REM Added /E option for installation fix on Windows 10.0.17134 and higher
    MORE /E +2 "%GITEXTRAS%\bin\%%~ni" >> "%PREFIX%\bin\%%~ni"
)

FOR %%i in (%COMMANDS_WITHOUT_REPO%) DO (
    IF "%DEBUG%"=="true" ( ECHO "Writing File: %PREFIX%\bin\%%i" )

    ECHO #^^!/usr/bin/env bash > "%PREFIX%\bin\%%i"
    TYPE "%GITEXTRAS%\helper\reset-env" >> "%PREFIX%\bin\%%i"
    TYPE "%GITEXTRAS%\helper\git-extra-utility" >> "%PREFIX%\bin\%%i"
    
    REM Added /E option for installation fix on Windows 10.0.17134 and higher
    MORE /E +2 "%GITEXTRAS%\bin\%%i" >> "%PREFIX%\bin\%%i"
)

echo Installing man pages...
set _QUIET=/NP /NFL /NDL /NJS /NJH
ROBOCOPY %_QUIET% /IS "%GITEXTRAS%\man" "%HTMLDIR%" *.html
IF %ERRORLEVEL% GTR 7 (
    echo Not all html docs could be copied to "%GITEXTRAS%\man".
    echo.
    echo You probably need to run the install.cmd script from an admin prompt.
    set ERROR=1
    goto :exit
)
echo done

if not exist "%GIT_INSTALL_DIR%\usr\bin\column.exe" (
    where /Q column.exe
    if errorlevel 1 (
        echo.
        echo column.exe is missing: Not in "%GIT_INSTALL_DIR%\usr\bin" or in PATH!
        echo.
        echo "git summary", "git summary-line" and "git ignore-io" do not work without.
        echo If you need these commands, please install Git for Windows > 2.7.0.
        echo.
    )
)


:exit
@chcp %CP% > NUL
@endlocal enabledelayedexpansion
@endlocal
@exit /b %ERROR%
07070100000069000081ED0000000000000000000000016627A28D00000208000000000000000000000000000000000000001C00000000git-extras-7.2.0/install.sh#!/usr/bin/env bash

make_install() {
    if [ -n "$PREFIX" ]
    then
        PREFIX="$PREFIX" make install
    else
        sudo make install
    fi
}

dir=$(mktemp -t -d git-extras-install.XXXXXXXXXX) \
    && cd "$dir" \
    && echo "Setting up 'git-extras'...." \
    && git clone https://github.com/tj/git-extras.git &> /dev/null \
    && cd git-extras \
    && git checkout \
        $(git describe --tags $(git rev-list --tags --max-count=1)) \
        &> /dev/null \
    && make_install \
    && rm -rf "$dir"

0707010000006A000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000001500000000git-extras-7.2.0/man0707010000006B000081A40000000000000000000000016627A28D000002F1000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/Readme.mdHow to generate documentation:
================================

## DESCRIPTION

To generate documentation:

1) Start by filling out the 'man-template.md'

2) Then install a program ronn. [Get ronn from github.](https://github.com/rtomayko/ronn)

3) Run make:

(Assumed you are under `./man` when running the command below)

```
$ make -C .. man/git-<command>.{1,html}
```

4)  Remember, we use the following naming convention for files:

```
git-<command>.html
git-<command>.1
git-<command>.md
```

## AUTHOR

Written by Leila Muhtasib &lt;<muhtasib@gmail.com>&gt;
Shell Script by Nick Lombard &lt;<github@jigsoft.co.za>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000006C000081A40000000000000000000000016627A28D0000026E000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-abort.1.\" generated with Ronn-NG/v0.8.0
.\" http://github.com/apjanke/ronn-ng/tree/0.8.0
.TH "GIT\-ABORT" "1" "August 2020" "" "Git Extras"
.SH "NAME"
\fBgit\-abort\fR \- Abort current git operation
.SH "SYNOPSIS"
\fBgit\-abort\fR
.SH "DESCRIPTION"
Abort current git revert, rebase, merge or cherry\-pick process\.
.SH "OPTIONS"
There are no options, it just aborts current operation\.
.SH "EXAMPLES"
\fBgit\-abort\fR
.SH "AUTHOR"
Written by Przemek Kitszel <\fI\%mailto:pkitszel@gmail\.com\fR>
.SH "REPORTING BUGS"
<\fI\%https://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fI\%https://github\.com/tj/git\-extras\fR>
0707010000006D000081A40000000000000000000000016627A28D00000FB1000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-abort.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' content='text/html;charset=utf8'>
  <meta name='generator' content='Ronn-NG/v0.8.0 (http://github.com/apjanke/ronn-ng/tree/0.8.0)'>
  <title>git-abort(1) - Abort current git operation</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-abort(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-abort(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-abort</code> - <span class="man-whatis">Abort current git operation</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-abort</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Abort current git revert, rebase, merge or cherry-pick process.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  There are no options, it just aborts current operation.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  <code>git-abort</code></p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Przemek Kitszel &lt;<a href="mailto:pkitszel@gmail.com" data-bare-link="true">pkitszel@gmail.com</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'>August 2020</li>
    <li class='tr'>git-abort(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000006E000081A40000000000000000000000016627A28D000001E0000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-abort.mdgit-abort(1) -- Abort current git operation
================================

## SYNOPSIS

`git-abort`

## DESCRIPTION

  Abort current git revert, rebase, merge or cherry-pick process.

## OPTIONS

  There are no options, it just aborts current operation.

## EXAMPLES

  `git-abort`

## AUTHOR

Written by Przemek Kitszel &lt;<pkitszel@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000006F000081A40000000000000000000000016627A28D000006D7000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-alias.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-ALIAS" "1" "September 2023" "" "Git Extras"
.SH "NAME"
\fBgit\-alias\fR \- Define, search and show aliases
.SH "SYNOPSIS"
\fBgit\-alias\fR \fBgit\-alias\fR <search\-pattern> \fBgit\-alias\fR <alias\-name> <command> \fBgit\-alias\fR [\-\-global] \fBgit\-alias\fR [\-\-local] \fBgit\-alias\fR [\-\-global] <search\-pattern> \fBgit\-alias\fR [\-\-local] <search\-pattern> \fBgit\-alias\fR [\-\-global] <alias\-name> <command> \fBgit\-alias\fR [\-\-local] <alias\-name> <command>
.SH "DESCRIPTION"
List all aliases, show one alias, or set one (global or local) alias\.
.SH "OPTIONS"
\-\-global
.P
Show or create alias in the system config
.P
\-\-local
.P
Show or create alias in the repository config
.P
<search\-pattern>
.P
The pattern used to search aliases\.
.P
<alias\-name>
.P
The name of the alias to create\.
.P
<command>
.P
The command for which you are creating an alias\.
.SH "EXAMPLES"
Defining a new alias:
.IP "" 4
.nf
$ git alias last "cat\-file commit HEAD"
.fi
.IP "" 0
.P
Providing only one argument, \fBgit\-alias\fR searches for aliases matching the given value:
.IP "" 4
.nf
$ git alias ^la
last = cat\-file commit HEAD
.fi
.IP "" 0
.P
\fBgit\-alias\fR will show all aliases if no argument is given:
.IP "" 4
.nf
$ git alias
s = status
amend = commit \-\-amend
rank = shortlog \-sn \-\-no\-merges
whatis = show \-s \-\-pretty=\'tformat:%h (%s, %ad)\' \-\-date=short
whois = !sh \-c \'git log \-i \-1 \-\-pretty="format:%an <%ae>
.fi
.IP "" 0
.SH "AUTHOR"
Written by Jonhnny Weslley <\fIjw@jonhnnyweslley\.net\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000070000081A40000000000000000000000016627A28D000014B5000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-alias.html<!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)'>
  <title>git-alias(1) - Define, search and show aliases</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-alias(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-alias(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-alias</code> - <span class="man-whatis">Define, search and show aliases</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-alias</code>
<code>git-alias</code> &lt;search-pattern&gt;
<code>git-alias</code> &lt;alias-name&gt; &lt;command&gt;
<code>git-alias</code> [--global]
<code>git-alias</code> [--local]
<code>git-alias</code> [--global] &lt;search-pattern&gt;
<code>git-alias</code> [--local] &lt;search-pattern&gt;
<code>git-alias</code> [--global] &lt;alias-name&gt; &lt;command&gt;
<code>git-alias</code> [--local] &lt;alias-name&gt; &lt;command&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>List all aliases, show one alias, or set one (global or local) alias.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>--global</p>

<p>Show or create alias in the system config</p>

<p>--local</p>

<p>Show or create alias in the repository config</p>

<p>&lt;search-pattern&gt;</p>

<p>The pattern used to search aliases.</p>

<p>&lt;alias-name&gt;</p>

<p>The name of the alias to create.</p>

<p>&lt;command&gt;</p>

<p>The command for which you are creating an alias.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Defining a new alias:</p>

<pre><code>$ git alias last "cat-file commit HEAD"
</code></pre>

<p>Providing only one argument, <code>git-alias</code> searches for aliases matching the given value:</p>

<pre><code>$ git alias ^la
last = cat-file commit HEAD
</code></pre>

<p><code>git-alias</code> will show all aliases if no argument is given:</p>

<pre><code>$ git alias
s = status
amend = commit --amend
rank = shortlog -sn --no-merges
whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
whois = !sh -c 'git log -i -1 --pretty="format:%an &lt;%ae&gt;
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jonhnny Weslley &lt;<a href="mailto:jw@jonhnnyweslley.net" data-bare-link="true">jw@jonhnnyweslley.net</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'>September 2023</li>
    <li class='tr'>git-alias(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000071000081A40000000000000000000000016627A28D00000626000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-alias.mdgit-alias(1) -- Define, search and show aliases
===============================================

## SYNOPSIS

`git-alias`
`git-alias` &lt;search-pattern&gt;
`git-alias` &lt;alias-name&gt; &lt;command&gt;
`git-alias` [--global]
`git-alias` [--local]
`git-alias` [--global] &lt;search-pattern&gt;
`git-alias` [--local] &lt;search-pattern&gt;
`git-alias` [--global] &lt;alias-name&gt; &lt;command&gt;
`git-alias` [--local] &lt;alias-name&gt; &lt;command&gt;

## DESCRIPTION

  List all aliases, show one alias, or set one (global or local) alias.

## OPTIONS

  --global

  Show or create alias in the system config

  --local

  Show or create alias in the repository config

  &lt;search-pattern&gt;

  The pattern used to search aliases.

  &lt;alias-name&gt;

  The name of the alias to create.

  &lt;command&gt;

  The command for which you are creating an alias.


## EXAMPLES

 Defining a new alias:

    $ git alias last "cat-file commit HEAD"

 Providing only one argument, `git-alias` searches for aliases matching the given value:

    $ git alias ^la
    last = cat-file commit HEAD

 `git-alias` will show all aliases if no argument is given:

    $ git alias
    s = status
    amend = commit --amend
    rank = shortlog -sn --no-merges
    whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
    whois = !sh -c 'git log -i -1 --pretty="format:%an <%ae>

## AUTHOR

Written by Jonhnny Weslley &lt;<jw@jonhnnyweslley.net>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000072000081A40000000000000000000000016627A28D000003CE000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-archive-file.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-ARCHIVE\-FILE" "1" "May 2020" "" "Git Extras"
.SH "NAME"
\fBgit\-archive\-file\fR \- Export the current HEAD of the git repository to an archive
.SH "SYNOPSIS"
\fBgit\-archive\-file\fR
.SH "DESCRIPTION"
Export the current HEAD of the repository into an archive with an identifiable and unique name\.
.SH "OPTIONS"
This command does not take any options\.
.SH "EXAMPLES"
Archive naming conventions:
.P
On any branch: \fBgit\-extras\.1\.7\.0\-110\-gafefba7\.branch\-name\.zip\fR
.P
On master branch: \fBgit\-extras\.1\.7\.0\-110\-gafefba7\.zip\fR
.P
On a detached HEAD (e\.g\. a tag): \fBgit\-extras\.1\.7\.0\.zip\fR
.P
The \'/\' and \'\e\' in the branch name will be converted into \'\-\'\.
.SH "AUTHOR"
Written by Philipp Klose <\fIme@thehippo\.de\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000073000081A40000000000000000000000016627A28D0000114A000000000000000000000000000000000000002B00000000git-extras-7.2.0/man/git-archive-file.html<!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)'>
  <title>git-archive-file(1) - Export the current HEAD of the git repository to an archive</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-archive-file(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-archive-file(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-archive-file</code> - <span class="man-whatis">Export the current HEAD of the git repository to an archive</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-archive-file</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Export the current HEAD of the repository into an archive with an identifiable and unique name.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>This command does not take any options.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Archive naming conventions:</p>

<p>On any branch: <code>git-extras.1.7.0-110-gafefba7.branch-name.zip</code></p>

<p>On master branch: <code>git-extras.1.7.0-110-gafefba7.zip</code></p>

<p>On a detached HEAD (e.g. a tag): <code>git-extras.1.7.0.zip</code></p>

<p>The '/' and '\' in the branch name will be converted into '-'.</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Philipp Klose &lt;<a href="mailto:me@thehippo.de" data-bare-link="true">me@thehippo.de</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 2020</li>
    <li class='tr'>git-archive-file(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000074000081A40000000000000000000000016627A28D00000324000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-archive-file.mdgit-archive-file(1) -- Export the current HEAD of the git repository to an archive
===============================================

## SYNOPSIS

`git-archive-file` 

## DESCRIPTION

Export the current HEAD of the repository into an archive with an identifiable and unique name.

## OPTIONS

This command does not take any options.


## EXAMPLES

Archive naming conventions:

On any branch: `git-extras.1.7.0-110-gafefba7.branch-name.zip`

On master branch: `git-extras.1.7.0-110-gafefba7.zip`

On a detached HEAD (e.g. a tag): `git-extras.1.7.0.zip`

The '/' and '\\' in the branch name will be converted into '-'.

## AUTHOR

Written by Philipp Klose &lt;<me@thehippo.de>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000075000081A40000000000000000000000016627A28D00000531000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-authors.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-AUTHORS" "1" "November 2023" "" "Git Extras"
.SH "NAME"
\fBgit\-authors\fR \- Generate authors report
.SH "SYNOPSIS"
\fBgit\-authors\fR [\-l, \-\-list] [\-\-no\-email]
.SH "DESCRIPTION"
.TS
allbox;
Populates the file matching _authors	contributors \-i_ with the authors of commits, according to the number of commits per author\.
.TE
.P
See the "MAPPING AUTHORS" section of \fBgit\-shortlog\fR(1) to coalesce together commits by the same person\.
.SH "OPTIONS"
\-l, \-\-list
.P
Show authors\.
.P
\-\-no\-email
.P
Don\'t show authors\' email\.
.SH "EXAMPLES"
Updating AUTHORS file:
.IP "" 4
.nf
$ git authors
.fi
.IP "" 0
.P
Listing authors:
.IP "" 4
.nf
$ git authors \-\-list
TJ Holowaychuk <tj@vision\-media\.ca>
hemanth\.hm <hemanth\.hm@gmail\.com>
Jonhnny Weslley <jw@jonhnnyweslley\.net>
nickl\- <github@jigsoft\.co\.za>
Leila Muhtasib <muhtasib@gmail\.com>
.fi
.IP "" 0
.P
Listing authors without email:
.IP "" 4
.nf
$ git authors \-\-list \-\-no\-email
TJ Holowaychuk
hemanth\.hm
Jonhnny Weslley
nickl\-
Leila Muhtasib
.fi
.IP "" 0
.SH "AUTHOR"
Written by Titus Wormer <\fItituswormer@gmail\.com\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000076000081A40000000000000000000000016627A28D000012DD000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-authors.html<!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)'>
  <title>git-authors(1) - Generate authors report</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-authors(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-authors(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-authors</code> - <span class="man-whatis">Generate authors report</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-authors</code> [-l, --list] [--no-email]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<table>
  <tbody>
    <tr>
      <td>Populates the file matching _authors</td>
      <td>contributors -i_ with the authors of commits, according to the number of commits per author.</td>
    </tr>
  </tbody>
</table>

<p>See the "MAPPING AUTHORS" section of <strong>git-shortlog</strong>(1) to coalesce together commits by the same person.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>-l, --list</p>

<p>Show authors.</p>

<p>--no-email</p>

<p>Don't show authors' email.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Updating AUTHORS file:</p>

<pre><code>$ git authors
</code></pre>

<p>Listing authors:</p>

<pre><code>$ git authors --list
TJ Holowaychuk &lt;tj@vision-media.ca&gt;
hemanth.hm &lt;hemanth.hm@gmail.com&gt;
Jonhnny Weslley &lt;jw@jonhnnyweslley.net&gt;
nickl- &lt;github@jigsoft.co.za&gt;
Leila Muhtasib &lt;muhtasib@gmail.com&gt;
</code></pre>

<p>Listing authors without email:</p>

<pre><code>$ git authors --list --no-email
TJ Holowaychuk
hemanth.hm
Jonhnny Weslley
nickl-
Leila Muhtasib
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Titus Wormer &lt;<a href="mailto:tituswormer@gmail.com" data-bare-link="true">tituswormer@gmail.com</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'>November 2023</li>
    <li class='tr'>git-authors(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000077000081A40000000000000000000000016627A28D00000475000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-authors.mdgit-authors(1) -- Generate authors report
=================================================

## SYNOPSIS

`git-authors` [-l, --list] [--no-email]

## DESCRIPTION

  Populates the file matching _authors|contributors -i_ with the authors of commits, according to the number of commits per author.

  See the "MAPPING AUTHORS" section of **git-shortlog**(1) to coalesce together commits by the same person.

## OPTIONS

  -l, --list

  Show authors.

  --no-email

  Don't show authors' email.

## EXAMPLES

  Updating AUTHORS file:

    $ git authors

  Listing authors:

    $ git authors --list
    TJ Holowaychuk <tj@vision-media.ca>
    hemanth.hm <hemanth.hm@gmail.com>
    Jonhnny Weslley <jw@jonhnnyweslley.net>
    nickl- <github@jigsoft.co.za>
    Leila Muhtasib <muhtasib@gmail.com>

  Listing authors without email:

    $ git authors --list --no-email
    TJ Holowaychuk
    hemanth.hm
    Jonhnny Weslley
    nickl-
    Leila Muhtasib

## AUTHOR

Written by Titus Wormer &lt;<tituswormer@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000078000081A40000000000000000000000016627A28D000002CF000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-browse-ci.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-BROWSE\-CI" "1" "March 2022" "" "Git Extras"
.
.SH "NAME"
\fBgit\-browse\-ci\fR \-
.
.SH "SYNOPSIS"
\fBgit\-browse\-ci\fR [remote_name]
.
.SH "DESCRIPTION"
Opens the current git repository CI page in your default web browser\.
.
.SH "OPTIONS"
<remote_name>
.
.P
The name of the remote you wish to browse to\. Defaults to the first remote if not specified\.
.
.SH "EXAMPLES"
$ git browse\-ci
.
.P
$ git browse\-ci upstream
.
.SH "AUTHOR"
Written by Peter Benjamin <\fIhttps://github\.com/pbnj\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000079000081A40000000000000000000000016627A28D00001058000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-browse-ci.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-browse-ci(1) - &lt;View the web page for the current repository&gt;</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-browse-ci(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-browse-ci(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-browse-ci</code> - <span class="man-whatis"><view the web page for current repository /></span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-browse-ci</code> [remote_name]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Opens the current git repository CI page in your default web browser.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;remote_name&gt;</p>

<p>The name of the remote you wish to browse to. Defaults to
the first remote if not specified.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  $ git browse-ci</p>

<p>  $ git browse-ci upstream</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Peter Benjamin &lt;<a href="https://github.com/pbnj" data-bare-link="true">https://github.com/pbnj</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'>March 2022</li>
    <li class='tr'>git-browse-ci(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000007A000081A40000000000000000000000016627A28D00000269000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-browse-ci.mdgit-browse-ci(1) -- <View the web page for the current repository>
================================

## SYNOPSIS

`git-browse-ci` [remote_name]

## DESCRIPTION

Opens the current git repository CI page in your default web browser.

## OPTIONS

&lt;remote_name&gt;

The name of the remote you wish to browse to. Defaults to
the first remote if not specified.

## EXAMPLES

  $ git browse-ci

  $ git browse-ci upstream

## AUTHOR

Written by Peter Benjamin &lt;<https://github.com/pbnj>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000007B000081A40000000000000000000000016627A28D0000044E000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-browse.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-BROWSE" "1" "June 2022" "" "Git Extras"
.
.SH "NAME"
\fBgit\-browse\fR \-
.
.SH "SYNOPSIS"
\fBgit\-browse\fR [remote_name] [file_name] [line_1] [line_2]
.
.SH "DESCRIPTION"
Opens the current git repository website in your default web browser\.
.
.SH "OPTIONS"
<remote_name>
.
.P
The name of the remote you wish to browse to\. Defaults to the first remote if not specified\.
.
.P
<file_name>
.
.P
The name of the file you wish to browse to\.
.
.P
<line_1>
.
.P
The line number of the file you wish to browse to\.
.
.P
<line_2>
.
.P
The line range (from <line_1> to <line_2>) of the file you wish to browse to\.
.
.SH "EXAMPLES"
$ git browse
.
.P
$ git browse upstream
.
.P
$ git browse upstream bin/git\-browse
.
.P
$ git browse upstream bin/git\-browse 42
.
.P
$ git browse upstream bin/git\-browse 1 42
.
.SH "AUTHOR"
Written by Mark Pitman <\fIhttps://github\.com/mapitman\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000007C000081A40000000000000000000000016627A28D00001210000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-browse.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-browse(1) - &lt;View the web page for the current repository&gt;</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-browse(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-browse(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-browse</code> - <span class="man-whatis"><view the web page for current repository /></span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-browse</code> [remote_name] [file_name] [line_1] [line_2]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Opens the current git repository website in your default web browser.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;remote_name&gt;</p>

<p>The name of the remote you wish to browse to. Defaults to
the first remote if not specified.</p>

<p>&lt;file_name&gt;</p>

<p>The name of the file you wish to browse to.</p>

<p>&lt;line_1&gt;</p>

<p>The line number of the file you wish to browse to.</p>

<p>&lt;line_2&gt;</p>

<p>The line range (from &lt;line_1&gt; to &lt;line_2&gt;) of the file you wish to
browse to.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  $ git browse</p>

<p>  $ git browse upstream</p>

<p>  $ git browse upstream bin/git-browse</p>

<p>  $ git browse upstream bin/git-browse 42</p>

<p>  $ git browse upstream bin/git-browse 1 42</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Mark Pitman &lt;<a href="https://github.com/mapitman" data-bare-link="true">https://github.com/mapitman</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'>June 2022</li>
    <li class='tr'>git-browse(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000007D000081A40000000000000000000000016627A28D000003EB000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-browse.mdgit-browse(1) -- <View the web page for the current repository>
================================

## SYNOPSIS

`git-browse` [remote_name] [file_name] [line_1] [line_2]

## DESCRIPTION

Opens the current git repository website in your default web browser.

## OPTIONS

&lt;remote_name&gt;

The name of the remote you wish to browse to. Defaults to
the first remote if not specified.

&lt;file_name&gt;

The name of the file you wish to browse to.

&lt;line_1&gt;

The line number of the file you wish to browse to.

&lt;line_2&gt;

The line range (from &lt;line_1&gt; to &lt;line_2&gt;) of the file you wish to
browse to.

## EXAMPLES

  $ git browse

  $ git browse upstream

  $ git browse upstream bin/git-browse

  $ git browse upstream bin/git-browse 42

  $ git browse upstream bin/git-browse 1 42

## AUTHOR

Written by Mark Pitman &lt;<https://github.com/mapitman>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000007E000081A40000000000000000000000016627A28D000005D6000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-brv.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-BRV" "1" "December 2023" "" "Git Extras"
.
.SH "NAME"
\fBgit\-brv\fR \- List branches sorted by their last commit date
.
.SH "SYNOPSIS"
\fBgit\-brv\fR [\-r|\-\-reverse]
.
.SH "DESCRIPTION"
Pretty listing of branches sorted by the date of their last commit\.
.
.SH "OPTIONS"
\-r | \-\-reverse
.
.P
Reverses the output to put the most recent branch at the bottom of the list\. This is useful when there are large amount of branches as the most recent branch is shown just above the next prompt\. This can be configured as the default by setting \fBgit\-extras\.brv\.reverse\fR to true in your git options\.
.
.SH "EXAMPLES"
Simply run \fBgit brv\fR
.
.IP "" 4
.
.nf

$ git brv
2020\-01\-14 adds\-git\-brv fork/adds\-git\-brv 1ca0d76 Fixes #700: Adds git\-brv
2020\-01\-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git\-sed\-pathspec
.
.fi
.
.IP "" 0
.
.P
To display the rows in reverse order: \fBgit brv \-\-reverse\fR
.
.IP "" 4
.
.nf

$ git brv \-\-reverse
2020\-01\-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git\-sed\-pathspec
2020\-01\-14 adds\-git\-brv fork/adds\-git\-brv 1ca0d76 Fixes #700: Adds git\-brv
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Øsse <\fIhttps://github\.com/Osse\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000007F000081A40000000000000000000000016627A28D000012FE000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-brv.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-brv(1) - List branches sorted by their last commit date</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-brv(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-brv(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-brv</code> - <span class="man-whatis">List branches sorted by their last commit date</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-brv</code> [-r|--reverse]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Pretty listing of branches sorted by the date of their last commit.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -r | --reverse</p>

<p>  Reverses the output to put the most recent branch at the bottom of the list. This is useful when there are large amount of branches as the most recent branch is shown just above the next prompt. This can be configured as the default by setting <code>git-extras.brv.reverse</code> to true in your git options.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Simply run <code>git brv</code></p>

<pre><code>$ git brv
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
2020-01-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git-sed-pathspec
</code></pre>

<p>  To display the rows in reverse order: <code>git brv --reverse</code></p>

<pre><code>$ git brv --reverse
2020-01-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git-sed-pathspec
2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Øsse &lt;<a href="https://github.com/Osse" data-bare-link="true">https://github.com/Osse</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'>December 2023</li>
    <li class='tr'>git-brv(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000080000081A40000000000000000000000016627A28D00000505000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-brv.mdgit-brv(1) -- List branches sorted by their last commit date
========================================================

## SYNOPSIS

`git-brv` [-r|--reverse]

## DESCRIPTION

  Pretty listing of branches sorted by the date of their last commit.

## OPTIONS

  -r | --reverse

  Reverses the output to put the most recent branch at the bottom of the list. This is useful when there are large amount of branches as the most recent branch is shown just above the next prompt. This can be configured as the default by setting `git-extras.brv.reverse` to true in your git options.

## EXAMPLES

  Simply run `git brv`

    $ git brv
    2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv
    2020-01-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git-sed-pathspec

  To display the rows in reverse order: `git brv --reverse`

    $ git brv --reverse
    2020-01-08 master       origin/master     265b03e Merge pull request #816 from spacewander/git-sed-pathspec
    2020-01-14 adds-git-brv fork/adds-git-brv 1ca0d76 Fixes #700: Adds git-brv

## AUTHOR

Written by Øsse &lt;<https://github.com/Osse>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000081000081A40000000000000000000000016627A28D00000DFC000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-bulk.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-BULK" "1" "August 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-bulk\fR \- Run git commands on multiple repositories
.
.SH "SYNOPSIS"
git bulk [\-g] ([\-a]|[\-w <ws\-name>]) <git command>
.
.br
git bulk \-\-addworkspace <ws\-name> <ws\-root\-directory> (\-\-from <URL or file>)
.
.br
git bulk \-\-removeworkspace <ws\-name>
.
.br
git bulk \-\-addcurrent <ws\-name>
.
.br
git bulk \-\-purge
.
.br
git bulk \-\-listall
.
.SH "DESCRIPTION"
git bulk adds convenient support for operations that you want to execute on multiple git repositories\.
.
.IP "\(bu" 4
simply register workspaces that contain multiple git repos in their directory structure
.
.IP "\(bu" 4
run any git command on the repositories of the registered workspaces in one command to \fBgit bulk\fR
.
.IP "\(bu" 4
use the "guarded mode" to check on each execution
.
.IP "" 0
.
.SH "OPTIONS"
\-a
.
.P
Run a git command on all workspaces and their repositories\.
.
.P
\-g
.
.P
Ask the user for confirmation on every execution\.
.
.P
\-w <ws\-name>
.
.P
Run the git command on the specified workspace\. The workspace must be registered\.
.
.P
<git command>
.
.P
Any git Command you wish to execute on the repositories\.
.
.P
\-\-addworkspace <ws\-name> <ws\-root\-directory> (\-\-from <URL or file&rt;gt;)
.
.P
Register a workspace for bulk operations\. All repositories in the directories below <ws\-root\-directory> get registered under this workspace with the name <ws\-name>\. <ws\-root\-directory> must be absolute path\.
.
.P
With option \'\-\-from\' the URL to a single repository or a file containing multiple URLs can be added and they will be cloned directly into the workspace\. Suitable for the initial setup of a multi\-repo project\.
.
.P
\-\-removeworkspace <ws\-name>
.
.P
Remove the workspace with the logical name <ws\-name>\.
.
.P
\-\-addcurrent <ws\-name>
.
.P
Adds the current directory as workspace to git bulk operations\. The workspace is referenced with its logical name <ws\-name>\.
.
.P
git bulk \-\-purge
.
.P
Removes all defined repository locations\.
.
.P
git bulk \-\-listall
.
.P
List all registered repositories\.
.
.SH "EXAMPLES"
.
.nf

Register a workspace so that git bulk knows about it:

$ git bulk \-\-addworkspace personal ~/workspaces/personal

Use option \-\-from in order to directly clone a repository or multiple repositories

$ git bulk \-\-addworkspace personal ~/workspaces/personal \-\-from https://github\.com/tj/git\-extras\.git
$ git bulk \-\-addworkspace personal ~/workspaces/personal \-\-from ~/repositories\.txt

repositories\.txt
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
https://host\-of\-git/repo\-1\.git
https://host\-of\-git/repo\-2\.git
https://host\-of\-git/repo\-3\.git


Register the current directory as a workspace to git bulk:

$ git bulk \-\-addcurrent personal

List all registered workspaces:

$ git bulk \-\-listall

Run a git command on the repositories of the current workspace:

$ git bulk fetch

Run a git command on the specified workspace and its repositories:

$ git bulk \-w personal fetch

Run a git command but ask the user for confirmation on every execution (guarded mode):

$ git bulk \-g fetch

Remove a registered workspace:

$ git bulk \-\-removeworkspace personal

Remove all registered workspaces:

$ git bulk \-\-purge
.
.fi
.
.SH "AUTHOR"
Written by Niklas Schlimm <\fIns103@hotmail\.de\fR>
.
.SH "REPORTING BUGS"
<https://github\.com/nschlimm/git\-bulk>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000082000081A40000000000000000000000016627A28D00001BE4000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-bulk.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-bulk(1) - Run git commands on multiple repositories</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-bulk(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-bulk(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-bulk</code> - <span class="man-whatis">Run git commands on multiple repositories</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p>git bulk [-g] ([-a]|[-w &lt;ws-name&gt;]) &lt;git command&gt; <br />
git bulk --addworkspace &lt;ws-name&gt; &lt;ws-root-directory&gt; (--from &lt;URL or file&gt;) <br />
git bulk --removeworkspace &lt;ws-name&gt; <br />
git bulk --addcurrent &lt;ws-name&gt; <br />
git bulk --purge <br />
git bulk --listall</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>git bulk adds convenient support for operations that you want to execute on multiple git repositories.</p>

<ul>
<li>simply register workspaces that contain multiple git repos in their directory structure</li>
<li>run any git command on the repositories of the registered workspaces in one command to <code>git bulk</code></li>
<li>use the "guarded mode" to check on each execution</li>
</ul>


<h2 id="OPTIONS">OPTIONS</h2>

<p>  -a</p>

<p>  Run a git command on all workspaces and their repositories.</p>

<p>  -g</p>

<p>  Ask the user for confirmation on every execution.</p>

<p>  -w &lt;ws-name&gt;</p>

<p>  Run the git command on the specified workspace. The workspace must be registered.</p>

<p>  &lt;git command&gt;</p>

<p>  Any git Command you wish to execute on the repositories.</p>

<p>  --addworkspace &lt;ws-name&gt; &lt;ws-root-directory&gt; (--from &lt;URL or file&rt;gt;)</p>

<p>  Register a workspace for bulk operations. All repositories in the directories below &lt;ws-root-directory&gt; get registered under this workspace with the name &lt;ws-name&gt;. &lt;ws-root-directory&gt; must be absolute path.</p>

<p>  With option '--from' the URL to a single repository or a file containing multiple URLs can be added and they will be cloned directly into the workspace. Suitable for the initial setup of a multi-repo project.</p>

<p>  --removeworkspace &lt;ws-name&gt;</p>

<p>  Remove the workspace with the logical name &lt;ws-name&gt;.</p>

<p>  --addcurrent &lt;ws-name&gt;</p>

<p>  Adds the current directory as workspace to git bulk operations. The workspace is referenced with its logical name &lt;ws-name&gt;.</p>

<p>  git bulk --purge</p>

<p>  Removes all defined repository locations.</p>

<p>  git bulk --listall</p>

<p>  List all registered repositories.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>Register a workspace so that git bulk knows about it:

$ git bulk --addworkspace personal ~/workspaces/personal

Use option --from in order to directly clone a repository or multiple repositories 

$ git bulk --addworkspace personal ~/workspaces/personal --from https://github.com/tj/git-extras.git
$ git bulk --addworkspace personal ~/workspaces/personal --from ~/repositories.txt

repositories.txt
----------------------------------
https://host-of-git/repo-1.git
https://host-of-git/repo-2.git
https://host-of-git/repo-3.git


Register the current directory as a workspace to git bulk:

$ git bulk --addcurrent personal

List all registered workspaces:

$ git bulk --listall

Run a git command on the repositories of the current workspace:

$ git bulk fetch

Run a git command on the specified workspace and its repositories:

$ git bulk -w personal fetch

Run a git command but ask the user for confirmation on every execution (guarded mode):

$ git bulk -g fetch

Remove a registered workspace:

$ git bulk --removeworkspace personal

Remove all registered workspaces:

$ git bulk --purge
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Niklas Schlimm &lt;<a href="&#x6d;&#x61;&#105;&#108;&#x74;&#111;&#58;&#x6e;&#x73;&#x31;&#48;&#51;&#x40;&#x68;&#111;&#116;&#x6d;&#97;&#105;&#108;&#x2e;&#100;&#101;" data-bare-link="true">&#110;&#x73;&#x31;&#x30;&#51;&#x40;&#104;&#111;&#116;&#x6d;&#97;&#105;&#108;&#46;&#x64;&#x65;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;https://github.com/nschlimm/git-bulk&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'>August 2020</li>
    <li class='tr'>git-bulk(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000083000081A40000000000000000000000016627A28D00000D6F000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-bulk.mdgit-bulk(1) -- Run git commands on multiple repositories
========================================================

## SYNOPSIS

git bulk [-g] ([-a]|[-w &lt;ws-name&gt;]) &lt;git command&gt; <br/>
git bulk --addworkspace &lt;ws-name&gt; &lt;ws-root-directory&gt; (--from &lt;URL or file&gt;) <br/>
git bulk --removeworkspace &lt;ws-name&gt; <br/>
git bulk --addcurrent &lt;ws-name&gt; <br/>
git bulk --purge <br/>
git bulk --listall

## DESCRIPTION

git bulk adds convenient support for operations that you want to execute on multiple git repositories.

- simply register workspaces that contain multiple git repos in their directory structure
- run any git command on the repositories of the registered workspaces in one command to `git bulk`
- use the "guarded mode" to check on each execution

## OPTIONS

  -a

  Run a git command on all workspaces and their repositories.

  -g

  Ask the user for confirmation on every execution.

  -w &lt;ws-name&gt;

  Run the git command on the specified workspace. The workspace must be registered.

  &lt;git command&gt;

  Any git Command you wish to execute on the repositories.

  --addworkspace &lt;ws-name&gt; &lt;ws-root-directory&gt; (--from &lt;URL or file&rt;gt;)

  Register a workspace for bulk operations. All repositories in the directories below &lt;ws-root-directory&gt; get registered under this workspace with the name &lt;ws-name&gt;. &lt;ws-root-directory&gt; must be absolute path.

  With option '--from' the URL to a single repository or a file containing multiple URLs can be added and they will be cloned directly into the workspace. Suitable for the initial setup of a multi-repo project.

  --removeworkspace &lt;ws-name&gt;

  Remove the workspace with the logical name &lt;ws-name&gt;.

  --addcurrent &lt;ws-name&gt;

  Adds the current directory as workspace to git bulk operations. The workspace is referenced with its logical name &lt;ws-name&gt;.

  git bulk --purge

  Removes all defined repository locations.

  git bulk --listall

  List all registered repositories.

## EXAMPLES

    Register a workspace so that git bulk knows about it:

    $ git bulk --addworkspace personal ~/workspaces/personal

    Use option --from in order to directly clone a repository or multiple repositories 

    $ git bulk --addworkspace personal ~/workspaces/personal --from https://github.com/tj/git-extras.git
    $ git bulk --addworkspace personal ~/workspaces/personal --from ~/repositories.txt

    repositories.txt
    ----------------------------------
    https://host-of-git/repo-1.git
    https://host-of-git/repo-2.git
    https://host-of-git/repo-3.git


    Register the current directory as a workspace to git bulk:

    $ git bulk --addcurrent personal

    List all registered workspaces:

    $ git bulk --listall

    Run a git command on the repositories of the current workspace:

    $ git bulk fetch

    Run a git command on the specified workspace and its repositories:

    $ git bulk -w personal fetch

    Run a git command but ask the user for confirmation on every execution (guarded mode):

    $ git bulk -g fetch

    Remove a registered workspace:

    $ git bulk --removeworkspace personal

    Remove all registered workspaces:

    $ git bulk --purge

## AUTHOR

Written by Niklas Schlimm &lt;<ns103@hotmail.de>&gt;

## REPORTING BUGS

&lt;https://github.com/nschlimm/git-bulk&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000084000081A40000000000000000000000016627A28D00001216000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-changelog.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-CHANGELOG" "1" "June 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-changelog\fR \- Generate a changelog report
.
.SH "SYNOPSIS"
\fBgit\-changelog\fR [options] [<file>]
.
.br
\fBgit\-changelog\fR {\-h | \-\-help | ?}
.
.SH "DESCRIPTION"
Generates a changelog from git(1) tags (annotated or lightweight) and commit messages\. Existing changelog files with filenames that begin with \fIChange\fR or \fIHistory\fR will be identified automatically with a case insensitive match pattern and existing content will be appended to the new output generated\-\-this behavior can be disabled by specifying the prune option (\-p|\-\-prune\-old)\. The generated file will be opened in \fB$EDITOR\fR when set\.
.
.P
If no tags exist, then all commits are output; if tags exist, then only the most\-recent commits are output up to the last identified tag\. This behavior can be changed by specifying one or both of the range options (\-f|\-\-final\-tag and \-s|\-\-start\-tag)\.
.
.P
You could customize the changelog format via some git config options\.
.
.IP "\(bu" 4
\fBgit config changelog\.format $format\fR controls the format of each commit\. It will be passed as \fBgit log \-\-pretty=format:$format\fR\. The default value is \fB* %s\fR\.
.
.IP "\(bu" 4
\fBgit config changelog\.mergeformat $format\fR is like changelog\.format but only used when \fB\-\-merges\-only\fR is specified\. The default value is \fB* %s%n%w(64,4,4)%b\fR\.
.
.IP "" 0
.
.SH "OPTIONS"
<file>
.
.P
The name of the output file\. By default the new file will be \fIHistory\.md\fR unless an existing changelog is detected in which case the existing file will be updated\.
.
.P
\-a, \-\-all
.
.P
Retrieve all commits\. Ignores \-s|\-\-start\-tag/commit and \-f|\-\-final\-tag options (if set)\.
.
.P
\-l, \-\-list
.
.P
Show commits in list format (without titles, dates)\.
.
.P
\-t, \-\-tag
.
.P
Specify a tag label to use for most\-recent (untagged) commits\.
.
.P
\-f, \-\-final\-tag
.
.P
When specifying a range, the newest tag at which point commit retrieval will end\. Commits will be returned from the very first commit until the final tag unless a start tag is also specified\.
.
.P
\-s, \-\-start\-tag
.
.P
When specifying a range, the oldest tag to retrieve commits from\. Commits will be returned from the start tag to now unless a final tag is also specified\.
.
.P
\-\-start\-commit
.
.P
Like the \-\-start\-tag but specify the oldest commit instead of tag\. Note that the specified commit will be contained in the changelog\.
.
.P
\-n, \-\-no\-merges
.
.P
Filters out merge commits (commits with more than 1 parent) from generated changelog\.
.
.P
\-m, \-\-merges\-only
.
.P
Uses only merge commits (commits with more than 1 parent) for generated changelog\. It also changes the default format to include the merge commit messages body, as on github the commits subject line only contains the branch name but no information about the content of the merge\.
.
.P
\-p, \-\-prune\-old
.
.P
Replace existing changelog entirely with newly generated content, thereby disabling the default behavior of appending the content of any detected changelog to the end of newly generated content\.
.
.P
\-x, \-\-stdout
.
.P
Write output to stdout instead of to a new changelog file\.
.
.P
\-h, \-\-help, ?
.
.P
Show a help message with basic usage information\.
.
.SH "EXAMPLES"
.
.TP
Updating existing file or creating a new \fIHistory\.md\fR file with pretty formatted output:
.
.IP
$ git changelog
.
.TP
Listing commits from the current version:
.
.IP
$ git changelog \-\-list
.
.TP
Listing a range of commits from 2\.1\.0 to now:
.
.IP
$ git changelog \-\-list \-\-start\-tag 2\.1\.0
.
.TP
Listing a pretty formatted version of the same:
.
.IP
$ git changelog \-\-start\-tag 2\.1\.0
.
.TP
Listing a range of commits from initial commit to 2\.1\.0:
.
.IP
$ git changelog \-\-list \-\-final\-tag 2\.1\.0
.
.TP
Listing a pretty formatted range of commits between 0\.5\.0 and 1\.0\.0:
.
.IP
$ git changelog \-\-start\-tag 0\.5\.0 \-\-final\-tag 1\.0\.0
.
.TP
Listing a pretty formatted range of commits between 0b97430 and 1\.0\.0:
.
.IP
$ git changelog \-\-start\-commit 0b97430 \-\-final\-tag 1\.0\.0
.
.TP
Specifying a file for output:
.
.IP
$ git changelog ChangeLog\.md
.
.TP
And if an existing Changelog exists, replace its contents entirely:
.
.IP
$ git changelog \-\-prune\-old
.
.SH "AUTHOR"
Written by Mark Eissler <\fImark@mixtur\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000085000081A40000000000000000000000016627A28D00002134000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-changelog.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-changelog(1) - Generate a changelog report</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-changelog(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-changelog(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-changelog</code> - <span class="man-whatis">Generate a changelog report</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-changelog</code> [options] [&lt;file&gt;]<br />
<code>git-changelog</code> {-h | --help | ?}</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Generates a changelog from <span class="man-ref">git<span class="s">(1)</span></span> tags (annotated or lightweight) and commit messages. Existing changelog files with filenames that begin with <em>Change</em> or <em>History</em> will be identified automatically with a case insensitive match pattern and existing content will be appended to the new output generated--this behavior can be disabled by specifying the prune option (-p|--prune-old). The generated file will be opened in <strong>$EDITOR</strong> when set.</p>

<p>  If no tags exist, then all commits are output; if tags exist, then only the most-recent commits are output up to the last identified tag. This behavior can be changed by specifying one or both of the range options (-f|--final-tag and -s|--start-tag).</p>

<p>  You could customize the changelog format via some git config options.</p>

<ul>
<li><p><code>git config changelog.format $format</code> controls the format of each commit. It will be passed as <code>git log --pretty=format:$format</code>. The default value is <code> * %s</code>.</p></li>
<li><p><code>git config changelog.mergeformat $format</code> is like changelog.format but only used when <code>--merges-only</code> is specified. The default value is  <code>* %s%n%w(64,4,4)%b</code>.</p></li>
</ul>


<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;file&gt;</p>

<p>  The name of the output file. By default the new file will be <em>History.md</em> unless an existing changelog is detected in which case the existing file will be updated.</p>

<p>  -a, --all</p>

<p>  Retrieve all commits. Ignores -s|--start-tag/commit and -f|--final-tag options (if set).</p>

<p>  -l, --list</p>

<p>  Show commits in list format (without titles, dates).</p>

<p>  -t, --tag</p>

<p>  Specify a tag label to use for most-recent (untagged) commits.</p>

<p>  -f, --final-tag</p>

<p>  When specifying a range, the newest tag at which point commit retrieval will end. Commits will be returned from the very first commit until the final tag unless a start tag is also specified.</p>

<p>  -s, --start-tag</p>

<p>  When specifying a range, the oldest tag to retrieve commits from. Commits will be returned from the start tag to now unless a final tag is also specified.</p>

<p>  --start-commit</p>

<p>  Like the --start-tag but specify the oldest commit instead of tag. Note that the specified commit will be contained in the changelog.</p>

<p>  -n, --no-merges</p>

<p>  Filters out merge commits (commits with more than 1 parent) from generated changelog.</p>

<p>  -m, --merges-only</p>

<p>  Uses only merge commits (commits with more than 1 parent) for generated changelog. It also changes the default format to include the merge commit messages body, as on github the commits subject line only contains the branch name but no information about the content of the merge.</p>

<p>  -p, --prune-old</p>

<p>  Replace existing changelog entirely with newly generated content, thereby disabling the default behavior of appending the content of any detected changelog to the end of newly generated content.</p>

<p>  -x, --stdout</p>

<p>  Write output to stdout instead of to a new changelog file.</p>

<p>  -h, --help, ?</p>

<p>  Show a help message with basic usage information.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<dl>
<dt>Updating existing file or creating a new <em>History.md</em> file with pretty formatted output:</dt><dd><p></p>

<p>$ git changelog</p></dd>
<dt>Listing commits from the current version:</dt><dd><p></p>

<p>$ git changelog --list</p></dd>
<dt>Listing a range of commits from 2.1.0 to now:</dt><dd><p></p>

<p>$ git changelog --list --start-tag 2.1.0</p></dd>
<dt>Listing a pretty formatted version of the same:</dt><dd><p></p>

<p>$ git changelog --start-tag 2.1.0</p></dd>
<dt>Listing a range of commits from initial commit to 2.1.0:</dt><dd><p></p>

<p>$ git changelog --list --final-tag 2.1.0</p></dd>
<dt>Listing a pretty formatted range of commits between 0.5.0 and 1.0.0:</dt><dd><p></p>

<p>$ git changelog --start-tag 0.5.0 --final-tag 1.0.0</p></dd>
<dt>Listing a pretty formatted range of commits between 0b97430 and 1.0.0:</dt><dd><p></p>

<p>$ git changelog --start-commit 0b97430 --final-tag 1.0.0</p></dd>
<dt>Specifying a file for output:</dt><dd><p></p>

<p>$ git changelog ChangeLog.md</p></dd>
<dt>And if an existing Changelog exists, replace its contents entirely:</dt><dd><p></p>

<p>$ git changelog --prune-old</p></dd>
</dl>


<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Mark Eissler &lt;<a href="&#x6d;&#97;&#x69;&#x6c;&#x74;&#x6f;&#58;&#x6d;&#x61;&#x72;&#x6b;&#x40;&#x6d;&#105;&#120;&#116;&#117;&#x72;&#46;&#99;&#x6f;&#x6d;" data-bare-link="true">&#109;&#x61;&#114;&#107;&#x40;&#109;&#x69;&#x78;&#116;&#117;&#x72;&#46;&#x63;&#111;&#x6d;</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'>June 2018</li>
    <li class='tr'>git-changelog(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000086000081A40000000000000000000000016627A28D00001075000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-changelog.mdgit-changelog(1) -- Generate a changelog report
===============================================

## SYNOPSIS

`git-changelog` [options] [&lt;file&gt;]<br>
`git-changelog` {-h | --help | ?}

## DESCRIPTION

  Generates a changelog from git(1) tags (annotated or lightweight) and commit messages. Existing changelog files with filenames that begin with _Change_ or _History_ will be identified automatically with a case insensitive match pattern and existing content will be appended to the new output generated--this behavior can be disabled by specifying the prune option (-p|--prune-old). The generated file will be opened in **$EDITOR** when set.

  If no tags exist, then all commits are output; if tags exist, then only the most-recent commits are output up to the last identified tag. This behavior can be changed by specifying one or both of the range options (-f|--final-tag and -s|--start-tag).

  You could customize the changelog format via some git config options.

  * `git config changelog.format $format` controls the format of each commit. It will be passed as `git log --pretty=format:$format`. The default value is `  * %s`.

  * `git config changelog.mergeformat $format` is like changelog.format but only used when `--merges-only` is specified. The default value is  `* %s%n%w(64,4,4)%b`.

## OPTIONS

  &lt;file&gt;

  The name of the output file. By default the new file will be _History.md_ unless an existing changelog is detected in which case the existing file will be updated.

  -a, --all

  Retrieve all commits. Ignores -s|--start-tag/commit and -f|--final-tag options (if set).

  -l, --list

  Show commits in list format (without titles, dates).

  -t, --tag

  Specify a tag label to use for most-recent (untagged) commits.

  -f, --final-tag

  When specifying a range, the newest tag at which point commit retrieval will end. Commits will be returned from the very first commit until the final tag unless a start tag is also specified.

  -s, --start-tag

  When specifying a range, the oldest tag to retrieve commits from. Commits will be returned from the start tag to now unless a final tag is also specified.

  --start-commit

  Like the --start-tag but specify the oldest commit instead of tag. Note that the specified commit will be contained in the changelog.

  -n, --no-merges

  Filters out merge commits (commits with more than 1 parent) from generated changelog.

  -m, --merges-only

  Uses only merge commits (commits with more than 1 parent) for generated changelog. It also changes the default format to include the merge commit messages body, as on github the commits subject line only contains the branch name but no information about the content of the merge.

  -p, --prune-old

  Replace existing changelog entirely with newly generated content, thereby disabling the default behavior of appending the content of any detected changelog to the end of newly generated content.

  -x, --stdout

  Write output to stdout instead of to a new changelog file.

  -h, --help, ?

  Show a help message with basic usage information.

## EXAMPLES

  * Updating existing file or creating a new _History.md_ file with pretty formatted output:

    $ git changelog

  * Listing commits from the current version:

    $ git changelog --list

  * Listing a range of commits from 2.1.0 to now:

    $ git changelog --list --start-tag 2.1.0

  * Listing a pretty formatted version of the same:

    $ git changelog --start-tag 2.1.0

  * Listing a range of commits from initial commit to 2.1.0:

    $ git changelog --list --final-tag 2.1.0

  * Listing a pretty formatted range of commits between 0.5.0 and 1.0.0:

    $ git changelog --start-tag 0.5.0 --final-tag 1.0.0

  * Listing a pretty formatted range of commits between 0b97430 and 1.0.0:

    $ git changelog --start-commit 0b97430 --final-tag 1.0.0

  * Specifying a file for output:

    $ git changelog ChangeLog.md

  * And if an existing Changelog exists, replace its contents entirely:

    $ git changelog --prune-old

## AUTHOR

Written by Mark Eissler &lt;<mark@mixtur.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000087000081A40000000000000000000000016627A28D000003DA000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-clear-soft.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-CLEAR\-SOFT" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-clear\-soft\fR \- Soft clean up a repository
.
.SH "SYNOPSIS"
\fBgit\-clear\-soft\fR
.
.SH "DESCRIPTION"
Clears the repository to a state that it looks as if it was freshly cloned with the current HEAD, however, preserving all changes that are located in files and directories listed in \.gitignore\. It is a git\-reset \-\-hard together with deletion of all untracked files that reside inside the working directory, excluding those in \.gitignore\.
.
.SH "EXAMPLES"
Clears the repo\.
.
.IP "" 4
.
.nf

$ git clear\-soft
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Modified version of script written by Daniel \'grindhold\' Brendle <\fIgrindhold@gmx\.net\fR> by Matiss Treinis <\fImrtreinis@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000088000081A40000000000000000000000016627A28D000012B5000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-clear-soft.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-clear-soft(1) - Soft clean up a repository</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="#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-clear-soft(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-clear-soft(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-clear-soft</code> - <span class="man-whatis">Soft clean up a repository</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-clear-soft</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Clears the repository to a state that it looks as if it was freshly cloned
  with the current HEAD, however, preserving all changes that are located in files and directories listed in .gitignore. It is a git-reset --hard together with
  deletion of all untracked files that reside inside the working directory, excluding those in .gitignore.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Clears the repo.</p>

<pre><code>$ git clear-soft
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Modified version of script written by Daniel 'grindhold' Brendle &lt;<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#111;&#58;&#x67;&#x72;&#x69;&#x6e;&#100;&#x68;&#x6f;&#x6c;&#x64;&#x40;&#x67;&#x6d;&#x78;&#x2e;&#x6e;&#101;&#116;" data-bare-link="true">&#x67;&#x72;&#105;&#x6e;&#x64;&#104;&#x6f;&#108;&#x64;&#64;&#x67;&#109;&#120;&#x2e;&#x6e;&#x65;&#116;</a>&gt; by Matiss Treinis &lt;<a href="&#x6d;&#97;&#105;&#108;&#x74;&#x6f;&#x3a;&#x6d;&#x72;&#116;&#114;&#101;&#x69;&#x6e;&#x69;&#115;&#x40;&#103;&#x6d;&#x61;&#x69;&#108;&#x2e;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#109;&#x72;&#x74;&#x72;&#x65;&#105;&#x6e;&#x69;&#115;&#x40;&#x67;&#x6d;&#97;&#105;&#x6c;&#46;&#99;&#111;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-clear-soft(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000089000081A40000000000000000000000016627A28D00000338000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-clear-soft.mdgit-clear-soft(1) -- Soft clean up a repository
================================================

## SYNOPSIS

`git-clear-soft`

## DESCRIPTION

  Clears the repository to a state that it looks as if it was freshly cloned
  with the current HEAD, however, preserving all changes that are located in files and directories listed in .gitignore. It is a git-reset --hard together with
  deletion of all untracked files that reside inside the working directory, excluding those in .gitignore.

## EXAMPLES

  Clears the repo.

    $ git clear-soft

## AUTHOR

Modified version of script written by Daniel 'grindhold' Brendle &lt;<grindhold@gmx.net>&gt; by Matiss Treinis &lt;<mrtreinis@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000008A000081A40000000000000000000000016627A28D00000413000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-clear.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-CLEAR" "1" "September 2021" "" "Git Extras"
.
.SH "NAME"
\fBgit\-clear\fR \- Rigorously clean up a repository
.
.SH "SYNOPSIS"
\fBgit\-clear\fR
.
.SH "DESCRIPTION"
Clears the repository to a state that it looks as if it was freshly cloned with the current HEAD\. Basically it is a git\-reset \-\-hard together with deletion of all untracked files that reside inside the working directory, including those in \.gitignore\.
.
.SH "OPTIONS"
\-f, \-\-force
.
.P
Force the clean, with no warning to the user
.
.P
\-h, \-\-help, ?
.
.P
Display usage
.
.SH "EXAMPLES"
.
.IP "\(bu" 4
Clears the repo, with user confirmation required\.
.
.IP
$ git clear
.
.IP "\(bu" 4
Clears the repo, without user confirmation\.
.
.IP
$ git clear \-f
.
.IP "" 0
.
.SH "AUTHOR"
Written by Daniel \'grindhold\' Brendle <\fIgrindhold@gmx\.net\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000008B000081A40000000000000000000000016627A28D00001217000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-clear.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-clear(1) - Rigorously clean up a repository</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-clear(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-clear(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-clear</code> - <span class="man-whatis">Rigorously clean up a repository</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-clear</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Clears the repository to a state that it looks as if it was freshly cloned
  with the current HEAD. Basically it is a git-reset --hard together with
  deletion of all untracked files that reside inside the working directory, including those in .gitignore.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -f, --force</p>

<p>  Force the clean, with no warning to the user</p>

<p>  -h, --help, ?</p>

<p>  Display usage</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<ul>
<li><p>Clears the repo, with user confirmation required.</p>

<p>$ git clear</p></li>
<li><p>Clears the repo, without user confirmation.</p>

<p>$ git clear -f</p></li>
</ul>


<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Daniel 'grindhold' Brendle &lt;<a href="&#x6d;&#97;&#x69;&#108;&#x74;&#x6f;&#x3a;&#103;&#x72;&#x69;&#x6e;&#x64;&#104;&#x6f;&#x6c;&#x64;&#64;&#103;&#109;&#x78;&#46;&#x6e;&#101;&#116;" data-bare-link="true">&#x67;&#x72;&#105;&#x6e;&#100;&#104;&#111;&#x6c;&#100;&#64;&#103;&#109;&#x78;&#x2e;&#110;&#101;&#116;</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'>September 2021</li>
    <li class='tr'>git-clear(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000008C000081A40000000000000000000000016627A28D00000363000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-clear.mdgit-clear(1) -- Rigorously clean up a repository
================================================

## SYNOPSIS

`git-clear`

## DESCRIPTION

  Clears the repository to a state that it looks as if it was freshly cloned
  with the current HEAD. Basically it is a git-reset --hard together with
  deletion of all untracked files that reside inside the working directory, including those in .gitignore.

## OPTIONS

  -f, --force

  Force the clean, with no warning to the user

  -h, --help, ?

  Display usage

## EXAMPLES

  * Clears the repo, with user confirmation required.

    $ git clear

  * Clears the repo, without user confirmation.

    $ git clear -f

## AUTHOR

Written by Daniel 'grindhold' Brendle &lt;<grindhold@gmx.net>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000008D000081A40000000000000000000000016627A28D0000030B000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-coauthor.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-COAUTHOR" "1" "August 2019" "" "Git Extras"
.
.SH "NAME"
\fBgit\-coauthor\fR \- Add a co\-author to the last commit
.
.SH "SYNOPSIS"
\fBgit\-coauthor\fR <co\-author> <co\-author\-email>
.
.SH "DESCRIPTION"
Add a co\-author to the last commit
.
.SH "OPTIONS"
<co\-author>
.
.P
The username of the co\-author you want to add\.
.
.P
<co\-author\-email>
.
.P
The email address of the author you want to add\.
.
.SH "EXAMPLES"
.
.nf

$ git coauthor user user@email\.com
.
.fi
.
.SH "AUTHOR"
Written by Jacob Herrington \fIjacobherringtondeveloper@gmail\.com\fR
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000008E000081A40000000000000000000000016627A28D000011E5000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-coauthor.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-coauthor(1) - Add a co-author to the last 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-coauthor(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-coauthor(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-coauthor</code> - <span class="man-whatis">Add a co-author to the last commit</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-coauthor</code> &lt;co-author&gt; &lt;co-author-email&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Add a co-author to the last commit</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;co-author&gt;</p>

<p>  The username of the co-author you want to add.</p>

<p>  &lt;co-author-email&gt;</p>

<p>  The email address of the author you want to add.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git coauthor user user@email.com
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jacob Herrington <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#97;&#99;&#x6f;&#98;&#104;&#x65;&#x72;&#114;&#105;&#110;&#x67;&#116;&#x6f;&#x6e;&#x64;&#x65;&#x76;&#x65;&#x6c;&#111;&#112;&#x65;&#x72;&#64;&#103;&#109;&#x61;&#105;&#108;&#x2e;&#99;&#111;&#109;" data-bare-link="true">&#x6a;&#97;&#99;&#111;&#98;&#104;&#101;&#114;&#114;&#105;&#x6e;&#x67;&#x74;&#111;&#110;&#100;&#x65;&#118;&#101;&#108;&#111;&#x70;&#101;&#114;&#64;&#103;&#109;&#x61;&#105;&#x6c;&#x2e;&#99;&#x6f;&#x6d;</a></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'>August 2019</li>
    <li class='tr'>git-coauthor(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000008F000081A40000000000000000000000016627A28D00000279000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-coauthor.mdgit-coauthor(1) -- Add a co-author to the last commit
================================

## SYNOPSIS

`git-coauthor` &lt;co-author&gt; &lt;co-author-email&gt;

## DESCRIPTION

  Add a co-author to the last commit

## OPTIONS

  &lt;co-author&gt;

  The username of the co-author you want to add.

  &lt;co-author-email&gt;
  
  The email address of the author you want to add.

## EXAMPLES

    $ git coauthor user user@email.com

## AUTHOR

Written by Jacob Herrington <jacobherringtondeveloper@gmail.com>

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000090000081A40000000000000000000000016627A28D000005F2000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-commits-since.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-COMMITS\-SINCE" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-commits\-since\fR \- Show commit logs since some date
.
.SH "SYNOPSIS"
\fBgit\-commits\-since\fR [<date>]
.
.SH "DESCRIPTION"
List of commits since the given \fIdate\fR\.
.
.SH "OPTIONS"
<date>
.
.P
Show commits more recent than \fIdate\fR\. By default, the command shows the commit logs since "last week"\.
.
.SH "EXAMPLES"
It is really flexible and these are only 3 of the options, go ahead give it a try:
.
.IP "" 4
.
.nf

$ git commits\-since yesterday
\.\.\. commits since yesterday
nickl\- \- Merge branch upstream master\.
nickl\- \- Rebase bolshakov with master
TJ Holowaychuk \- Merge pull request #128 from nickl\-/git\-extras\-html\-hyperlinks
TJ Holowaychuk \- Merge pull request #129 from nickl\-/develop
nickl\- \- Fix #127 git\-ignore won\'t add duplicates\.

$ git commits\-since 3 o clock pm
\.\.\. commits since 3 o clock pm
nickl\- \- Merge branch upstream master\.

$ git commits\-since 2 hour ago
\.\.\. commits since 2 hour ago
nickl\- \- Merge branch upstream master\.
TJ Holowaychuk \- Merge pull request #128 from nickl\-/git\-extras\-html\-hyperlinks
TJ Holowaychuk \- Merge pull request #129 from nickl\-/develop
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000091000081A40000000000000000000000016627A28D000013F5000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-commits-since.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-commits-since(1) - Show commit logs since some date</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-commits-since(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-commits-since(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-commits-since</code> - <span class="man-whatis">Show commit logs since some date</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-commits-since</code> [&lt;date&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  List of commits since the given <em>date</em>.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;date&gt;</p>

<p>  Show commits more recent than <var>date</var>. By default, the command shows the commit logs since "last week".</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  It is really flexible and these are only 3 of the options, go ahead give it a try:</p>

<pre><code>$ git commits-since yesterday
... commits since yesterday
nickl- - Merge branch upstream master.
nickl- - Rebase bolshakov with master
TJ Holowaychuk - Merge pull request #128 from nickl-/git-extras-html-hyperlinks
TJ Holowaychuk - Merge pull request #129 from nickl-/develop
nickl- - Fix #127 git-ignore won't add duplicates.

$ git commits-since 3 o clock pm
... commits since 3 o clock pm
nickl- - Merge branch upstream master.

$ git commits-since 2 hour ago
... commits since 2 hour ago
nickl- - Merge branch upstream master.
TJ Holowaychuk - Merge pull request #128 from nickl-/git-extras-html-hyperlinks
TJ Holowaychuk - Merge pull request #129 from nickl-/develop
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#116;&#x6a;&#x40;&#x76;&#105;&#x73;&#x69;&#x6f;&#110;&#45;&#109;&#x65;&#x64;&#105;&#x61;&#x2e;&#99;&#97;" data-bare-link="true">&#x74;&#106;&#64;&#x76;&#x69;&#115;&#105;&#111;&#x6e;&#x2d;&#x6d;&#x65;&#x64;&#x69;&#97;&#46;&#x63;&#97;</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'>October 2017</li>
    <li class='tr'>git-commits-since(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000092000081A40000000000000000000000016627A28D00000567000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-commits-since.mdgit-commits-since(1) -- Show commit logs since some date
========================================================

## SYNOPSIS

`git-commits-since` [&lt;date&gt;]

## DESCRIPTION

  List of commits since the given _date_.

## OPTIONS

  &lt;date&gt;

  Show commits more recent than <date>. By default, the command shows the commit logs since "last week".

## EXAMPLES

  It is really flexible and these are only 3 of the options, go ahead give it a try:

    $ git commits-since yesterday
    ... commits since yesterday
    nickl- - Merge branch upstream master.
    nickl- - Rebase bolshakov with master
    TJ Holowaychuk - Merge pull request #128 from nickl-/git-extras-html-hyperlinks
    TJ Holowaychuk - Merge pull request #129 from nickl-/develop
    nickl- - Fix #127 git-ignore won't add duplicates.

    $ git commits-since 3 o clock pm
    ... commits since 3 o clock pm
    nickl- - Merge branch upstream master.

    $ git commits-since 2 hour ago
    ... commits since 2 hour ago
    nickl- - Merge branch upstream master.
    TJ Holowaychuk - Merge pull request #128 from nickl-/git-extras-html-hyperlinks
    TJ Holowaychuk - Merge pull request #129 from nickl-/develop


## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000093000081A40000000000000000000000016627A28D000004AA000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-contrib.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-CONTRIB" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-contrib\fR \- Show user\'s contributions
.
.SH "SYNOPSIS"
\fBgit\-contrib\fR [<username>|<email>]
.
.SH "DESCRIPTION"
Output a user\'s contributions to a project, based on the author name or email\. Returns multiple entries if there are more than one match\.
.
.SH "OPTIONS"
<username>
.
.P
The name or email of the user who owns the contributions\.
.
.SH "EXAMPLES"
.
.nf

Searching with a username

$ git contrib visionmedia
visionmedia (18):
  Export STATUS_CODES
  Moved help msg to node\-repl
  Added multiple arg support for sys\.puts(), print(), etc\.
  Fix stack output on socket error
  \.\.\.

Searching with a partial email

$ git contrib tj@
visionmedia (18):
  Export STATUS_CODES
  Moved help msg to node\-repl
  Added multiple arg support for sys\.puts(), print(), etc\.
  Fix stack output on socket error
  \.\.\.
.
.fi
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000094000081A40000000000000000000000016627A28D000012C2000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-contrib.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-contrib(1) - Show user&#39;s contributions</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-contrib(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-contrib(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-contrib</code> - <span class="man-whatis">Show user's contributions</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-contrib</code> [&lt;username&gt;|&lt;email&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Output a user's contributions to a project, based on the author name or email.
  Returns multiple entries if there are more than one match.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;username&gt;</p>

<p>  The name or email of the user who owns the contributions.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>Searching with a username

$ git contrib visionmedia
visionmedia (18):
  Export STATUS_CODES
  Moved help msg to node-repl
  Added multiple arg support for sys.puts(), print(), etc.
  Fix stack output on socket error
  ...

Searching with a partial email

$ git contrib tj@
visionmedia (18):
  Export STATUS_CODES
  Moved help msg to node-repl
  Added multiple arg support for sys.puts(), print(), etc.
  Fix stack output on socket error
  ...
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#116;&#111;&#x3a;&#x74;&#106;&#64;&#x76;&#x69;&#x73;&#x69;&#111;&#x6e;&#45;&#x6d;&#x65;&#x64;&#105;&#x61;&#46;&#x63;&#x61;" data-bare-link="true">&#x74;&#106;&#x40;&#118;&#x69;&#x73;&#x69;&#x6f;&#110;&#45;&#x6d;&#101;&#100;&#x69;&#97;&#46;&#99;&#97;</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'>October 2017</li>
    <li class='tr'>git-contrib(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000095000081A40000000000000000000000016627A28D0000045E000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-contrib.mdgit-contrib(1) -- Show user's contributions
===========================================

## SYNOPSIS

`git-contrib` [&lt;username&gt;|&lt;email&gt;]

## DESCRIPTION

  Output a user's contributions to a project, based on the author name or email.
  Returns multiple entries if there are more than one match.

## OPTIONS

  &lt;username&gt;

  The name or email of the user who owns the contributions.

## EXAMPLES

    Searching with a username

    $ git contrib visionmedia
    visionmedia (18):
      Export STATUS_CODES
      Moved help msg to node-repl
      Added multiple arg support for sys.puts(), print(), etc.
      Fix stack output on socket error
      ...

    Searching with a partial email

    $ git contrib tj@
    visionmedia (18):
      Export STATUS_CODES
      Moved help msg to node-repl
      Added multiple arg support for sys.puts(), print(), etc.
      Fix stack output on socket error
      ...


## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000096000081A40000000000000000000000016627A28D00000434000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-count.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-COUNT" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-count\fR \- Show commit count
.
.SH "SYNOPSIS"
\fBgit\-count\fR [\-\-all]
.
.SH "DESCRIPTION"
Show commit count\.
.
.SH "OPTIONS"
\-\-all
.
.P
Show commit count details\.
.
.SH "EXAMPLES"
Output commit total:
.
.IP "" 4
.
.nf

$ git count

total 1844
.
.fi
.
.IP "" 0
.
.P
Output verbose commit count details:
.
.IP "" 4
.
.nf

$ git count \-\-all

  visionmedia (1285)
  Tj Holowaychuk (430)
  Aaron Heckmann (48)
  csausdev (34)
  ciaranj (26)
  Guillermo Rauch (6)
  Brian McKinney (2)
  Nick Poulden (2)
  Benny Wong (2)
  Justin Lilly (1)
  isaacs (1)
  Adam Sanderson (1)
  Viktor Kelemen (1)
  Gregory Ritter (1)
  Greg Ritter (1)
  ewoudj (1)
  James Herdman (1)
  Matt Colyer (1)

  total 1844
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000097000081A40000000000000000000000016627A28D0000121D000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-count.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-count(1) - Show commit count</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-count(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-count(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-count</code> - <span class="man-whatis">Show commit count</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-count</code> [--all]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Show commit count.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  --all</p>

<p>  Show commit count details.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p> Output commit total:</p>

<pre><code>$ git count

total 1844
</code></pre>

<p> Output verbose commit count details:</p>

<pre><code>$ git count --all

  visionmedia (1285)
  Tj Holowaychuk (430)
  Aaron Heckmann (48)
  csausdev (34)
  ciaranj (26)
  Guillermo Rauch (6)
  Brian McKinney (2)
  Nick Poulden (2)
  Benny Wong (2)
  Justin Lilly (1)
  isaacs (1)
  Adam Sanderson (1)
  Viktor Kelemen (1)
  Gregory Ritter (1)
  Greg Ritter (1)
  ewoudj (1)
  James Herdman (1)
  Matt Colyer (1)

  total 1844
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#116;&#111;&#x3a;&#x74;&#106;&#64;&#x76;&#x69;&#x73;&#x69;&#111;&#x6e;&#45;&#x6d;&#x65;&#x64;&#105;&#x61;&#46;&#x63;&#x61;" data-bare-link="true">&#x74;&#106;&#x40;&#118;&#x69;&#x73;&#x69;&#x6f;&#110;&#45;&#x6d;&#101;&#100;&#x69;&#97;&#46;&#99;&#97;</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'>October 2017</li>
    <li class='tr'>git-count(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000098000081A40000000000000000000000016627A28D0000037B000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-count.mdgit-count(1) -- Show commit count
=================================

## SYNOPSIS

`git-count` [--all]

## DESCRIPTION

  Show commit count.

## OPTIONS

  --all

  Show commit count details.

## EXAMPLES


 Output commit total:

    $ git count

    total 1844

 Output verbose commit count details:

    $ git count --all

	  visionmedia (1285)
	  Tj Holowaychuk (430)
	  Aaron Heckmann (48)
	  csausdev (34)
	  ciaranj (26)
	  Guillermo Rauch (6)
	  Brian McKinney (2)
	  Nick Poulden (2)
	  Benny Wong (2)
	  Justin Lilly (1)
	  isaacs (1)
	  Adam Sanderson (1)
	  Viktor Kelemen (1)
	  Gregory Ritter (1)
	  Greg Ritter (1)
	  ewoudj (1)
	  James Herdman (1)
	  Matt Colyer (1)

	  total 1844

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000099000081A40000000000000000000000016627A28D0000030E000000000000000000000000000000000000001E00000000git-extras-7.2.0/man/git-cp.1.\" generated with Ronn-NG/v0.9.0
.\" http://github.com/apjanke/ronn-ng/tree/0.9.0
.TH "GIT\-CP" "1" "March 2020" "" "Git Extras"
.SH "NAME"
\fBgit\-cp\fR \- Copy a file keeping its history
.SH "SYNOPSIS"
\fBgit\-cp\fR <current_filename> <destination_filename>
.SH "DESCRIPTION"
Copy a file keeping its git history\. This allows merge conflict handling\.
.SH "EXAMPLES"
Copy README into README\.txt
.IP "" 4
.nf
$ git cp README README\.txt
.fi
.IP "" 0
.SH "AUTHOR"
Written by Rémy Hubscher <\fI\%mailto:hubscher\.remy@gmail\.com\fR>
.SH "REPORTING BUGS"
<\fI\%https://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fI\%https://github\.com/tj/git\-extras\fR>
.P
<\fI\%https://stackoverflow\.com/questions/16937359/git\-copy\-file\-preserving\-history/44036771#44036771\fR>
0707010000009A000081A40000000000000000000000016627A28D00001095000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-cp.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' content='text/html;charset=utf8'>
  <meta name='generator' content='Ronn-NG/v0.9.0 (http://github.com/apjanke/ronn-ng/tree/0.9.0)'>
  <title>git-cp(1) - Copy a file keeping its history</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="#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-cp(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-cp(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-cp</code> - <span class="man-whatis">Copy a file keeping its history</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-cp</code> &lt;current_filename&gt; &lt;destination_filename&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Copy a file keeping its git history. This allows merge conflict handling.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Copy README into README.txt</p>

<pre><code>$ git cp README README.txt
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Rémy Hubscher &lt;<a href="mailto:hubscher.remy@gmail.com" data-bare-link="true">hubscher.remy@gmail.com</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>

<p>&lt;<a href="https://stackoverflow.com/questions/16937359/git-copy-file-preserving-history/44036771#44036771" data-bare-link="true">https://stackoverflow.com/questions/16937359/git-copy-file-preserving-history/44036771#44036771</a>&gt;</p>

  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>March 2020</li>
    <li class='tr'>git-cp(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000009B000081A40000000000000000000000016627A28D00000280000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-cp.mdgit-cp(1) -- Copy a file keeping its history
============================================

## SYNOPSIS

`git-cp` &lt;current_filename&gt; &lt;destination_filename&gt;

## DESCRIPTION

Copy a file keeping its git history. This allows merge conflict handling.

## EXAMPLES

  Copy README into README.txt

    $ git cp README README.txt

## AUTHOR

Written by Rémy Hubscher &lt;<hubscher.remy@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;

&lt;<https://stackoverflow.com/questions/16937359/git-copy-file-preserving-history/44036771#44036771>&gt;
0707010000009C000081A40000000000000000000000016627A28D00000B5C000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-create-branch.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-CREATE\-BRANCH" "1" "November 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-create\-branch\fR \- Create branches
.
.SH "SYNOPSIS"
\fBgit\-create\-branch\fR [\-r|\-\-remote [remote_name]] <branchname>
.
.SH "DESCRIPTION"
Creates local branch named <branchname> and optionally sets up a remote tracking branch\.
.
.SH "OPTIONS"
<\-r|\-\-remote [remote_name]>
.
.P
Setup a remote tracking branch using \fBremote_name\fR\. If \fBremote_name\fR is not supplied, use \fBorigin\fR by default\.
.
.P
<\-\-from [start_point]>
.
.P
Setup a start point when the branch created\. If \fB\-\-from\fR is not supplied, use the current branch by default\.
.
.P
<branchname>
.
.P
The name of the branch to create\.
.
.SH "PREFERENCES"
You may save your default preference for the \fBremote\fR option above by using \fBgit config\fR with the key \fBgit\-extras\.create\-branch\.remote\fR whose value will be the default remote when \fB[\-r|\-\-remote]\fR is not specified\.
.
.IP "" 4
.
.nf

$ git config git\-extras\.create\-branch\.remote lucinda
.
.fi
.
.IP "" 0
.
.P
The command line option \fB\-r|\-\-remote\fR will override this preference\.
.
.SH "EXAMPLES"
With no remote preference set:
.
.IP "" 4
.
.nf

# creates local branch \'integration\'
$ git create\-branch integration

# creates local & remote branch \'integration\' (on default \'origin\')
$ git create\-branch \-r integration

# creates local & remote branch \'integration\' on \'upstream\'
$ git create\-branch \-r upstream integration
.
.fi
.
.IP "" 0
.
.P
With \fBgit\-extras\.create\-branch\.remote\fR preference set to \'lucinda\':
.
.IP "" 4
.
.nf

# creates local & remote branch \'integration\' (on preference \'lucinda\')
$ git create\-branch integration

# overriding preference, using default `\-r` of \'origin\'
# creates local & remote branch \'integration\' on default \'origin\'
$ git create\-branch \-r integration

# overriding preference, using specified `\-r` of \'upstream\'
# creates local & remote branch \'integration\' on \'upstream\'
$ git create\-branch \-r upstream integration
.
.fi
.
.IP "" 0
.
.SH "NOTES"
.
.IP "\(bu" 4
As of 4\.4\.0, the default behavior has changed\. \fBgit\-create\-branch\fR will no longer automatically setup a remote tracking branch unless the \fB\-r|\-remote\fR option is specified\. See additional note on preference feature in 4\.8\.0\-dev below\.
.
.IP "\(bu" 4
As of 4\.8\.0\-dev, the \fBremote\fR option can be set via \fBgit config\fR preference as described in \fIPreferences\fR section\.
.
.IP "" 0
.
.SH "AUTHOR"
Written by Jonhnny Weslley <\fIjw@jonhnnyweslley\.net\fR> Modified by Mark Pitman <\fImark\.pitman@gmail\.com\fR>, Brian Murrell <\fIbtmurrell@gmail\.com\fR>\.
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000009D000081A40000000000000000000000016627A28D00001CA5000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-create-branch.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-create-branch(1) - Create branches</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="#PREFERENCES">PREFERENCES</a>
    <a href="#EXAMPLES">EXAMPLES</a>
    <a href="#NOTES">NOTES</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-create-branch(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-create-branch(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-create-branch</code> - <span class="man-whatis">Create branches</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-create-branch</code> [-r|--remote [remote_name]] &lt;branchname&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Creates local branch named &lt;branchname&gt; and optionally sets up a remote tracking branch.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;-r|--remote [remote_name]&gt;</p>

<p>Setup a remote tracking branch using <code>remote_name</code>. If <code>remote_name</code> is not supplied, use <code>origin</code> by default.</p>

<p>&lt;--from [start_point]&gt;</p>

<p>Setup a start point when the branch created. If <code>--from</code> is not supplied, use the current branch by default.</p>

<p>&lt;branchname&gt;</p>

<p>The name of the branch to create.</p>

<h2 id="PREFERENCES">PREFERENCES</h2>

<p>You may save your default preference for the <code>remote</code> option above by using <code>git config</code> with the key <code>git-extras.create-branch.remote</code> whose value will be the default remote when <code>[-r|--remote]</code> is not specified.</p>

<pre><code>$ git config git-extras.create-branch.remote lucinda
</code></pre>

<p>The command line option <code>-r|--remote</code> will override this preference.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>With no remote preference set:</p>

<pre><code># creates local branch 'integration'
$ git create-branch integration

# creates local &amp; remote branch 'integration' (on default 'origin')
$ git create-branch -r integration

# creates local &amp; remote branch 'integration' on 'upstream'
$ git create-branch -r upstream integration
</code></pre>

<p>With <code>git-extras.create-branch.remote</code> preference set to 'lucinda':</p>

<pre><code># creates local &amp; remote branch 'integration' (on preference 'lucinda')
$ git create-branch integration

# overriding preference, using default `-r` of 'origin'
# creates local &amp; remote branch 'integration' on default 'origin'
$ git create-branch -r integration

# overriding preference, using specified `-r` of 'upstream'
# creates local &amp; remote branch 'integration' on 'upstream'
$ git create-branch -r upstream integration
</code></pre>

<h2 id="NOTES">NOTES</h2>

<ul>
<li><p>As of 4.4.0, the default behavior has changed. <code>git-create-branch</code> will no longer automatically setup a remote tracking branch unless the <code>-r|-remote</code> option is specified.  See additional note on preference feature in 4.8.0-dev below.</p></li>
<li><p>As of 4.8.0-dev, the <code>remote</code> option can be set via <code>git config</code> preference as described in <a href="#PREFERENCES" data-bare-link="true">Preferences</a> section.</p></li>
</ul>


<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jonhnny Weslley &lt;<a href="&#x6d;&#x61;&#105;&#x6c;&#116;&#x6f;&#x3a;&#x6a;&#x77;&#64;&#106;&#x6f;&#x6e;&#x68;&#x6e;&#110;&#121;&#x77;&#101;&#115;&#108;&#x6c;&#x65;&#121;&#x2e;&#110;&#x65;&#x74;" data-bare-link="true">&#106;&#x77;&#x40;&#106;&#111;&#x6e;&#x68;&#110;&#110;&#x79;&#x77;&#101;&#x73;&#x6c;&#x6c;&#101;&#x79;&#x2e;&#110;&#x65;&#116;</a>&gt;
Modified by Mark Pitman &lt;<a href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#x3a;&#109;&#x61;&#x72;&#x6b;&#46;&#112;&#x69;&#116;&#x6d;&#97;&#110;&#x40;&#x67;&#109;&#x61;&#105;&#x6c;&#x2e;&#99;&#111;&#109;" data-bare-link="true">&#109;&#x61;&#114;&#x6b;&#46;&#x70;&#x69;&#116;&#x6d;&#97;&#x6e;&#64;&#x67;&#109;&#97;&#x69;&#x6c;&#46;&#99;&#x6f;&#109;</a>&gt;, Brian Murrell &lt;<a href="&#109;&#x61;&#105;&#x6c;&#x74;&#111;&#58;&#98;&#116;&#109;&#117;&#114;&#x72;&#x65;&#108;&#108;&#64;&#x67;&#x6d;&#x61;&#105;&#x6c;&#46;&#99;&#x6f;&#109;" data-bare-link="true">&#x62;&#x74;&#109;&#117;&#114;&#114;&#x65;&#108;&#108;&#x40;&#103;&#109;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#111;&#x6d;</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'>November 2020</li>
    <li class='tr'>git-create-branch(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000009E000081A40000000000000000000000016627A28D000009EF000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-create-branch.mdgit-create-branch(1) -- Create branches
=======================================

## SYNOPSIS

`git-create-branch` [-r|--remote [remote_name]] &lt;branchname&gt;

## DESCRIPTION

Creates local branch named &lt;branchname&gt; and optionally sets up a remote tracking branch.

## OPTIONS

&lt;-r|--remote [remote_name]&gt;

Setup a remote tracking branch using `remote_name`. If `remote_name` is not supplied, use `origin` by default.

&lt;--from [start_point]&gt;

Setup a start point when the branch created. If `--from` is not supplied, use the current branch by default.

&lt;branchname&gt;

The name of the branch to create.

## PREFERENCES

You may save your default preference for the `remote` option above by using `git config` with the key `git-extras.create-branch.remote` whose value will be the default remote when `[-r|--remote]` is not specified.

    $ git config git-extras.create-branch.remote lucinda

The command line option `-r|--remote` will override this preference.

## EXAMPLES

With no remote preference set:

    # creates local branch 'integration'
    $ git create-branch integration

    # creates local & remote branch 'integration' (on default 'origin')
    $ git create-branch -r integration

    # creates local & remote branch 'integration' on 'upstream'
    $ git create-branch -r upstream integration

With `git-extras.create-branch.remote` preference set to 'lucinda':

    # creates local & remote branch 'integration' (on preference 'lucinda')
    $ git create-branch integration

    # overriding preference, using default `-r` of 'origin'
    # creates local & remote branch 'integration' on default 'origin'
    $ git create-branch -r integration

    # overriding preference, using specified `-r` of 'upstream'
    # creates local & remote branch 'integration' on 'upstream'
    $ git create-branch -r upstream integration

## NOTES

* As of 4.4.0, the default behavior has changed. `git-create-branch` will no longer automatically setup a remote tracking branch unless the `-r|-remote` option is specified.  See additional note on preference feature in 4.8.0-dev below.

* As of 4.8.0-dev, the `remote` option can be set via `git config` preference as described in [Preferences](#PREFERENCES) section.

## AUTHOR

Written by Jonhnny Weslley &lt;<jw@jonhnnyweslley.net>&gt;
Modified by Mark Pitman &lt;<mark.pitman@gmail.com>&gt;, Brian Murrell &lt;<btmurrell@gmail.com>&gt;.

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000009F000081A40000000000000000000000016627A28D00000342000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-delete-branch.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-DELETE\-BRANCH" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-delete\-branch\fR \- Delete branches
.
.SH "SYNOPSIS"
\fBgit\-delete\-branch\fR <branchname>
.
.SH "DESCRIPTION"
Deletes local and remote branch named <branchname>\. Note that local deletion fails if the branch is checked out\.
.
.SH "OPTIONS"
<branchname>
.
.P
The name of the branch to delete\. If multiple branches are provided, then they will all be deleted\.
.
.SH "EXAMPLES"
.
.nf

$ git delete\-branch integration
$ git delete\-branch integration bug/1234
.
.fi
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000A0000081A40000000000000000000000016627A28D00001168000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-delete-branch.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-delete-branch(1) - Delete branches</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-delete-branch(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-delete-branch(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-delete-branch</code> - <span class="man-whatis">Delete branches</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-delete-branch</code> &lt;branchname&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Deletes local and remote branch named &lt;branchname&gt;.
  Note that local deletion fails if the branch is checked out.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;branchname&gt;</p>

<p>  The name of the branch to delete.
  If multiple branches are provided, then they will all be deleted.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git delete-branch integration
$ git delete-branch integration bug/1234
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#116;&#111;&#x3a;&#x74;&#106;&#64;&#x76;&#x69;&#x73;&#x69;&#111;&#x6e;&#45;&#x6d;&#x65;&#x64;&#105;&#x61;&#46;&#x63;&#x61;" data-bare-link="true">&#x74;&#106;&#x40;&#118;&#x69;&#x73;&#x69;&#x6f;&#110;&#45;&#x6d;&#101;&#100;&#x69;&#97;&#46;&#99;&#97;</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'>October 2017</li>
    <li class='tr'>git-delete-branch(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000A1000081A40000000000000000000000016627A28D000002BD000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-delete-branch.mdgit-delete-branch(1) -- Delete branches
=======================================

## SYNOPSIS

`git-delete-branch` &lt;branchname&gt;

## DESCRIPTION

  Deletes local and remote branch named &lt;branchname&gt;.
  Note that local deletion fails if the branch is checked out.

## OPTIONS

  &lt;branchname&gt;

  The name of the branch to delete.
  If multiple branches are provided, then they will all be deleted.

## EXAMPLES

    $ git delete-branch integration
    $ git delete-branch integration bug/1234

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000A2000081A40000000000000000000000016627A28D000002C1000000000000000000000000000000000000003200000000git-extras-7.2.0/man/git-delete-merged-branches.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-DELETE\-MERGED\-BRANCHES" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-delete\-merged\-branches\fR \- Delete merged branches
.
.SH "SYNOPSIS"
\fBgit\-delete\-merged\-branches\fR
.
.SH "DESCRIPTION"
Deletes all branches merged in to current HEAD\. Does not delete \fImaster\fR, even if run from a branch that is a descendant of \fImaster\fR\.
.
.SH "EXAMPLES"
.
.nf

$ git delete\-merged\-branches
.
.fi
.
.SH "AUTHOR"
Written by Jesús Espino <\fIjespinog@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000A3000081A40000000000000000000000016627A28D000010BD000000000000000000000000000000000000003500000000git-extras-7.2.0/man/git-delete-merged-branches.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-delete-merged-branches(1) - Delete merged branches</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="#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-delete-merged-branches(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-delete-merged-branches(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-delete-merged-branches</code> - <span class="man-whatis">Delete merged branches</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-delete-merged-branches</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Deletes all branches merged in to current HEAD. Does not delete <em>master</em>, even if run from a branch that is
  a descendant of <em>master</em>.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git delete-merged-branches
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jesús Espino &lt;<a href="&#x6d;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#x65;&#x73;&#x70;&#105;&#110;&#111;&#x67;&#64;&#x67;&#x6d;&#x61;&#x69;&#108;&#x2e;&#x63;&#111;&#109;" data-bare-link="true">&#x6a;&#x65;&#115;&#112;&#105;&#110;&#x6f;&#x67;&#64;&#x67;&#x6d;&#97;&#x69;&#x6c;&#x2e;&#x63;&#111;&#109;</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'>October 2017</li>
    <li class='tr'>git-delete-merged-branches(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000A4000081A40000000000000000000000016627A28D00000224000000000000000000000000000000000000003300000000git-extras-7.2.0/man/git-delete-merged-branches.mdgit-delete-merged-branches(1) -- Delete merged branches
=====================================================

## SYNOPSIS

`git-delete-merged-branches`

## DESCRIPTION

  Deletes all branches merged in to current HEAD. Does not delete *master*, even if run from a branch that is
  a descendant of *master*.

## EXAMPLES

    $ git delete-merged-branches

## AUTHOR

Written by Jesús Espino &lt;<jespinog@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000A5000081A40000000000000000000000016627A28D0000059F000000000000000000000000000000000000003400000000git-extras-7.2.0/man/git-delete-squashed-branches.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-DELETE\-SQUASHED\-BRANCHES" "1" "February 2024" "" "Git Extras"
.
.SH "NAME"
\fBgit\-delete\-squashed\-branches\fR \- Delete branches that were squashed
.
.SH "SYNOPSIS"
\fBgit\-delete\-squashed\-branches\fR [\-\-proceed, \-p] [<branch\-name>]
.
.SH "DESCRIPTION"
Deletes all git branches that have been "squash\-merged" into \fBbranch\-name\fR\.
.
.SH "OPTIONS"
\-\-proceed, \-p
.
.P
Proceed with the next branch even if the current branch cannot be deleted (e\.g\. because it is checked out in a worktree)
.
.P
<branch\-name>
.
.P
The target branch were the "squashed\-merged" branches were committed to\. If no value is given, then the current checked out branch will be used\.
.
.SH "EXAMPLES"
Delete all branches that were "squash\-merged" into the current checked out branch\.
.
.IP "" 4
.
.nf

$ git delete\-squashed\-branches
.
.fi
.
.IP "" 0
.
.P
Delete all branches that were "squash\-merged" into the \fBmain\fR branch\. This will checkout the target branch and leave you on said branch after the command has completed\.
.
.IP "" 4
.
.nf

$ git delete\-squashed\-branches main
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Teddy Katz <\fIteddy\.katz@gmail\.com\fR> and Vladimir Jimenez <\fIme@allejo\.io\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000A6000081A40000000000000000000000016627A28D000014C1000000000000000000000000000000000000003700000000git-extras-7.2.0/man/git-delete-squashed-branches.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-delete-squashed-branches(1) - Delete branches that were squashed</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-delete-squashed-branches(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-delete-squashed-branches(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-delete-squashed-branches</code> - <span class="man-whatis">Delete branches that were squashed</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-delete-squashed-branches</code> [--proceed, -p] [&lt;branch-name&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Deletes all git branches that have been "squash-merged" into <code>branch-name</code>.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  --proceed, -p</p>

<p>  Proceed with the next branch even if the current branch cannot be deleted (e.g. because it is checked out in a worktree)</p>

<p>  &lt;branch-name&gt;</p>

<p>  The target branch were the "squashed-merged" branches were committed to. If no value is given, then the current checked out branch will be used.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Delete all branches that were "squash-merged" into the current checked out branch.</p>

<pre><code>$ git delete-squashed-branches
</code></pre>

<p>  Delete all branches that were "squash-merged" into the <code>main</code> branch. This will checkout the target branch and leave you on said branch after the command has completed.</p>

<pre><code>$ git delete-squashed-branches main
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Teddy Katz &lt;<a href="&#109;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#101;&#100;&#x64;&#x79;&#46;&#x6b;&#97;&#x74;&#122;&#64;&#103;&#109;&#97;&#x69;&#108;&#46;&#99;&#x6f;&#x6d;" data-bare-link="true">&#116;&#x65;&#x64;&#x64;&#x79;&#x2e;&#x6b;&#97;&#116;&#122;&#64;&#103;&#109;&#x61;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#109;</a>&gt; and Vladimir Jimenez &lt;<a href="&#x6d;&#x61;&#105;&#x6c;&#x74;&#x6f;&#58;&#x6d;&#x65;&#x40;&#x61;&#x6c;&#108;&#101;&#106;&#111;&#46;&#105;&#111;" data-bare-link="true">&#109;&#101;&#64;&#x61;&#108;&#x6c;&#x65;&#106;&#111;&#46;&#x69;&#111;</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'>February 2024</li>
    <li class='tr'>git-delete-squashed-branches(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000A7000081A40000000000000000000000016627A28D000004C8000000000000000000000000000000000000003500000000git-extras-7.2.0/man/git-delete-squashed-branches.mdgit-delete-squashed-branches(1) -- Delete branches that were squashed
=====================================================================

## SYNOPSIS

`git-delete-squashed-branches` [--proceed, -p] [&lt;branch-name&gt;]

## DESCRIPTION

Deletes all git branches that have been "squash-merged" into `branch-name`.

## OPTIONS

  --proceed, -p

  Proceed with the next branch even if the current branch cannot be deleted (e.g. because it is checked out in a worktree)

  &lt;branch-name&gt;

  The target branch were the "squashed-merged" branches were committed to. If no value is given, then the current checked out branch will be used.

## EXAMPLES

  Delete all branches that were "squash-merged" into the current checked out branch.

    $ git delete-squashed-branches

  Delete all branches that were "squash-merged" into the `main` branch. This will checkout the target branch and leave you on said branch after the command has completed.

    $ git delete-squashed-branches main

## AUTHOR

Written by Teddy Katz &lt;<teddy.katz@gmail.com>&gt; and Vladimir Jimenez &lt;<me@allejo.io>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000A8000081A40000000000000000000000016627A28D00000264000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-delete-submodule.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-DELETE\-SUBMODULE" "1" "April 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-delete\-submodule\fR \- Delete submodules
.
.SH "SYNOPSIS"
\fBgit\-delete\-submodule\fR <path>
.
.SH "DESCRIPTION"
.
.SH "OPTIONS"
<path>
.
.P
The path of the submodule to delete\.
.
.SH "EXAMPLES"
.
.nf

$ git delete\-submodule lib/foo
.
.fi
.
.SH "AUTHOR"
Written by Jonhnny Weslley <\fIjw@jonhnnyweslley\.net\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000A9000081A40000000000000000000000016627A28D000010AA000000000000000000000000000000000000002F00000000git-extras-7.2.0/man/git-delete-submodule.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-delete-submodule(1) - Delete submodules</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-delete-submodule(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-delete-submodule(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-delete-submodule</code> - <span class="man-whatis">Delete submodules</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-delete-submodule</code> &lt;path&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;path&gt;</p>

<p>  The path of the submodule to delete.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git delete-submodule lib/foo
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jonhnny Weslley &lt;<a href="&#109;&#97;&#x69;&#x6c;&#x74;&#111;&#58;&#106;&#x77;&#64;&#x6a;&#x6f;&#x6e;&#x68;&#110;&#x6e;&#x79;&#119;&#101;&#x73;&#x6c;&#108;&#101;&#121;&#46;&#x6e;&#x65;&#116;" data-bare-link="true">&#x6a;&#x77;&#64;&#x6a;&#x6f;&#x6e;&#x68;&#110;&#110;&#x79;&#119;&#x65;&#x73;&#108;&#108;&#101;&#x79;&#x2e;&#x6e;&#101;&#x74;</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'>April 2018</li>
    <li class='tr'>git-delete-submodule(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000AA000081A40000000000000000000000016627A28D000001D7000000000000000000000000000000000000002D00000000git-extras-7.2.0/man/git-delete-submodule.mdgit-delete-submodule(1) -- Delete submodules
============================================

## SYNOPSIS

`git-delete-submodule` &lt;path&gt;

## DESCRIPTION

## OPTIONS

  &lt;path&gt;

  The path of the submodule to delete.

## EXAMPLES

    $ git delete-submodule lib/foo

## AUTHOR

Written by Jonhnny Weslley &lt;<jw@jonhnnyweslley.net>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000AB000081A40000000000000000000000016627A28D000002D5000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-delete-tag.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-DELETE\-TAG" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-delete\-tag\fR \- Delete tags
.
.SH "SYNOPSIS"
\fBgit\-delete\-tag\fR <tagname>
.
.SH "DESCRIPTION"
Deletes local and remote tag named <tagname>\.
.
.SH "OPTIONS"
<tagname>
.
.P
The name of the tag to delete\. If multiple tags are provided, then they will all be deleted\.
.
.SH "EXAMPLES"
.
.nf

$ git delete\-tag 0\.0\.1
$ git delete\-tag 0\.0\.1 0\.0\.2
.
.fi
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000AC000081A40000000000000000000000016627A28D000010E8000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-delete-tag.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-delete-tag(1) - Delete tags</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-delete-tag(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-delete-tag(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-delete-tag</code> - <span class="man-whatis">Delete tags</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-delete-tag</code> &lt;tagname&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Deletes local and remote tag named &lt;tagname&gt;.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;tagname&gt;</p>

<p>  The name of the tag to delete.
  If multiple tags are provided, then they will all be deleted.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git delete-tag 0.0.1
$ git delete-tag 0.0.1 0.0.2
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#x6d;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#x6a;&#x40;&#x76;&#105;&#115;&#105;&#x6f;&#110;&#x2d;&#x6d;&#x65;&#x64;&#105;&#x61;&#x2e;&#99;&#97;" data-bare-link="true">&#x74;&#x6a;&#64;&#118;&#105;&#115;&#x69;&#x6f;&#110;&#x2d;&#x6d;&#101;&#x64;&#x69;&#x61;&#x2e;&#99;&#97;</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'>October 2017</li>
    <li class='tr'>git-delete-tag(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000AD000081A40000000000000000000000016627A28D00000245000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-delete-tag.mdgit-delete-tag(1) -- Delete tags
================================

## SYNOPSIS

`git-delete-tag` &lt;tagname&gt;

## DESCRIPTION

  Deletes local and remote tag named &lt;tagname&gt;.

## OPTIONS

  &lt;tagname&gt;

  The name of the tag to delete.
  If multiple tags are provided, then they will all be deleted.

## EXAMPLES

    $ git delete-tag 0.0.1
    $ git delete-tag 0.0.1 0.0.2

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000AE000081A40000000000000000000000016627A28D0000034F000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-delta.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-DELTA" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-delta\fR \- Lists changed files
.
.SH "SYNOPSIS"
\fBgit\-delta\fR [<branch>] [<filter>]
.
.SH "DESCRIPTION"
Lists all files that differ from a branch\. By default, lists files that have been added, copied, or modified as compared to the \fBmaster\fR branch\.
.
.SH "EXAMPLES"
Lists all modified and renamed files vs\. \fBmaster\fR:
.
.IP "" 4
.
.nf

$ git delta master MR
.
.fi
.
.IP "" 0
.
.P
Lists all deleted files vs\. \fBexample\fR:
.
.IP "" 4
.
.nf

$ git delta example D
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Ivan Malopinsky <\fIhello@imsky\.co\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000AF000081A40000000000000000000000016627A28D000010F4000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-delta.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-delta(1) - Lists changed files</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="#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-delta(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-delta(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-delta</code> - <span class="man-whatis">Lists changed files</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-delta</code> [&lt;branch&gt;] [&lt;filter&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Lists all files that differ from a branch. By default, lists files that have been added, copied, or modified as compared to the <code>master</code> branch.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Lists all modified and renamed files vs. <code>master</code>:</p>

<pre><code>$ git delta master MR
</code></pre>

<p>  Lists all deleted files vs. <code>example</code>:</p>

<pre><code>$ git delta example D
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Ivan Malopinsky &lt;<a href="&#109;&#97;&#x69;&#108;&#x74;&#x6f;&#58;&#104;&#x65;&#x6c;&#x6c;&#x6f;&#64;&#x69;&#x6d;&#x73;&#x6b;&#x79;&#46;&#99;&#x6f;" data-bare-link="true">&#x68;&#x65;&#x6c;&#x6c;&#x6f;&#64;&#x69;&#x6d;&#115;&#x6b;&#x79;&#x2e;&#99;&#111;</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'>October 2017</li>
    <li class='tr'>git-delta(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000B0000081A40000000000000000000000016627A28D00000288000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-delta.mdgit-delta(1) -- Lists changed files
===================================

## SYNOPSIS

`git-delta` [&lt;branch&gt;] [&lt;filter&gt;]

## DESCRIPTION

Lists all files that differ from a branch. By default, lists files that have been added, copied, or modified as compared to the `master` branch.

## EXAMPLES

  Lists all modified and renamed files vs. `master`:

    $ git delta master MR

  Lists all deleted files vs. `example`:

    $ git delta example D

## AUTHOR

Written by Ivan Malopinsky &lt;<hello@imsky.co>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000B1000081A40000000000000000000000016627A28D00000E82000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-effort.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-EFFORT" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-effort\fR \- Show effort statistics on file(s)
.
.SH "SYNOPSIS"
\fBgit\-effort\fR [\-\-above <value>] [<path>\.\.\.] [\-\- [<log options>\.\.\.]]
.
.SH "DESCRIPTION"
Shows effort statistics about files in the repository\.
.
.P
Display includes:
.
.br
\- Commits: number of commits per file \- highlighting files with most activity\.
.
.br
\- Active days: total number of days which contributed modifications to this file\.
.
.SH "OPTIONS"
\-\-above <value>
.
.P
Ignore files with commits <= a value\.
.
.P
<path>\.\.\.
.
.P
Only count commits that touches the given paths\.
.
.P
Note: \fBgit\-effort\fR does not accept revision ranges, but the underlying \fBgit log\fR does (See the examples)\.
.
.P
<log options>\.\.\.
.
.P
Options for \fBgit log\fR\. Note that you must use \fB\-\-\fR to separate options to \fBgit log\fR from options to \fBgit effort\fR\. This makes it possible to only count commits you are interested in\. Not all options are relevant in the context of \fBgit\-effort\fR, but those that are is listed under the "Commit Limiting" section on the \fBgit\-log\fR manpages\.
.
.SH "EXAMPLES"
Note: Output will first appear unsorted, then the screen is cleared and the sorted list is output\. The initial unsorted list is not shown in the examples for brevity\.
.
.P
Displays "effort" statistics:
.
.IP "" 4
.
.nf

$ git effort \-\-above 5

  file                                          commits    active days

  git\-extras                                    26         18
  git\-release                                   13         13
  git\-effort                                    13         2
  git\-ignore                                    11         7
  git\-changelog                                 11         8
  git\-graft                                     9          6
  git\-summary                                   8          6
  git\-delete\-branch                             8          6
  git\-repl                                      7          5


$ git effort \-\-above 5 bin/* \-\- \-\-after="one year ago" \-\-author="Leila Muhtasib"

  file                                          commits    active days

  git\-extras                                    15         12
  git\-release                                   6          4
  git\-effort                                    6          2
  git\-ignore                                    4          4
  git\-changelog                                 3          2
  git\-graft                                     2          2
.
.fi
.
.IP "" 0
.
.P
Showing statistics on directories is also possible:
.
.IP "" 4
.
.nf

$ git effort bin man \-\- \-\-after="one year ago"

  file                                          commits    active days

  bin\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\. 406        232
  man\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\. 118        80
.
.fi
.
.IP "" 0
.
.P
Only count commits in the specified revision range:
.
.P
$ git effort \-\- master\.\.feature
.
.IP "" 4
.
.nf

  file                                          commits    active days

  bin/git\-effort\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\. 3          2
  man/git\-effort\.md\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\. 1          1
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Leila Muhtasib <\fImuhtasib@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000B2000081A40000000000000000000000016627A28D00001C3D000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-effort.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-effort(1) - Show effort statistics on file(s)</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-effort(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-effort(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-effort</code> - <span class="man-whatis">Show effort statistics on file(s)</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-effort</code> [--above &lt;value&gt;]  [&lt;path&gt;...] [-- [&lt;log options&gt;...]]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Shows effort statistics about files in the repository.</p>

<p>  Display includes:<br />
  - Commits: number of commits per file - highlighting files with most activity.<br />
  - Active days: total number of days which contributed modifications to this file.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  --above &lt;value&gt;</p>

<p>  Ignore files with commits &lt;= a value.</p>

<p>  &lt;path&gt;...</p>

<p>  Only count commits that touches the given paths.</p>

<p>  Note: <code>git-effort</code> does not accept revision ranges, but the underlying <code>git log</code> does (See the examples).</p>

<p>  &lt;log options&gt;...</p>

<p>  Options for <code>git log</code>. Note that you must use <code>--</code> to separate options to <code>git log</code>
  from options to <code>git effort</code>.
  This makes it possible to only count commits you are interested in.
  Not all options are relevant in the context of <code>git-effort</code>, but those that are is listed under the "Commit Limiting" section on the <code>git-log</code> manpages.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p> Note: Output will first appear unsorted, then the screen is cleared and the sorted
 list is output. The initial unsorted list is not shown in the examples for brevity.</p>

<p> Displays "effort" statistics:</p>

<pre><code>$ git effort --above 5

  file                                          commits    active days

  git-extras                                    26         18
  git-release                                   13         13
  git-effort                                    13         2
  git-ignore                                    11         7
  git-changelog                                 11         8
  git-graft                                     9          6
  git-summary                                   8          6
  git-delete-branch                             8          6
  git-repl                                      7          5


$ git effort --above 5 bin/* -- --after="one year ago" --author="Leila Muhtasib"

  file                                          commits    active days

  git-extras                                    15         12
  git-release                                   6          4
  git-effort                                    6          2
  git-ignore                                    4          4
  git-changelog                                 3          2
  git-graft                                     2          2
</code></pre>

<p> Showing statistics on directories is also possible:</p>

<pre><code>$ git effort bin man -- --after="one year ago"

  file                                          commits    active days

  bin.......................................... 406        232
  man.......................................... 118        80
</code></pre>

<p> Only count commits in the specified revision range:</p>

<p>   $ git effort -- master..feature</p>

<pre><code>  file                                          commits    active days

  bin/git-effort............................... 3          2
  man/git-effort.md............................ 1          1
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Leila Muhtasib &lt;<a href="&#109;&#97;&#x69;&#108;&#x74;&#x6f;&#58;&#109;&#x75;&#x68;&#x74;&#x61;&#115;&#x69;&#x62;&#x40;&#x67;&#x6d;&#97;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#x6d;&#117;&#x68;&#x74;&#97;&#x73;&#x69;&#x62;&#64;&#103;&#109;&#x61;&#105;&#108;&#46;&#x63;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-effort(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000B3000081A40000000000000000000000016627A28D00000D1C000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-effort.mdgit-effort(1) -- Show effort statistics on file(s)
=================================

## SYNOPSIS

`git-effort` [--above &lt;value&gt;]  [&lt;path&gt;...] [-- [&lt;log options&gt;...]]

## DESCRIPTION

  Shows effort statistics about files in the repository.  

  Display includes:  
  - Commits: number of commits per file - highlighting files with most activity.  
  - Active days: total number of days which contributed modifications to this file.  

## OPTIONS

  --above &lt;value&gt;

  Ignore files with commits &lt;= a value.

  &lt;path&gt;...

  Only count commits that touches the given paths.

  Note: `git-effort` does not accept revision ranges, but the underlying `git log` does (See the examples).  

  &lt;log options&gt;...

  Options for `git log`. Note that you must use `--` to separate options to `git log`
  from options to `git effort`.
  This makes it possible to only count commits you are interested in.
  Not all options are relevant in the context of `git-effort`, but those that are is listed under the "Commit Limiting" section on the `git-log` manpages.

## EXAMPLES

 Note: Output will first appear unsorted, then the screen is cleared and the sorted
 list is output. The initial unsorted list is not shown in the examples for brevity.

 Displays "effort" statistics:

    $ git effort --above 5

      file                                          commits    active days

      git-extras                                    26         18
      git-release                                   13         13
      git-effort                                    13         2
      git-ignore                                    11         7
      git-changelog                                 11         8
      git-graft                                     9          6
      git-summary                                   8          6
      git-delete-branch                             8          6
      git-repl                                      7          5


    $ git effort --above 5 bin/* -- --after="one year ago" --author="Leila Muhtasib"

      file                                          commits    active days

      git-extras                                    15         12
      git-release                                   6          4
      git-effort                                    6          2
      git-ignore                                    4          4
      git-changelog                                 3          2
      git-graft                                     2          2

 Showing statistics on directories is also possible:

    $ git effort bin man -- --after="one year ago"

      file                                          commits    active days

      bin.......................................... 406        232
      man.......................................... 118        80

 Only count commits in the specified revision range:

   $ git effort -- master..feature

      file                                          commits    active days

      bin/git-effort............................... 3          2
      man/git-effort.md............................ 1          1


## AUTHOR

Written by Leila Muhtasib &lt;<muhtasib@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000B4000081A40000000000000000000000016627A28D0000175C000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-extras.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-EXTRAS" "1" "May 2023" "" "Git Extras"
.SH "NAME"
\fBgit\-extras\fR \- Awesome GIT utilities
.SH "SYNOPSIS"
\fBgit\-extras\fR [\-v,\-\-version] [\-h,\-\-help] [update]
.SH "OPTIONS"
\-v, \-\-version
.P
Show git\-extras version number\.
.P
\-h, \-\-help
.P
Show this help\. This option can also be used for any of the extras commands\.
.P
update
.P
Self update\.
.SH "ENVIRONMENT AND CONFIGURATION VARIABLES"
\fBgit config \-\-add git\-extras\.default\-branch $BRANCH\fR
.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
\fBgit\-abort(1)\fR Abort current git operation
.IP "\[ci]" 4
\fBgit\-alias(1)\fR Define, search and show aliases
.IP "\[ci]" 4
\fBgit\-archive\-file(1)\fR Export the current HEAD of the git repository to an archive
.IP "\[ci]" 4
\fBgit\-authors(1)\fR Generate authors report
.IP "\[ci]" 4
\fBgit\-browse\-ci(1)\fR \fIView the web page for the current repository\fR
.IP "\[ci]" 4
\fBgit\-browse(1)\fR \fIView the web page for the current repository\fR
.IP "\[ci]" 4
\fBgit\-brv(1)\fR List branches sorted by their last commit date
.IP "\[ci]" 4
\fBgit\-bulk(1)\fR Run git commands on multiple repositories
.IP "\[ci]" 4
\fBgit\-changelog(1)\fR Generate a changelog report
.IP "\[ci]" 4
\fBgit\-clear\-soft(1)\fR Soft clean up a repository
.IP "\[ci]" 4
\fBgit\-clear(1)\fR Rigorously clean up a repository
.IP "\[ci]" 4
\fBgit\-coauthor(1)\fR Add a co\-author to the last commit
.IP "\[ci]" 4
\fBgit\-commits\-since(1)\fR Show commit logs since some date
.IP "\[ci]" 4
\fBgit\-contrib(1)\fR Show user's contributions
.IP "\[ci]" 4
\fBgit\-count(1)\fR Show commit count
.IP "\[ci]" 4
\fBgit\-cp(1)\fR Copy a file keeping its history
.IP "\[ci]" 4
\fBgit\-create\-branch(1)\fR Create branches
.IP "\[ci]" 4
\fBgit\-delete\-branch(1)\fR Delete branches
.IP "\[ci]" 4
\fBgit\-delete\-merged\-branches(1)\fR Delete merged branches
.IP "\[ci]" 4
\fBgit\-delete\-squashed\-branches(1)\fR Delete branches that were squashed
.IP "\[ci]" 4
\fBgit\-delete\-submodule(1)\fR Delete submodules
.IP "\[ci]" 4
\fBgit\-delete\-tag(1)\fR Delete tags
.IP "\[ci]" 4
\fBgit\-delta(1)\fR Lists changed files
.IP "\[ci]" 4
\fBgit\-effort(1)\fR Show effort statistics on file(s)
.IP "\[ci]" 4
\fBgit\-feature(1)\fR Create/Merge feature branch
.IP "\[ci]" 4
\fBgit\-force\-clone(1)\fR overwrite local repositories with clone
.IP "\[ci]" 4
\fBgit\-fork(1)\fR Fork a repo on github
.IP "\[ci]" 4
\fBgit\-fresh\-branch(1)\fR Create fresh branches
.IP "\[ci]" 4
\fBgit\-get(1)\fR Clone a Git repository under a configured directory
.IP "\[ci]" 4
\fBgit\-gh\-pages(1)\fR Create the GitHub Pages branch
.IP "\[ci]" 4
\fBgit\-graft(1)\fR Merge and destroy a given branch
.IP "\[ci]" 4
\fBgit\-guilt(1)\fR calculate change between two revisions
.IP "\[ci]" 4
\fBgit\-ignore\-io(1)\fR Get sample gitignore file
.IP "\[ci]" 4
\fBgit\-ignore(1)\fR Add \.gitignore patterns
.IP "\[ci]" 4
\fBgit\-info(1)\fR Returns information on current repository
.IP "\[ci]" 4
\fBgit\-local\-commits(1)\fR List local commits
.IP "\[ci]" 4
\fBgit\-lock(1)\fR Lock a file excluded from version control
.IP "\[ci]" 4
\fBgit\-locked(1)\fR ls files that have been locked
.IP "\[ci]" 4
\fBgit\-magic(1)\fR Automate add/commit/push routines
.IP "\[ci]" 4
\fBgit\-merge\-into(1)\fR Merge one branch into another
.IP "\[ci]" 4
\fBgit\-merge\-repo(1)\fR Merge two repo histories
.IP "\[ci]" 4
\fBgit\-missing(1)\fR Show commits missing from another branch
.IP "\[ci]" 4
\fBgit\-mr(1)\fR Checks out a merge request locally
.IP "\[ci]" 4
\fBgit\-obliterate(1)\fR rewrite past commits to remove some files
.IP "\[ci]" 4
\fBgit\-paste(1)\fR Send patches to pastebin for chat conversations
.IP "\[ci]" 4
\fBgit\-pr(1)\fR Checks out a pull request locally
.IP "\[ci]" 4
\fBgit\-psykorebase(1)\fR Rebase a branch with a merge commit
.IP "\[ci]" 4
\fBgit\-pull\-request(1)\fR Create pull request for GitHub project
.IP "\[ci]" 4
\fBgit\-reauthor(1)\fR Rewrite history to change author's identity
.IP "\[ci]" 4
\fBgit\-rebase\-patch(1)\fR Rebases a patch
.IP "\[ci]" 4
\fBgit\-release(1)\fR Commit, tag and push changes to the repository
.IP "\[ci]" 4
\fBgit\-rename\-branch(1)\fR rename local branch and push to remote
.IP "\[ci]" 4
\fBgit\-rename\-remote(1)\fR Rename a remote
.IP "\[ci]" 4
\fBgit\-rename\-tag(1)\fR Rename a tag
.IP "\[ci]" 4
\fBgit\-repl(1)\fR git read\-eval\-print\-loop
.IP "\[ci]" 4
\fBgit\-reset\-file(1)\fR Reset one file
.IP "\[ci]" 4
\fBgit\-root(1)\fR show path of root
.IP "\[ci]" 4
\fBgit\-scp(1)\fR Copy files to SSH compatible \fBgit\-remote\fR
.IP "\[ci]" 4
\fBgit\-sed(1)\fR replace patterns in git\-controlled files
.IP "\[ci]" 4
\fBgit\-setup(1)\fR Set up a git repository
.IP "\[ci]" 4
\fBgit\-show\-merged\-branches(1)\fR Show merged branches
.IP "\[ci]" 4
\fBgit\-show\-tree(1)\fR show branch tree of commit history
.IP "\[ci]" 4
\fBgit\-show\-unmerged\-branches(1)\fR Show unmerged branches
.IP "\[ci]" 4
\fBgit\-squash(1)\fR squash N last changes up to a ref'ed commit
.IP "\[ci]" 4
\fBgit\-stamp(1)\fR Stamp the last commit message
.IP "\[ci]" 4
\fBgit\-standup(1)\fR Recall the commit history
.IP "\[ci]" 4
\fBgit\-summary(1)\fR Show repository summary
.IP "\[ci]" 4
\fBgit\-sync(1)\fR Sync local branch with remote branch
.IP "\[ci]" 4
\fBgit\-touch(1)\fR Touch and add file to the index
.IP "\[ci]" 4
\fBgit\-undo(1)\fR Remove latest commits
.IP "\[ci]" 4
\fBgit\-unlock(1)\fR Unlock a file excluded from version control
.IP "\[ci]" 4
\fBgit\-utimes(1)\fR Change files modification time to their last commit date
.IP "" 0
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000B5000081A40000000000000000000000016627A28D00003B40000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-extras.html<!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)'>
  <title>git-extras(1) - Awesome GIT utilities</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="#OPTIONS">OPTIONS</a>
    <a href="#ENVIRONMENT-AND-CONFIGURATION-VARIABLES">ENVIRONMENT AND CONFIGURATION VARIABLES</a>
    <a href="#COMMANDS">COMMANDS</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-extras(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-extras(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-extras</code> - <span class="man-whatis">Awesome GIT utilities</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-extras</code> [-v,--version] [-h,--help] [update]</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>-v, --version</p>

<p>Show git-extras version number.</p>

<p>-h, --help</p>

<p>Show this help. This option can also be used for any of the extras commands.</p>

<p>update</p>

<p>Self update.</p>

<h2 id="ENVIRONMENT-AND-CONFIGURATION-VARIABLES">ENVIRONMENT AND CONFIGURATION VARIABLES</h2>

<p><code>git config --add git-extras.default-branch $BRANCH</code></p>

<p>Change the default branch to <code>$BRANCH</code>. If <code>git-extras.default-branch</code> isn't set, <code>init.defaultBranch</code> is used instead. If none of them are set it defaults to <code>main</code>.</p>

<h2 id="COMMANDS">COMMANDS</h2>

<ul>
  <li>
<strong><a class="man-ref" href="git-abort.html">git-abort<span class="s">(1)</span></a></strong> Abort current git operation</li>
  <li>
<strong><a class="man-ref" href="git-alias.html">git-alias<span class="s">(1)</span></a></strong> Define, search and show aliases</li>
  <li>
<strong><a class="man-ref" href="git-archive-file.html">git-archive-file<span class="s">(1)</span></a></strong> Export the current HEAD of the git repository to an archive</li>
  <li>
<strong><a class="man-ref" href="git-authors.html">git-authors<span class="s">(1)</span></a></strong> Generate authors report</li>
  <li>
<strong><a class="man-ref" href="git-browse-ci.html">git-browse-ci<span class="s">(1)</span></a></strong> <var>View the web page for the current repository</var>
</li>
  <li>
<strong><a class="man-ref" href="git-browse.html">git-browse<span class="s">(1)</span></a></strong> <var>View the web page for the current repository</var>
</li>
  <li>
<strong><a class="man-ref" href="git-brv.html">git-brv<span class="s">(1)</span></a></strong> List branches sorted by their last commit date</li>
  <li>
<strong><a class="man-ref" href="git-bulk.html">git-bulk<span class="s">(1)</span></a></strong> Run git commands on multiple repositories</li>
  <li>
<strong><a class="man-ref" href="git-changelog.html">git-changelog<span class="s">(1)</span></a></strong> Generate a changelog report</li>
  <li>
<strong><a class="man-ref" href="git-clear-soft.html">git-clear-soft<span class="s">(1)</span></a></strong> Soft clean up a repository</li>
  <li>
<strong><a class="man-ref" href="git-clear.html">git-clear<span class="s">(1)</span></a></strong> Rigorously clean up a repository</li>
  <li>
<strong><a class="man-ref" href="git-coauthor.html">git-coauthor<span class="s">(1)</span></a></strong> Add a co-author to the last commit</li>
  <li>
<strong><a class="man-ref" href="git-commits-since.html">git-commits-since<span class="s">(1)</span></a></strong> Show commit logs since some date</li>
  <li>
<strong><a class="man-ref" href="git-contrib.html">git-contrib<span class="s">(1)</span></a></strong> Show user's contributions</li>
  <li>
<strong><a class="man-ref" href="git-count.html">git-count<span class="s">(1)</span></a></strong> Show commit count</li>
  <li>
<strong><a class="man-ref" href="git-cp.html">git-cp<span class="s">(1)</span></a></strong> Copy a file keeping its history</li>
  <li>
<strong><a class="man-ref" href="git-create-branch.html">git-create-branch<span class="s">(1)</span></a></strong> Create branches</li>
  <li>
<strong><a class="man-ref" href="git-delete-branch.html">git-delete-branch<span class="s">(1)</span></a></strong> Delete branches</li>
  <li>
<strong><a class="man-ref" href="git-delete-merged-branches.html">git-delete-merged-branches<span class="s">(1)</span></a></strong> Delete merged branches</li>
  <li>
<strong><a class="man-ref" href="git-delete-squashed-branches.html">git-delete-squashed-branches<span class="s">(1)</span></a></strong> Delete branches that were squashed</li>
  <li>
<strong><a class="man-ref" href="git-delete-submodule.html">git-delete-submodule<span class="s">(1)</span></a></strong> Delete submodules</li>
  <li>
<strong><a class="man-ref" href="git-delete-tag.html">git-delete-tag<span class="s">(1)</span></a></strong> Delete tags</li>
  <li>
<strong><a class="man-ref" href="git-delta.html">git-delta<span class="s">(1)</span></a></strong> Lists changed files</li>
  <li>
<strong><a class="man-ref" href="git-effort.html">git-effort<span class="s">(1)</span></a></strong> Show effort statistics on file(s)</li>
  <li>
<strong><a class="man-ref" href="git-feature.html">git-feature<span class="s">(1)</span></a></strong> Create/Merge feature branch</li>
  <li>
<strong><a class="man-ref" href="git-force-clone.html">git-force-clone<span class="s">(1)</span></a></strong> overwrite local repositories with clone</li>
  <li>
<strong><a class="man-ref" href="git-fork.html">git-fork<span class="s">(1)</span></a></strong> Fork a repo on github</li>
  <li>
<strong><a class="man-ref" href="git-fresh-branch.html">git-fresh-branch<span class="s">(1)</span></a></strong> Create fresh branches</li>
  <li>
<strong><a class="man-ref" href="git-get.html">git-get<span class="s">(1)</span></a></strong> Clone a Git repository under a configured directory</li>
  <li>
<strong><a class="man-ref" href="git-gh-pages.html">git-gh-pages<span class="s">(1)</span></a></strong> Create the GitHub Pages branch</li>
  <li>
<strong><a class="man-ref" href="git-graft.html">git-graft<span class="s">(1)</span></a></strong> Merge and destroy a given branch</li>
  <li>
<strong><a class="man-ref" href="git-guilt.html">git-guilt<span class="s">(1)</span></a></strong> calculate change between two revisions</li>
  <li>
<strong><a class="man-ref" href="git-ignore-io.html">git-ignore-io<span class="s">(1)</span></a></strong> Get sample gitignore file</li>
  <li>
<strong><a class="man-ref" href="git-ignore.html">git-ignore<span class="s">(1)</span></a></strong> Add .gitignore patterns</li>
  <li>
<strong><a class="man-ref" href="git-info.html">git-info<span class="s">(1)</span></a></strong> Returns information on current repository</li>
  <li>
<strong><a class="man-ref" href="git-local-commits.html">git-local-commits<span class="s">(1)</span></a></strong> List local commits</li>
  <li>
<strong><a class="man-ref" href="git-lock.html">git-lock<span class="s">(1)</span></a></strong> Lock a file excluded from version control</li>
  <li>
<strong><a class="man-ref" href="git-locked.html">git-locked<span class="s">(1)</span></a></strong> ls files that have been locked</li>
  <li>
<strong><a class="man-ref" href="git-magic.html">git-magic<span class="s">(1)</span></a></strong> Automate add/commit/push routines</li>
  <li>
<strong><a class="man-ref" href="git-merge-into.html">git-merge-into<span class="s">(1)</span></a></strong> Merge one branch into another</li>
  <li>
<strong><a class="man-ref" href="git-merge-repo.html">git-merge-repo<span class="s">(1)</span></a></strong> Merge two repo histories</li>
  <li>
<strong><a class="man-ref" href="git-missing.html">git-missing<span class="s">(1)</span></a></strong> Show commits missing from another branch</li>
  <li>
<strong><a class="man-ref" href="git-mr.html">git-mr<span class="s">(1)</span></a></strong> Checks out a merge request locally</li>
  <li>
<strong><a class="man-ref" href="git-obliterate.html">git-obliterate<span class="s">(1)</span></a></strong> rewrite past commits to remove some files</li>
  <li>
<strong><a class="man-ref" href="git-paste.html">git-paste<span class="s">(1)</span></a></strong> Send patches to pastebin for chat conversations</li>
  <li>
<strong><a class="man-ref" href="git-pr.html">git-pr<span class="s">(1)</span></a></strong> Checks out a pull request locally</li>
  <li>
<strong><a class="man-ref" href="git-psykorebase.html">git-psykorebase<span class="s">(1)</span></a></strong> Rebase a branch with a merge commit</li>
  <li>
<strong><a class="man-ref" href="git-pull-request.html">git-pull-request<span class="s">(1)</span></a></strong> Create pull request for GitHub project</li>
  <li>
<strong><a class="man-ref" href="git-reauthor.html">git-reauthor<span class="s">(1)</span></a></strong> Rewrite history to change author's identity</li>
  <li>
<strong><a class="man-ref" href="git-rebase-patch.html">git-rebase-patch<span class="s">(1)</span></a></strong> Rebases a patch</li>
  <li>
<strong><a class="man-ref" href="git-release.html">git-release<span class="s">(1)</span></a></strong> Commit, tag and push changes to the repository</li>
  <li>
<strong><a class="man-ref" href="git-rename-branch.html">git-rename-branch<span class="s">(1)</span></a></strong> rename local branch and push to remote</li>
  <li>
<strong><a class="man-ref" href="git-rename-remote.html">git-rename-remote<span class="s">(1)</span></a></strong> Rename a remote</li>
  <li>
<strong><a class="man-ref" href="git-rename-tag.html">git-rename-tag<span class="s">(1)</span></a></strong> Rename a tag</li>
  <li>
<strong><a class="man-ref" href="git-repl.html">git-repl<span class="s">(1)</span></a></strong> git read-eval-print-loop</li>
  <li>
<strong><a class="man-ref" href="git-reset-file.html">git-reset-file<span class="s">(1)</span></a></strong> Reset one file</li>
  <li>
<strong><a class="man-ref" href="git-root.html">git-root<span class="s">(1)</span></a></strong> show path of root</li>
  <li>
<strong><a class="man-ref" href="git-scp.html">git-scp<span class="s">(1)</span></a></strong> Copy files to SSH compatible <code>git-remote</code>
</li>
  <li>
<strong><a class="man-ref" href="git-sed.html">git-sed<span class="s">(1)</span></a></strong> replace patterns in git-controlled files</li>
  <li>
<strong><a class="man-ref" href="git-setup.html">git-setup<span class="s">(1)</span></a></strong> Set up a git repository</li>
  <li>
<strong><a class="man-ref" href="git-show-merged-branches.html">git-show-merged-branches<span class="s">(1)</span></a></strong> Show merged branches</li>
  <li>
<strong><a class="man-ref" href="git-show-tree.html">git-show-tree<span class="s">(1)</span></a></strong> show branch tree of commit history</li>
  <li>
<strong><a class="man-ref" href="git-show-unmerged-branches.html">git-show-unmerged-branches<span class="s">(1)</span></a></strong> Show unmerged branches</li>
  <li>
<strong><a class="man-ref" href="git-squash.html">git-squash<span class="s">(1)</span></a></strong> squash N last changes up to a ref'ed commit</li>
  <li>
<strong><a class="man-ref" href="git-stamp.html">git-stamp<span class="s">(1)</span></a></strong> Stamp the last commit message</li>
  <li>
<strong><a class="man-ref" href="git-standup.html">git-standup<span class="s">(1)</span></a></strong> Recall the commit history</li>
  <li>
<strong><a class="man-ref" href="git-summary.html">git-summary<span class="s">(1)</span></a></strong> Show repository summary</li>
  <li>
<strong><a class="man-ref" href="git-sync.html">git-sync<span class="s">(1)</span></a></strong> Sync local branch with remote branch</li>
  <li>
<strong><a class="man-ref" href="git-touch.html">git-touch<span class="s">(1)</span></a></strong> Touch and add file to the index</li>
  <li>
<strong><a class="man-ref" href="git-undo.html">git-undo<span class="s">(1)</span></a></strong> Remove latest commits</li>
  <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-utimes.html">git-utimes<span class="s">(1)</span></a></strong> Change files modification time to their last commit date</li>
</ul>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.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 2023</li>
    <li class='tr'>git-extras(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000B6000081A40000000000000000000000016627A28D00001318000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-extras.mdgit-extras(1) -- Awesome GIT utilities
=================================

## SYNOPSIS

`git-extras` [-v,--version] [-h,--help] [update]

## OPTIONS

  -v, --version

  Show git-extras version number.

  -h, --help

  Show this help. This option can also be used for any of the extras commands.

  update

  Self update.

## ENVIRONMENT AND CONFIGURATION VARIABLES

  `git config --add git-extras.default-branch $BRANCH`

  Change the default branch to `$BRANCH`. If `git-extras.default-branch` isn't set, `init.defaultBranch` is used instead. If none of them are set it defaults to `main`.

## COMMANDS

   - **git-abort(1)** Abort current git operation
   - **git-alias(1)** Define, search and show aliases
   - **git-archive-file(1)** Export the current HEAD of the git repository to an archive
   - **git-authors(1)** Generate authors report
   - **git-browse-ci(1)** <View the web page for the current repository>
   - **git-browse(1)** <View the web page for the current repository>
   - **git-brv(1)** List branches sorted by their last commit date
   - **git-bulk(1)** Run git commands on multiple repositories
   - **git-changelog(1)** Generate a changelog report
   - **git-clear-soft(1)** Soft clean up a repository
   - **git-clear(1)** Rigorously clean up a repository
   - **git-coauthor(1)** Add a co-author to the last commit
   - **git-commits-since(1)** Show commit logs since some date
   - **git-contrib(1)** Show user's contributions
   - **git-count(1)** Show commit count
   - **git-cp(1)** Copy a file keeping its history
   - **git-create-branch(1)** Create branches
   - **git-delete-branch(1)** Delete branches
   - **git-delete-merged-branches(1)** Delete merged branches
   - **git-delete-squashed-branches(1)** Delete branches that were squashed
   - **git-delete-submodule(1)** Delete submodules
   - **git-delete-tag(1)** Delete tags
   - **git-delta(1)** Lists changed files
   - **git-effort(1)** Show effort statistics on file(s)
   - **git-feature(1)** Create/Merge feature branch
   - **git-force-clone(1)** overwrite local repositories with clone
   - **git-fork(1)** Fork a repo on github
   - **git-fresh-branch(1)** Create fresh branches
   - **git-get(1)** Clone a Git repository under a configured directory
   - **git-gh-pages(1)** Create the GitHub Pages branch
   - **git-graft(1)** Merge and destroy a given branch
   - **git-guilt(1)** calculate change between two revisions
   - **git-ignore-io(1)** Get sample gitignore file
   - **git-ignore(1)** Add .gitignore patterns
   - **git-info(1)** Returns information on current repository
   - **git-local-commits(1)** List local commits
   - **git-lock(1)** Lock a file excluded from version control
   - **git-locked(1)** ls files that have been locked
   - **git-magic(1)** Automate add/commit/push routines
   - **git-merge-into(1)** Merge one branch into another
   - **git-merge-repo(1)** Merge two repo histories
   - **git-missing(1)** Show commits missing from another branch
   - **git-mr(1)** Checks out a merge request locally
   - **git-obliterate(1)** rewrite past commits to remove some files
   - **git-paste(1)** Send patches to pastebin for chat conversations
   - **git-pr(1)** Checks out a pull request locally
   - **git-psykorebase(1)** Rebase a branch with a merge commit
   - **git-pull-request(1)** Create pull request for GitHub project
   - **git-reauthor(1)** Rewrite history to change author's identity
   - **git-rebase-patch(1)** Rebases a patch
   - **git-release(1)** Commit, tag and push changes to the repository
   - **git-rename-branch(1)** rename local branch and push to remote
   - **git-rename-remote(1)** Rename a remote
   - **git-rename-tag(1)** Rename a tag
   - **git-repl(1)** git read-eval-print-loop
   - **git-reset-file(1)** Reset one file
   - **git-root(1)** show path of root
   - **git-scp(1)** Copy files to SSH compatible `git-remote`
   - **git-sed(1)** replace patterns in git-controlled files
   - **git-setup(1)** Set up a git repository
   - **git-show-merged-branches(1)** Show merged branches
   - **git-show-tree(1)** show branch tree of commit history
   - **git-show-unmerged-branches(1)** Show unmerged branches
   - **git-squash(1)** squash N last changes up to a ref'ed commit
   - **git-stamp(1)** Stamp the last commit message
   - **git-standup(1)** Recall the commit history
   - **git-summary(1)** Show repository summary
   - **git-sync(1)** Sync local branch with remote branch
   - **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-utimes(1)** Change files modification time to their last commit date

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000B7000081A40000000000000000000000016627A28D00001195000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-feature.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-FEATURE" "1" "December 2023" "" "Git Extras"
.
.SH "NAME"
\fBgit\-feature\fR \- Create/Merge feature branch
.
.SH "SYNOPSIS"
\fBgit\-feature\fR [\-a|\-\-alias \fIPREFIX\fR] [\-s|\-\-separator \fISEPARATOR\fR] [\-r|\-\-remote [REMOTE_NAME]] [\-\-from START_POINT] \fINAME\fR\.\.\.
.
.P
\fBgit\-feature\fR [\-a|\-\-alias \fIPREFIX\fR] [\-s|\-\-separator \fISEPARATOR\fR] finish [\-\-squash] \fINAME\fR\.\.\.
.
.SH "DESCRIPTION"
Create or merge the given feature branch\. The feature branch name is made from the \fIPREFIX\fR, the \fISEPARATOR\fR, and the \fINAME\fR joined together\.
.
.P
The default \fIPREFIX\fR is \fBfeature\fR and \fISEPARATOR\fR is \fB/\fR, which can be changed (see OPTIONS and GIT CONFIG for details)\.
.
.P
The branch \fINAME\fR may be specified as multiple words which will be joined with \fB\-\fR\. If the branch name contains the word \fBfinish\fR or is another OPTION, \fB\-\-\fR should be passed to stop OPTION parsing\. See the EXAMPLES for details\.
.
.SH "OPTIONS"
.
.TP
\fB\-a\fR \fIPREFIX\fR, \fB\-\-alias\fR \fIPREFIX\fR:
.
.IP
The branch prefix to use, or \fBfeature\fR if not supplied\.
.
.TP
\fB\-s\fR \fISEPARATOR\fR, \fB\-\-separator\fR \fISEPARATOR\fR:
.
.IP
The separator to use for joining the branch prefix and the branch name, or \fB/\fR if not supplied\.
.
.TP
\fB\-r\fR [REMOTE_NAME], \fB\-\-remote\fR [REMOTE_NAME]:
.
.IP
Setup a remote tracking branch using \fBremote_name\fR\. If \fBremote_name\fR is not supplied, use \fBorigin\fR by default\.
.
.TP
\fB\-\-from\fR START_POINT:
.
.IP
Setup a start point when the branch created\. If \fB\-\-from\fR is not supplied, use the current branch by default\. This option will be ignored when \fBfinish\fRing a branch\.
.
.TP
\fBfinish\fR:
.
.IP
Merge and delete the feature branch\.
.
.TP
\fB\-\-squash\fR:
.
.IP
Run a squash merge when \fBfinish\fRing the feature branch\.
.
.TP
\fINAME\fR:
.
.IP
The name of the feature branch\.
.
.SH "GIT CONFIG"
You can configure the default branch prefix and separator via git config options\.
.
.TP
\fBgit\-extras\.feature\.prefix\fR:
.
.IP
$ git config \-\-global add git\-extras\.feature\.prefix "prefix"
.
.TP
\fBgit\-extras\.feature\.separator\fR:
.
.IP
$ git config \-\-global add git\-extras\.feature\.separator "\-"
.
.SH "EXAMPLES"
.
.TP
Start a new feature:
.
.IP
$ git feature dependencies
.
.br
\&\.\.\.
.
.br
$ (feature/dependencies) git commit \-m "Some changes"
.
.TP
Finish a feature with \-\-no\-ff merge:
.
.IP
$ (feature/dependencies) git checkout master
.
.br
$ git feature finish dependencies
.
.TP
Finish a feature with \-\-squash merge:
.
.IP
$ (feature/dependencies) git checkout master
.
.br
$ git feature finish \-\-squash dependencies
.
.TP
Publish a feature upstream:
.
.IP
$ git feature dependencies \-r upstream
.
.TP
Use custom branch prefix:
.
.IP
$ git alias features "feature \-a features"
.
.br
$ git features dependencies
.
.br
$ (features/dependencies) \.\.\.
.
.br
$ (features/dependencies) git checkout master
.
.br
$ git features finish dependencies
.
.TP
Use custom branch separator:
.
.IP
$ git feature \-s \- dependencies
.
.br
$ (feature\-dependencies) \.\.\.
.
.br
$ (feature\-dependencies) git checkout master
.
.br
$ git feature \-s \- finish dependencies
.
.TP
Use custom branch prefix and separator from git config with multiple words:
.
.IP
$ git config \-\-global \-\-add git\-extras\.feature\.prefix "features"
.
.br
$ git config \-\-global \-\-add git\-extras\.feature\.separator "\."
.
.br
$ git feature dependency tracking
.
.br
$ (features\.dependency\-tracking) \.\.\.
.
.br
$ (features\.dependency\-tracking) git checkout master
.
.br
$ git feature finish dependency tracking
.
.TP
Use a \fBgit\-feature\fR option or the \fBfinish\fR command as part of a branch name:
.
.IP
$ git feature \-\- finish remote
.
.br
\&\.\.\.
.
.br
$ (feature/finish\-remote) git commit \-m "Some changes"
.
.br
$ (feature/finish\-remote) git checkout main
.
.br
$ git feature finish \-\- finish remote
.
.SH "AUTHOR"
Written by Jesús Espino <\fIjespinog@gmail\.com\fR>
.
.br
Modified by Mark Pitman <\fImark\.pitman@gmail\.com\fR>
.
.br
Modified by Carlos Prado <\fIcarlos\.prado@cpradog\.com\fR>
.
.br
Modified by Austin Ziegler <\fIhalostatue@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>, git\-create\-branch(1), git\-delete\-branch(1)
070701000000B8000081A40000000000000000000000016627A28D00002639000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-feature.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-feature(1) - Create/Merge feature branch</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="#GIT-CONFIG">GIT CONFIG</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-feature(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-feature(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-feature</code> - <span class="man-whatis">Create/Merge feature branch</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-feature</code> [-a|--alias <var>PREFIX</var>] [-s|--separator <var>SEPARATOR</var>] [-r|--remote [REMOTE_NAME]] [--from START_POINT] <var>NAME</var>...</p>

<p><code>git-feature</code> [-a|--alias <var>PREFIX</var>] [-s|--separator <var>SEPARATOR</var>] finish [--squash] <var>NAME</var>...</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Create or merge the given feature branch. The feature branch name is made from the <var>PREFIX</var>, the <var>SEPARATOR</var>, and the <var>NAME</var> joined together.</p>

<p>The default <var>PREFIX</var> is <code>feature</code> and <var>SEPARATOR</var> is <code>/</code>, which can be changed (see OPTIONS and GIT CONFIG for details).</p>

<p>The branch <var>NAME</var> may be specified as multiple words which will be joined with <code>-</code>. If the branch name contains the word <code>finish</code> or is another OPTION, <code>--</code> should be passed to stop OPTION parsing. See the EXAMPLES for details.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<dl>
<dt><code>-a</code> <var>PREFIX</var>, <code>--alias</code> <var>PREFIX</var>:</dt><dd><p></p>

<p>The branch prefix to use, or <code>feature</code> if not supplied.</p></dd>
<dt><code>-s</code> <var>SEPARATOR</var>, <code>--separator</code> <var>SEPARATOR</var>:</dt><dd><p></p>

<p>The separator to use for joining the branch prefix and the branch name, or <code>/</code> if not supplied.</p></dd>
<dt><code>-r</code> [REMOTE_NAME], <code>--remote</code> [REMOTE_NAME]:</dt><dd><p></p>

<p>Setup a remote tracking branch using <code>remote_name</code>. If <code>remote_name</code> is not supplied, use <code>origin</code> by default.</p></dd>
<dt><code>--from</code> START_POINT:</dt><dd><p></p>

<p>Setup a start point when the branch created. If <code>--from</code> is not supplied, use the current branch by default. This option will be ignored when <code>finish</code>ing a branch.</p></dd>
<dt class="flush"><code>finish</code>:</dt><dd><p></p>

<p>Merge and delete the feature branch.</p></dd>
<dt><code>--squash</code>:</dt><dd><p></p>

<p>Run a squash merge when <code>finish</code>ing the feature branch.</p></dd>
<dt class="flush"><var>NAME</var>:</dt><dd><p></p>

<p>The name of the feature branch.</p></dd>
</dl>


<h2 id="GIT-CONFIG">GIT CONFIG</h2>

<p>You can configure the default branch prefix and separator via git config options.</p>

<dl>
<dt><code>git-extras.feature.prefix</code>:</dt><dd><p></p>

<p>  $ git config --global add git-extras.feature.prefix "prefix"</p></dd>
<dt><code>git-extras.feature.separator</code>:</dt><dd><p></p>

<p>  $ git config --global add git-extras.feature.separator "-"</p></dd>
</dl>


<h2 id="EXAMPLES">EXAMPLES</h2>

<dl>
<dt>Start a new feature:</dt><dd><p></p>

<p>$ git feature dependencies<br />
...<br />
$ (feature/dependencies) git commit -m "Some changes"</p></dd>
<dt>Finish a feature with --no-ff merge:</dt><dd><p></p>

<p>$ (feature/dependencies) git checkout master<br />
$ git feature finish dependencies</p></dd>
<dt>Finish a feature with --squash merge:</dt><dd><p></p>

<p>$ (feature/dependencies) git checkout master<br />
$ git feature finish --squash dependencies</p></dd>
<dt>Publish a feature upstream:</dt><dd><p></p>

<p>$ git feature dependencies -r upstream</p></dd>
<dt>Use custom branch prefix:</dt><dd><p></p>

<p>$ git alias features "feature -a features"<br />
$ git features dependencies<br />
$ (features/dependencies) ...<br />
$ (features/dependencies) git checkout master<br />
$ git features finish dependencies</p></dd>
<dt>Use custom branch separator:</dt><dd><p></p>

<p>$ git feature -s - dependencies<br />
$ (feature-dependencies) ...<br />
$ (feature-dependencies) git checkout master<br />
$ git feature -s - finish dependencies</p></dd>
<dt>Use custom branch prefix and separator from git config with multiple words:</dt><dd><p></p>

<p>$ git config --global --add git-extras.feature.prefix "features"<br />
$ git config --global --add git-extras.feature.separator "."<br />
$ git feature dependency tracking<br />
$ (features.dependency-tracking) ...<br />
$ (features.dependency-tracking) git checkout master<br />
$ git feature finish dependency tracking</p></dd>
<dt>Use a <code>git-feature</code> option or the <code>finish</code> command as part of a branch name:</dt><dd><p></p>

<p>$ git feature -- finish remote<br />
...<br />
$ (feature/finish-remote) git commit -m "Some changes"<br />
$ (feature/finish-remote) git checkout main<br />
$ git feature finish -- finish remote</p></dd>
</dl>


<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jesús Espino &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#116;&#x6f;&#58;&#106;&#x65;&#x73;&#112;&#x69;&#x6e;&#111;&#x67;&#64;&#103;&#109;&#97;&#105;&#x6c;&#x2e;&#x63;&#111;&#x6d;" data-bare-link="true">&#x6a;&#101;&#x73;&#x70;&#105;&#110;&#x6f;&#x67;&#64;&#103;&#109;&#x61;&#x69;&#108;&#46;&#99;&#111;&#x6d;</a>&gt;<br />
Modified by Mark Pitman &lt;<a href="&#x6d;&#x61;&#x69;&#108;&#x74;&#x6f;&#58;&#x6d;&#97;&#x72;&#107;&#46;&#112;&#x69;&#116;&#x6d;&#97;&#x6e;&#64;&#x67;&#109;&#97;&#105;&#108;&#x2e;&#x63;&#111;&#x6d;" data-bare-link="true">&#x6d;&#x61;&#114;&#107;&#46;&#x70;&#105;&#x74;&#109;&#x61;&#x6e;&#64;&#103;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#99;&#x6f;&#109;</a>&gt;<br />
Modified by Carlos Prado &lt;<a href="&#109;&#x61;&#x69;&#108;&#x74;&#x6f;&#x3a;&#99;&#97;&#114;&#x6c;&#x6f;&#x73;&#x2e;&#x70;&#114;&#97;&#100;&#x6f;&#x40;&#x63;&#x70;&#x72;&#x61;&#100;&#111;&#103;&#46;&#x63;&#x6f;&#109;" data-bare-link="true">&#x63;&#97;&#x72;&#108;&#x6f;&#x73;&#x2e;&#x70;&#x72;&#97;&#100;&#111;&#x40;&#99;&#x70;&#x72;&#97;&#x64;&#111;&#x67;&#x2e;&#99;&#111;&#109;</a>&gt;<br />
Modified by Austin Ziegler &lt;<a href="&#109;&#x61;&#105;&#108;&#116;&#x6f;&#x3a;&#x68;&#97;&#108;&#x6f;&#x73;&#x74;&#x61;&#x74;&#117;&#x65;&#x40;&#103;&#109;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#111;&#109;" data-bare-link="true">&#104;&#97;&#x6c;&#111;&#115;&#116;&#97;&#x74;&#117;&#x65;&#64;&#x67;&#x6d;&#97;&#x69;&#x6c;&#46;&#99;&#111;&#109;</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;, <a class="man-ref" href="git-create-branch.html">git-create-branch<span class="s">(1)</span></a>, <a class="man-ref" href="git-delete-branch.html">git-delete-branch<span class="s">(1)</span></a></p>


  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>December 2023</li>
    <li class='tr'>git-feature(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000B9000081A40000000000000000000000016627A28D00000F37000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-feature.mdgit-feature(1) -- Create/Merge feature branch
========================================================

## SYNOPSIS

`git-feature` [-a|--alias <PREFIX>] [-s|--separator <SEPARATOR>] [-r|--remote [REMOTE_NAME]] [--from START_POINT] <NAME>...

`git-feature` [-a|--alias <PREFIX>] [-s|--separator <SEPARATOR>] finish [--squash] <NAME>...

## DESCRIPTION

Create or merge the given feature branch. The feature branch name is made from the <PREFIX>, the <SEPARATOR>, and the <NAME> joined together.

The default <PREFIX> is `feature` and <SEPARATOR> is `/`, which can be changed (see OPTIONS and GIT CONFIG for details).

The branch <NAME> may be specified as multiple words which will be joined with `-`. If the branch name contains the word `finish` or is another OPTION, `--` should be passed to stop OPTION parsing. See the EXAMPLES for details.

## OPTIONS

- `-a` <PREFIX>, `--alias` <PREFIX>:

  The branch prefix to use, or `feature` if not supplied.

- `-s` <SEPARATOR>, `--separator` <SEPARATOR>:

  The separator to use for joining the branch prefix and the branch name, or `/` if not supplied.

- `-r` [REMOTE_NAME], `--remote` [REMOTE_NAME]:

  Setup a remote tracking branch using `remote_name`. If `remote_name` is not supplied, use `origin` by default.

- `--from` START_POINT:

  Setup a start point when the branch created. If `--from` is not supplied, use the current branch by default. This option will be ignored when `finish`ing a branch.

- `finish`:

  Merge and delete the feature branch.

- `--squash`:

  Run a squash merge when `finish`ing the feature branch.

- <NAME>:

  The name of the feature branch.

## GIT CONFIG

You can configure the default branch prefix and separator via git config options.

- `git-extras.feature.prefix`:

    $ git config --global add git-extras.feature.prefix "prefix"

- `git-extras.feature.separator`:

    $ git config --global add git-extras.feature.separator "-"

## EXAMPLES

- Start a new feature:

  $ git feature dependencies  
  ...  
  $ (feature/dependencies) git commit -m "Some changes"

- Finish a feature with --no-ff merge:

  $ (feature/dependencies) git checkout master  
  $ git feature finish dependencies

- Finish a feature with --squash merge:

  $ (feature/dependencies) git checkout master  
  $ git feature finish --squash dependencies

- Publish a feature upstream:

  $ git feature dependencies -r upstream

- Use custom branch prefix:

  $ git alias features "feature -a features"  
  $ git features dependencies  
  $ (features/dependencies) ...  
  $ (features/dependencies) git checkout master  
  $ git features finish dependencies

- Use custom branch separator:

  $ git feature -s - dependencies  
  $ (feature-dependencies) ...  
  $ (feature-dependencies) git checkout master  
  $ git feature -s - finish dependencies

- Use custom branch prefix and separator from git config with multiple words:

  $ git config --global --add git-extras.feature.prefix "features"  
  $ git config --global --add git-extras.feature.separator "."  
  $ git feature dependency tracking  
  $ (features.dependency-tracking) ...  
  $ (features.dependency-tracking) git checkout master  
  $ git feature finish dependency tracking

- Use a `git-feature` option or the `finish` command as part of a branch name:

  $ git feature -- finish remote  
  ...  
  $ (feature/finish-remote) git commit -m "Some changes"  
  $ (feature/finish-remote) git checkout main  
  $ git feature finish -- finish remote

## AUTHOR

Written by Jesús Espino &lt;<jespinog@gmail.com>&gt;  
Modified by Mark Pitman &lt;<mark.pitman@gmail.com>&gt;  
Modified by Carlos Prado &lt;<carlos.prado@cpradog.com>&gt;  
Modified by Austin Ziegler &lt;<halostatue@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;, git-create-branch(1), git-delete-branch(1)
070701000000BA000081A40000000000000000000000016627A28D000007BE000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-force-clone.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-FORCE\-CLONE" "1" "August 2021" "" "Git Extras"
.SH "NAME"
\fBgit\-force\-clone\fR \- overwrite local repositories with clone
.SH "SYNOPSIS"
\fBforce\-clone \-\-help\fR
.br
\fBforce\-clone {remote_url} {destination_path}\fR
.br
\fBforce\-clone \-\-branch {branch_name} {remote_url} {destination_path}\fR
.SH "DESCRIPTION"
Provides the basic functionality of \fBgit clone\fR, but if the destination git repository already exists it will force\-reset it to resemble a clone of the remote\.
.P
Because it doesn\'t actually delete the directory, it is usually significantly faster than the alternative of deleting the directory and cloning the repository from scratch\.
.P
\fBCAUTION\fR: If the repository exists, this will destroy \fIall\fR local work: changed files will be reset, local branches and other remotes will be removed\.
.SH "PROCESS"
If \fBtarget\-directory\fR doesn\'t exist or isn\'t a git repository then the arguments will simply be passed through to \fBgit clone\fR\.
.P
If \fBtarget\-directory\fR exists and is a git repository then this will:
.IP "\[ci]" 4
Remove all remotes
.IP "\[ci]" 4
Set the origin remote to \fB{remote_url}\fR and fetch the remote
.IP "\[ci]" 4
Discover the default branch, if no branch was specified
.IP "\[ci]" 4
Check out the selected branch
.IP "\[ci]" 4
Delete all other local branches
.IP "" 0
.SH "OPTIONS"
\fB{remote_url}\fR \- The URL for a git remote repository of which to make a clone\. \fB{destination_path}\fR \- A path to the local git repository location to clone into\. \fB\-\-branch {branch_name}\fR \- After cloning, checkout this branch\.
.SH "EXAMPLES"
\fBgit\-force\-clone \-b master git@github\.com:me/repo\.git \./repo_dir\fR
.SH "AUTHOR"
Written by Robin Winslow \fIrobin@robinwinslow\.co\.uk\fR\.
.SH "REPORTING BUGS"
\fIhttps://github\.com/tj/git\-extras/issues\fR
.SH "SEE ALSO"
\fIhttps://github\.com/tj/git\-extras\fR
070701000000BB000081A40000000000000000000000016627A28D0000158F000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-force-clone.html<!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)'>
  <title>git-force-clone(1) - overwrite local repositories with clone</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="#PROCESS">PROCESS</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-force-clone(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-force-clone(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-force-clone</code> - <span class="man-whatis">overwrite local repositories with clone</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>force-clone --help</code><br>
<code>force-clone {remote_url} {destination_path}</code><br>
<code>force-clone --branch {branch_name} {remote_url} {destination_path}</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Provides the basic functionality of <code>git clone</code>, but if the destination git
repository already exists it will force-reset it to resemble a clone of the
remote.</p>

<p>Because it doesn't actually delete the directory, it is usually significantly
faster than the alternative of deleting the directory and cloning the
repository from scratch.</p>

<p><strong>CAUTION</strong>: If the repository exists, this will destroy <em>all</em> local work:
changed files will be reset, local branches and other remotes will be removed.</p>

<h2 id="PROCESS">PROCESS</h2>

<p>If <code>target-directory</code> doesn't exist or isn't a git repository then the
arguments will simply be passed through to <code>git clone</code>.</p>

<p>If <code>target-directory</code> exists and is a git repository then this will:</p>

<ul>
  <li>Remove all remotes</li>
  <li>Set the origin remote to <code>{remote_url}</code> and fetch the remote</li>
  <li>Discover the default branch, if no branch was specified</li>
  <li>Check out the selected branch</li>
  <li>Delete all other local branches</li>
</ul>

<h2 id="OPTIONS">OPTIONS</h2>

<p><code>{remote_url}</code> - The URL for a git remote repository of which to make a clone.
<code>{destination_path}</code> - A path to the local git repository location to clone into.
<code>--branch {branch_name}</code> - After cloning, checkout this branch.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p><code>git-force-clone -b master git@github.com:me/repo.git ./repo_dir</code></p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Robin Winslow <a href="mailto:robin@robinwinslow.co.uk" data-bare-link="true">robin@robinwinslow.co.uk</a>.</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p><a href="https://github.com/tj/git-extras/issues" data-bare-link="true">https://github.com/tj/git-extras/issues</a></p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<p><a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a></p>

  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>August 2021</li>
    <li class='tr'>git-force-clone(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000BC000081A40000000000000000000000016627A28D00000669000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-force-clone.mdgit-force-clone(1) -- overwrite local repositories with clone
===

## SYNOPSIS

`force-clone --help`  
`force-clone {remote_url} {destination_path}`  
`force-clone --branch {branch_name} {remote_url} {destination_path}`  

## DESCRIPTION

Provides the basic functionality of `git clone`, but if the destination git
repository already exists it will force-reset it to resemble a clone of the
remote.

Because it doesn't actually delete the directory, it is usually significantly
faster than the alternative of deleting the directory and cloning the
repository from scratch.

**CAUTION**: If the repository exists, this will destroy *all* local work:
changed files will be reset, local branches and other remotes will be removed.

## PROCESS

If `target-directory` doesn't exist or isn't a git repository then the
arguments will simply be passed through to `git clone`.

If `target-directory` exists and is a git repository then this will:

- Remove all remotes
- Set the origin remote to `{remote_url}` and fetch the remote
- Discover the default branch, if no branch was specified
- Check out the selected branch
- Delete all other local branches

## OPTIONS

`{remote_url}` - The URL for a git remote repository of which to make a clone.
`{destination_path}` - A path to the local git repository location to clone into.
`--branch {branch_name}` - After cloning, checkout this branch.

## EXAMPLES

`git-force-clone -b master git@github.com:me/repo.git ./repo_dir`

## AUTHOR

Written by Robin Winslow <robin@robinwinslow.co.uk>.

## REPORTING BUGS

<https://github.com/tj/git-extras/issues>

## SEE ALSO

<https://github.com/tj/git-extras>
070701000000BD000081A40000000000000000000000016627A28D00000994000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-fork.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-FORK" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-fork\fR \- Fork a repo on github
.
.SH "SYNOPSIS"
\fBgit\-fork\fR [<github\-repo\-url>]
.
.SH "DESCRIPTION"
If a github repo url is given, fork the repo\. Like clone but forks first\.
.
.IP "1." 4
forks the repo on github
.
.IP "2." 4
clones the repo into the current dir
.
.IP "3." 4
adds the original repo as a remote called \fBupstream\fR
.
.IP "" 0
.
.P
If a url is not given and the current dir is a github repo, fork the repo\.
.
.IP "1." 4
forks the current repo
.
.IP "2." 4
rename the \fBorigin\fR remote repo to \fBupstream\fR
.
.IP "3." 4
adds the forked repo as a remote called \fBorigin\fR
.
.IP "" 0
.
.P
Remotes will use ssh if you have it configured with GitHub, if not, https will be used\.
.
Create a fork a project on GitHub via command line\.
.
.P
A personal access token is required for making the API call to create a new fork in GitHub\. API Documentation here \fIhttps://docs\.github\.com/en/rest/reference/repos#forks\fR
.
.P
Make sure the personal access token has the right \fBOAuth\fR scopes for the repo(s)
.
.P
Use \fBgit config \-\-global \-\-add git\-extras\.github\-personal\-access\-token <your\-personal\-access\-token>\fR
.
.P
If using multiple accounts, override the global value in the specific repo using \fBgit config git\-extras\.github\-personal\-access\-token <other\-acc\-personal\-access\-token>\fR
.
.SH "EXAMPLE"
Fork expect\.js:
.
.IP "" 4
.
.nf

$ git fork https://github\.com/LearnBoost/expect\.js
.
.fi
.
.IP "" 0
.
.P
or just:
.
.IP "" 4
.
.nf

$ git fork LearnBoost/expect\.js
.
.fi
.
.IP "" 0
.
.P
Then:
.
.IP "" 4
.
.nf

$ \.\.<forks into your github profile and clones repo locally to expect\.js dir>\.\.\.

$ cd expect\.js && git remote \-v

  origin          git@github\.com:<user>/expect\.js (fetch)
  origin          git@github\.com:<user>/expect\.js (push)
  upstream        git@github\.com:LearnBoost/expect\.js (fetch)
  upstream        git@github\.com:LearnBoost/expect\.js (push)
.
.fi
.
.IP "" 0
.
.P
If the current dir is a clone of expect\.js, this has the same effect:
.
.IP "" 4
.
.nf

$ git fork
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Andrew Griffiths <\fImail@andrewgriffithsonline\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000BE000081A40000000000000000000000016627A28D000017F0000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-fork.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-fork(1) - Fork a repo on github</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="#EXAMPLE">EXAMPLE</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-fork(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-fork(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-fork</code> - <span class="man-whatis">Fork a repo on github</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-fork</code> [&lt;github-repo-url&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  If a github repo url is given, fork the repo. Like clone but forks first.</p>

<ol>
<li>forks the repo on github</li>
<li>clones the repo into the current dir</li>
<li>adds the original repo as a remote called <code>upstream</code></li>
</ol>


<p>  If a url is not given and the current dir is a github repo, fork the repo.</p>

<ol>
<li>forks the current repo</li>
<li>rename the <code>origin</code> remote repo to <code>upstream</code></li>
<li>adds the forked repo as a remote called <code>origin</code></li>
</ol>


<p>  Remotes will use ssh if you have it configured with GitHub, if not, https will be used.</p>

<p>Create a fork of a project on GitHub via command line.</p>

<p>A personal access token is required for making the API call to create a new fork in GitHub. <a href="https://docs.github.com/en/rest/reference/repos#forks">API Documentation here</a></p>

<p>Make sure the personal access token has the right <code>OAuth</code> scopes for the repo(s)</p>

<p>Use <code>git config --global --add git-extras.github-personal-access-token &lt;your-personal-access-token></code></p>

<p>If using multiple accounts, override the global value in the specific repo using <code>git config git-extras.github-personal-access-token &lt;other-acc-personal-access-token></code></p>

<h2 id="EXAMPLE">EXAMPLE</h2>

<p>  Fork expect.js:</p>

<pre><code>$ git fork https://github.com/LearnBoost/expect.js
</code></pre>

<p>  or just:</p>

<pre><code>$ git fork LearnBoost/expect.js
</code></pre>

<p>  Then:</p>

<pre><code>$ ..&lt;forks into your github profile and clones repo locally to expect.js dir&gt;...

$ cd expect.js &amp;&amp; git remote -v

  origin          git@github.com:&lt;user>/expect.js (fetch)
  origin          git@github.com:&lt;user>/expect.js (push)
  upstream        git@github.com:LearnBoost/expect.js (fetch)
  upstream        git@github.com:LearnBoost/expect.js (push)
</code></pre>

<p>  If the current dir is a clone of expect.js, this has the same effect:</p>

<pre><code>$ git fork
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Andrew Griffiths &lt;<a href="&#109;&#97;&#x69;&#x6c;&#116;&#x6f;&#58;&#109;&#97;&#x69;&#x6c;&#64;&#x61;&#x6e;&#x64;&#x72;&#101;&#x77;&#103;&#114;&#x69;&#x66;&#102;&#105;&#116;&#x68;&#115;&#111;&#110;&#108;&#105;&#110;&#101;&#46;&#x63;&#111;&#x6d;" data-bare-link="true">&#109;&#97;&#105;&#x6c;&#x40;&#97;&#110;&#x64;&#114;&#101;&#x77;&#x67;&#114;&#x69;&#102;&#102;&#x69;&#x74;&#104;&#115;&#x6f;&#110;&#x6c;&#x69;&#110;&#x65;&#46;&#99;&#x6f;&#109;</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'>October 2017</li>
    <li class='tr'>git-fork(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000BF000081A40000000000000000000000016627A28D00000815000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-fork.mdgit-fork(1) -- Fork a repo on github
====================================

## SYNOPSIS

`git-fork` [&lt;github-repo-url&gt;]

## DESCRIPTION

  If a github repo url is given, fork the repo. Like clone but forks first.

  1. forks the repo on github
  2. clones the repo into the current dir
  3. adds the original repo as a remote called `upstream`

  If a url is not given and the current dir is a github repo, fork the repo.

  1. forks the current repo
  2. rename the `origin` remote repo to `upstream`
  3. adds the forked repo as a remote called `origin`

  Remotes will use ssh if you have it configured with GitHub, if not, https will be used.

  Create a fork of a project on GitHub via command line.
  
  A personal access token is required for making the API call to create a fork in GitHub. [API Documentation here](https://docs.github.com/en/rest/reference/repos#forks)
  
  Make sure the personal access token has the right `OAuth` scopes for the repo(s)
  
  Use `git config --global --add git-extras.github-personal-access-token <your-personal-access-token>`
  
  If using multiple accounts, override the global value in the specific repo using `git config git-extras.github-personal-access-token <other-acc-personal-access-token>`

## EXAMPLE

  Fork expect.js:

    $ git fork https://github.com/LearnBoost/expect.js

  or just:

    $ git fork LearnBoost/expect.js

  Then:

    $ ..<forks into your github profile and clones repo locally to expect.js dir>...

    $ cd expect.js && git remote -v

      origin          git@github.com:<user>/expect.js (fetch)
      origin          git@github.com:<user>/expect.js (push)
      upstream        git@github.com:LearnBoost/expect.js (fetch)
      upstream        git@github.com:LearnBoost/expect.js (push)

  If the current dir is a clone of expect.js, this has the same effect:

    $ git fork


## AUTHOR

Written by Andrew Griffiths &lt;<mail@andrewgriffithsonline.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000C0000081A40000000000000000000000016627A28D0000028C000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-fresh-branch.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-FRESH\-BRANCH" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-fresh\-branch\fR \- Create fresh branches
.
.SH "SYNOPSIS"
\fBgit\-fresh\-branch\fR <branchname>
.
.SH "DESCRIPTION"
Creates empty local branch named <branchname>\.
.
.SH "OPTIONS"
<branchname>
.
.P
The name of the branch to create\.
.
.SH "EXAMPLES"
.
.nf

$ git fresh\-branch docs
.
.fi
.
.SH "AUTHOR"
Written by Kenneth Reitz <\fIme@kennethreitz\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000C1000081A40000000000000000000000016627A28D000010C2000000000000000000000000000000000000002B00000000git-extras-7.2.0/man/git-fresh-branch.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-fresh-branch(1) - Create fresh branches</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-fresh-branch(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-fresh-branch(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-fresh-branch</code> - <span class="man-whatis">Create fresh branches</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-fresh-branch</code> &lt;branchname&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Creates empty local branch named &lt;branchname&gt;.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;branchname&gt;</p>

<p>  The name of the branch to create.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git fresh-branch docs
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Kenneth Reitz &lt;<a href="&#109;&#97;&#105;&#x6c;&#x74;&#x6f;&#58;&#109;&#x65;&#64;&#107;&#101;&#x6e;&#x6e;&#101;&#x74;&#x68;&#x72;&#x65;&#x69;&#x74;&#x7a;&#46;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#109;&#x65;&#64;&#x6b;&#x65;&#110;&#x6e;&#x65;&#x74;&#104;&#114;&#x65;&#x69;&#116;&#122;&#x2e;&#99;&#x6f;&#109;</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'>October 2017</li>
    <li class='tr'>git-fresh-branch(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000C2000081A40000000000000000000000016627A28D00000209000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-fresh-branch.mdgit-fresh-branch(1) -- Create fresh branches
============================================

## SYNOPSIS

`git-fresh-branch` &lt;branchname&gt;

## DESCRIPTION

  Creates empty local branch named &lt;branchname&gt;.

## OPTIONS

  &lt;branchname&gt;

  The name of the branch to create.

## EXAMPLES

    $ git fresh-branch docs

## AUTHOR

Written by Kenneth Reitz &lt;<me@kennethreitz.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000C3000081A40000000000000000000000016627A28D00000436000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-get.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-GET" "1" "May 2023" "" "Git Extras"
.SH "NAME"
\fBgit\-get\fR \- Clone a Git repository under a directory
.SH "SYNOPSIS"
\fBgit\-get\fR
.SH "DESCRIPTION"
Clones a Git repository under the directory specified by the Git configuration \fBgit\-extras\.get\.clone\-path\fR
.SH "EXAMPLES"
.nf
$ git config \-\-add git\-extras\.get\.clone\-path "$HOME/some\-dir"
$ git get 'https://github\.com/hyperupcall/bake'
Cloning into '/home/<user>/some\-dir/bake'\|\.\|\.\|\.
remote: Enumerating objects: 1199, done\.
remote: Counting objects: 100% (378/378), done\.
remote: Compressing objects: 100% (174/174), done\.
remote: Total 1199 (delta 163), reused 357 (delta 146), pack\-reused 821
Receiving objects: 100% (1199/1199), 3\.05 MiB | 9\.85 MiB/s, done\.
Resolving deltas: 100% (515/515), done\.
$
.fi
.SH "AUTHOR"
Written by Edwin Kofler <\fIedwin@kofler\.dev\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000C4000081A40000000000000000000000016627A28D0000113F000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-get.html<!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)'>
  <title>git-get(1) - Clone a Git repository under a directory</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="#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-get(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-get(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-get</code> - <span class="man-whatis">Clone a Git repository under a directory</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-get</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Clones a Git repository under the directory specified by the Git configuration <code>git-extras.get.clone-path</code></p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git config --add git-extras.get.clone-path "$HOME/some-dir"
$ git get 'https://github.com/hyperupcall/bake'
Cloning into '/home/&lt;user&gt;/some-dir/bake'...
remote: Enumerating objects: 1199, done.
remote: Counting objects: 100% (378/378), done.
remote: Compressing objects: 100% (174/174), done.
remote: Total 1199 (delta 163), reused 357 (delta 146), pack-reused 821
Receiving objects: 100% (1199/1199), 3.05 MiB | 9.85 MiB/s, done.
Resolving deltas: 100% (515/515), done.
$
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Edwin Kofler &lt;<a href="mailto:edwin@kofler.dev" data-bare-link="true">edwin@kofler.dev</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 2023</li>
    <li class='tr'>git-get(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000C5000081A40000000000000000000000016627A28D000003D9000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-get.mdgit-get(1) -- Clone a Git repository under a configured directory
=================================================

## SYNOPSIS

`git-get`

## DESCRIPTION

  Clones a Git repository under the directory specified by the Git configuration `git-extras.get.clone-path`

## EXAMPLES

    $ git config --add git-extras.get.clone-path "$HOME/some-dir"
    $ git get 'https://github.com/hyperupcall/bake'
    Cloning into '/home/<user>/some-dir/bake'...
    remote: Enumerating objects: 1199, done.
    remote: Counting objects: 100% (378/378), done.
    remote: Compressing objects: 100% (174/174), done.
    remote: Total 1199 (delta 163), reused 357 (delta 146), pack-reused 821
    Receiving objects: 100% (1199/1199), 3.05 MiB | 9.85 MiB/s, done.
    Resolving deltas: 100% (515/515), done.
    $

## AUTHOR

Written by Edwin Kofler &lt;<edwin@kofler.dev>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000C6000081A40000000000000000000000016627A28D00000404000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-gh-pages.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-GH\-PAGES" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-gh\-pages\fR \- Create the GitHub Pages branch
.
.SH "SYNOPSIS"
\fBgit\-gh\-pages\fR
.
.SH "DESCRIPTION"
Create the GitHub Pages branch (gh\-pages) with an initial dummy index\.html file\.
.
.SH "EXAMPLES"
.
.nf

$ git gh\-pages
setting up gh\-pages
Removing \.\.\.
[gh\-pages (root\-commit) 94f4b26] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 index\.html
Counting objects: 3, done\.
Writing objects: 100% (3/3), 232 bytes, done\.
Total 3 (delta 0), reused 0 (delta 0)
To git@github\.com:myuser/myrepository\.git
 * [new branch]      gh\-pages \-> gh\-pages
Branch gh\-pages set up to track remote branch gh\-pages from origin\.
complete
$
.
.fi
.
.SH "AUTHOR"
Written by Jesús Espino <\fIjespinog@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000C7000081A40000000000000000000000016627A28D000011CD000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-gh-pages.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-gh-pages(1) - Create the GitHub Pages branch</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="#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-gh-pages(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-gh-pages(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-gh-pages</code> - <span class="man-whatis">Create the GitHub Pages branch</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-gh-pages</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Create the GitHub Pages branch (gh-pages) with an initial dummy index.html file.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git gh-pages
setting up gh-pages
Removing ...
[gh-pages (root-commit) 94f4b26] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 index.html
Counting objects: 3, done.
Writing objects: 100% (3/3), 232 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:myuser/myrepository.git
 * [new branch]      gh-pages -&gt; gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
complete
$
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jesús Espino &lt;<a href="&#x6d;&#x61;&#105;&#x6c;&#x74;&#x6f;&#x3a;&#x6a;&#x65;&#115;&#x70;&#105;&#x6e;&#111;&#x67;&#x40;&#103;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#99;&#111;&#x6d;" data-bare-link="true">&#x6a;&#101;&#x73;&#112;&#105;&#110;&#x6f;&#103;&#64;&#103;&#x6d;&#x61;&#x69;&#108;&#46;&#x63;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-gh-pages(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000C8000081A40000000000000000000000016627A28D0000039E000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-gh-pages.mdgit-gh-pages(1) -- Create the GitHub Pages branch
=================================================

## SYNOPSIS

`git-gh-pages`

## DESCRIPTION

  Create the GitHub Pages branch (gh-pages) with an initial dummy index.html file.

## EXAMPLES

    $ git gh-pages
    setting up gh-pages
    Removing ...
    [gh-pages (root-commit) 94f4b26] Initial commit
     1 file changed, 1 insertion(+)
     create mode 100644 index.html
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 232 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To git@github.com:myuser/myrepository.git
     * [new branch]      gh-pages -> gh-pages
    Branch gh-pages set up to track remote branch gh-pages from origin.
    complete
    $


## AUTHOR

Written by Jesús Espino &lt;<jespinog@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000C9000081A40000000000000000000000016627A28D00000284000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-graft.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-GRAFT" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-graft\fR \- Merge and destroy a given branch
.
.SH "SYNOPSIS"
\fBgit\-graft\fR <src\-branch> <dest\-branch>
.
.SH "DESCRIPTION"
Merge commits from <src\-branch> into <dest\-branch>
.
.SH "OPTIONS"
<src\-branch>
.
.P
<dest\-branch>
.
.SH "EXAMPLES"
.
.nf

$ git graft new_feature dev
.
.fi
.
.SH "AUTHOR"
Written by Kenneth Reitz <\fIme@kennethreitz\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000CA000081A40000000000000000000000016627A28D000010C2000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-graft.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-graft(1) - Merge and destroy a given branch</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-graft(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-graft(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-graft</code> - <span class="man-whatis">Merge and destroy a given branch</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-graft</code> &lt;src-branch&gt; &lt;dest-branch&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Merge commits from &lt;src-branch&gt; into &lt;dest-branch&gt;</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;src-branch&gt;</p>

<p>  &lt;dest-branch&gt;</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git graft new_feature dev
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Kenneth Reitz &lt;<a href="&#109;&#97;&#105;&#x6c;&#x74;&#x6f;&#58;&#109;&#x65;&#64;&#107;&#101;&#x6e;&#x6e;&#101;&#x74;&#x68;&#x72;&#x65;&#x69;&#x74;&#x7a;&#46;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#109;&#x65;&#64;&#x6b;&#x65;&#110;&#x6e;&#x65;&#x74;&#104;&#114;&#x65;&#x69;&#116;&#122;&#x2e;&#99;&#x6f;&#109;</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'>October 2017</li>
    <li class='tr'>git-graft(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000CB000081A40000000000000000000000016627A28D00000214000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-graft.mdgit-graft(1) -- Merge and destroy a given branch
======================================

## SYNOPSIS

`git-graft` &lt;src-branch&gt; &lt;dest-branch&gt;

## DESCRIPTION

  Merge commits from &lt;src-branch&gt; into &lt;dest-branch&gt;

## OPTIONS

  &lt;src-branch&gt;

  &lt;dest-branch&gt;

## EXAMPLES

    $ git graft new_feature dev

## AUTHOR

Written by Kenneth Reitz &lt;<me@kennethreitz.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000CC000081A40000000000000000000000016627A28D0000094C000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-guilt.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-GUILT" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-guilt\fR \- calculate change between two revisions
.
.SH "SYNOPSIS"
\fBgit guilt\fR [<option>]
.
.br
\fBgit guilt\fR [<option>] <since> [<until>]
.
.SH "DESCRIPTION"
In the first form, shows total blame count for files with unstaged changes\.
.
.P
In the second form, calculates the change in blame between two revisions\. If not specified, <until> will default to HEAD\.
.
.SH "OPTIONS"
\-h
.
.P
Output usage information
.
.P
\-e, \-\-email
.
.P
Display author emails instead of names
.
.P
\-w, \-\-ignore\-whitespace
.
.P
Ignore whitespace only changes when attributing blame
.
.P
\-d, \-\-debug
.
.P
Output debug information
.
.SH "Examples"
Find blame on unstaged modified files:
.
.IP "" 4
.
.nf

$ git guilt      (1)
spacewander                   ++++

(1) There is only one modified file and it is not staged\. The four
pluses means that the file has four lines, all contributed by spacewander\.
.
.fi
.
.IP "" 0
.
.P
Find blame delta between two commits:
.
.IP "" 4
.
.nf

$ git guilt HEAD~3 HEAD^
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(115)
Jesse Sipprell                \-
.
.fi
.
.IP "" 0
.
.P
Find blame delta over the last three weeks:
.
.IP "" 4
.
.nf

$ git guilt `git log \-\-until="3 weeks ago" \-\-format="%H" \-n 1`
Paul Schreiber                +++++++++++++++++++++++++++++++++++++++++++++(349)
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(113)
Mark Eissler                  ++++++++++++++++++++++++++
CJ                            +++++
nickl\-                        \-
Jesse Sipprell                \-
Evan Grim                     \-
Ben Parnell                   \-
hemanth\.hm                    \-\-
.
.fi
.
.IP "" 0
.
.P
Since git 1\.8\.5, the above can also be written as:
.
.P
$ git guilt @{3\.weeks\.ago}
.
.P
Find blame delta for a topic branch:
.
.IP "" 4
.
.nf

$ git guilt `git merge\-base master git\-guilt` git\-guilt
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(112)
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by spacewander <\fIspacewanderlzx@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000CD000081A40000000000000000000000016627A28D000017B0000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-guilt.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-guilt(1) - calculate change between two revisions</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-guilt(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-guilt(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-guilt</code> - <span class="man-whatis">calculate change between two revisions</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git guilt</code> [&lt;option&gt;]<br />
<code>git guilt</code> [&lt;option&gt;] &lt;since&gt; [&lt;until&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>In the first form, shows total blame count for files with unstaged changes.</p>

<p>In the second form, calculates the change in blame between two revisions.
If not specified, &lt;until&gt; will default to HEAD.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -h</p>

<p>  Output usage information</p>

<p>  -e, --email</p>

<p>  Display author emails instead of names</p>

<p>  -w, --ignore-whitespace</p>

<p>  Ignore whitespace only changes when attributing blame</p>

<p>  -d, --debug</p>

<p>  Output debug information</p>

<h2 id="Examples">Examples</h2>

<p>Find blame on unstaged modified files:</p>

<pre><code>$ git guilt      (1)
spacewander                   ++++

(1) There is only one modified file and it is not staged. The four
pluses means that the file has four lines, all contributed by spacewander.
</code></pre>

<p>Find blame delta between two commits:</p>

<pre><code>$ git guilt HEAD~3 HEAD^
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(115)
Jesse Sipprell                -
</code></pre>

<p>Find blame delta over the last three weeks:</p>

<pre><code>$ git guilt `git log --until="3 weeks ago" --format="%H" -n 1`
Paul Schreiber                +++++++++++++++++++++++++++++++++++++++++++++(349)
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(113)
Mark Eissler                  ++++++++++++++++++++++++++
CJ                            +++++
nickl-                        -
Jesse Sipprell                -
Evan Grim                     -
Ben Parnell                   -
hemanth.hm                    --
</code></pre>

<p>Since git 1.8.5, the above can also be written as:</p>

<p>  $ git guilt @{3.weeks.ago}</p>

<p>Find blame delta for a topic branch:</p>

<pre><code>$ git guilt `git merge-base master git-guilt` git-guilt 
spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(112)
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by spacewander &lt;<a href="&#x6d;&#x61;&#105;&#x6c;&#x74;&#x6f;&#x3a;&#x73;&#x70;&#97;&#x63;&#101;&#x77;&#97;&#x6e;&#x64;&#101;&#x72;&#x6c;&#x7a;&#x78;&#x40;&#103;&#109;&#x61;&#x69;&#108;&#x2e;&#99;&#111;&#109;" data-bare-link="true">&#x73;&#112;&#97;&#99;&#x65;&#x77;&#x61;&#110;&#100;&#x65;&#x72;&#x6c;&#122;&#120;&#64;&#103;&#109;&#x61;&#x69;&#x6c;&#46;&#99;&#x6f;&#109;</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'>October 2017</li>
    <li class='tr'>git-guilt(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000CE000081A40000000000000000000000016627A28D0000085E000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-guilt.mdgit-guilt(1) -- calculate change between two revisions
========================================

## SYNOPSIS

`git guilt` [&lt;option&gt;]<br>
`git guilt` [&lt;option&gt;] &lt;since&gt; [&lt;until&gt;]

## DESCRIPTION

In the first form, shows total blame count for files with unstaged changes.

In the second form, calculates the change in blame between two revisions.
If not specified, &lt;until&gt; will default to HEAD.

## OPTIONS

  -h

  Output usage information

  -e, --email

  Display author emails instead of names

  -w, --ignore-whitespace

  Ignore whitespace only changes when attributing blame

  -d, --debug

  Output debug information

## Examples

Find blame on unstaged modified files:

    $ git guilt      (1)
    spacewander                   ++++

    (1) There is only one modified file and it is not staged. The four
    pluses means that the file has four lines, all contributed by spacewander.

Find blame delta between two commits:

    $ git guilt HEAD~3 HEAD^
    spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(115)
    Jesse Sipprell                -

Find blame delta over the last three weeks:

    $ git guilt `git log --until="3 weeks ago" --format="%H" -n 1`
    Paul Schreiber                +++++++++++++++++++++++++++++++++++++++++++++(349)
    spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(113)
    Mark Eissler                  ++++++++++++++++++++++++++
    CJ                            +++++
    nickl-                        -
    Jesse Sipprell                -
    Evan Grim                     -
    Ben Parnell                   -
    hemanth.hm                    --

Since git 1.8.5, the above can also be written as:

  $ git guilt @{3.weeks.ago}

Find blame delta for a topic branch:

    $ git guilt `git merge-base master git-guilt` git-guilt 
    spacewander                   +++++++++++++++++++++++++++++++++++++++++++++(112)

## AUTHOR

Written by spacewander &lt;<spacewanderlzx@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000CF000081A40000000000000000000000016627A28D0000094A000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-ignore-io.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-IGNORE\-IO" "1" "January 2023" "" "Git Extras"
.
.SH "NAME"
\fBgit\-ignore\-io\fR \- Get sample gitignore file
.
.SH "SYNOPSIS"
\fBgit ignore\-io\fR [<OPTIONS>]
.
.SH "DESCRIPTION"
Get sample gitignore file from gitignore\.io \fIhttps://www\.toptal\.com/developers/gitignore/\fR
.
.SH "OPTIONS"
<OPTIONS>
.
.P
\-a, \-\-append <types>\.\.\.
.
.br
Append new \.gitignore content to \.gitignore under the current directory
.
.P
\-r, \-\-replace <types>\.\.\.
.
.br
Export new \.gitignore to the current directory (The old one will be replaced)
.
.P
\-l, \-\-list\-in\-table
.
.br
Print available types in table format
.
.P
\-L, \-\-list\-alphabetically
.
.br
Print available types in alphabetical order
.
.P
\-s, \-\-search <word>
.
.br
Search word in available types
.
.P
\-t, \-\-show\-update\-time
.
.br
Show the last modified time of ~/\.gi_list (where the list of available types is stored)
.
.P
\-u, \-\-update\-list
.
.br
Update ~/\.gi_list
.
.SH "EXAMPLES"
Show sample gitignore file for vim
.
.IP "" 4
.
.nf

$ git ignore\-io vim

    # Created by https://www\.toptal\.com/developers/gitignore/api/vim

    ### Vim ###
    [\._]*\.s[a\-w][a\-z]
    [\._]s[a\-w][a\-z]
    *\.un~
    Session\.vim
    \.netrwhist
    *~
.
.fi
.
.IP "" 0
.
.P
Append sample gitignore for Vim and Python to \.gitignore in current directory\.
.
.IP "" 4
.
.nf

$ git ignore\-io \-a vim python
.
.fi
.
.IP "" 0
.
.P
Show all available types
.
.IP "" 4
.
.nf

$ git ignore\-io \-l

    actionscript             ada                      agda                     android                  anjuta
    appceleratortitanium     appcode                  appengine                archives                 archlinuxpackages
    autotools                basercms                 bazel                    bluej                    bower
    bricxcc                  c                        c++                      cakephp                  carthage
    \.\.\.\.\.\.
.
.fi
.
.IP "" 0
.
.P
Search ja in all available types
.
.IP "" 4
.
.nf

$ git ignore\-io \-s ja

    django
    jabref
    java
    ninja
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Lee\-W \fIweilee\.rx@gmail\.com\fR
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000D0000081A40000000000000000000000016627A28D00001787000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-ignore-io.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-ignore-io(1) - Get sample gitignore file</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-ignore-io(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-ignore-io(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-ignore-io</code> - <span class="man-whatis">Get sample gitignore file</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git ignore-io</code> [&lt;OPTIONS&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Get sample gitignore file from <a href="https://www.toptal.com/developers/gitignore/">gitignore.io</a></p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;OPTIONS&gt;</p>

<p>  -a, --append &lt;types&gt;...<br />
  Append new .gitignore content to .gitignore under the current directory</p>

<p>  -r, --replace &lt;types&gt;...<br />
  Export new .gitignore to the current directory (The old one will be replaced)</p>

<p>  -l, --list-in-table<br />
  Print available types in table format</p>

<p>  -L, --list-alphabetically<br />
  Print available types in alphabetical order</p>

<p>  -s, --search &lt;word&gt;<br />
  Search word in available types</p>

<p>  -t, --show-update-time<br />
  Show the last modified time of ~/.gi_list (where the list of available types is stored)</p>

<p>  -u, --update-list<br />
  Update ~/.gi_list</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Show sample gitignore file for vim</p>

<pre><code class="bash">$ git ignore-io vim

    # Created by https://www.toptal.com/developers/gitignore/api/vim

    ### Vim ###
    [._]*.s[a-w][a-z]
    [._]s[a-w][a-z]
    *.un~
    Session.vim
    .netrwhist
    *~
</code></pre>

<p>Append sample gitignore for Vim and Python to .gitignore in current directory.</p>

<pre><code class="bash">$ git ignore-io -a vim python
</code></pre>

<p>Show all available types</p>

<pre><code class="bash">$ git ignore-io -l

    actionscript             ada                      agda                     android                  anjuta
    appceleratortitanium     appcode                  appengine                archives                 archlinuxpackages
    autotools                basercms                 bazel                    bluej                    bower
    bricxcc                  c                        c++                      cakephp                  carthage
    ......
</code></pre>

<p>Search ja in all available types</p>

<pre><code class="bash">$ git ignore-io -s ja

    django
    jabref
    java
    ninja
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Lee-W <a href="&#x6d;&#x61;&#105;&#108;&#116;&#111;&#58;&#119;&#101;&#105;&#108;&#101;&#101;&#x2e;&#114;&#x78;&#64;&#103;&#109;&#x61;&#x69;&#x6c;&#46;&#x63;&#111;&#x6d;" data-bare-link="true">&#x77;&#x65;&#105;&#108;&#x65;&#x65;&#x2e;&#x72;&#x78;&#x40;&#103;&#109;&#x61;&#105;&#108;&#x2e;&#99;&#111;&#x6d;</a></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'>January 2023</li>
    <li class='tr'>git-ignore-io(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000D1000081A40000000000000000000000016627A28D0000081C000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-ignore-io.mdgit-ignore-io(1) -- Get sample gitignore file
================================

## SYNOPSIS

`git ignore-io` [&lt;OPTIONS&gt;]

## DESCRIPTION

Get sample gitignore file from [gitignore.io](https://www.toptal.com/developers/gitignore/)

## OPTIONS

  &lt;OPTIONS&gt;

  -a, --append &lt;types&gt;...  
  Append new .gitignore content to .gitignore under the current directory  

  -r, --replace &lt;types&gt;...  
  Export new .gitignore to the current directory (The old one will be replaced)  

  -l, --list-in-table  
  Print available types in table format  

  -L, --list-alphabetically  
  Print available types in alphabetical order  

  -s, --search &lt;word&gt;  
  Search word in available types  

  -t, --show-update-time  
  Show the last modified time of ~/.gi\_list (where the list of available types is stored)  

  -u, --update-list  
  Update ~/.gi\_list  


## EXAMPLES
Show sample gitignore file for vim  

```bash
$ git ignore-io vim

    # Created by https://www.toptal.com/developers/gitignore/api/vim

    ### Vim ###
    [._]*.s[a-w][a-z]
    [._]s[a-w][a-z]
    *.un~
    Session.vim
    .netrwhist
    *~
```

Append sample gitignore for Vim and Python to .gitignore in current directory.

```bash
$ git ignore-io -a vim python
```

Show all available types

```bash
$ git ignore-io -l

    actionscript             ada                      agda                     android                  anjuta
    appceleratortitanium     appcode                  appengine                archives                 archlinuxpackages
    autotools                basercms                 bazel                    bluej                    bower
    bricxcc                  c                        c++                      cakephp                  carthage
    ......
```

Search ja in all available types

```bash
$ git ignore-io -s ja

    django
    jabref
    java
    ninja
```


## AUTHOR

Written by Lee-W <weilee.rx@gmail.com> 

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000D2000081A40000000000000000000000016627A28D000011BC000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-ignore.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-IGNORE" "1" "April 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-ignore\fR \- Add \.gitignore patterns
.
.SH "SYNOPSIS"
\fBgit\-ignore\fR [<context>] [<pattern> [<pattern>]\.\.\.]
.
.SH "DESCRIPTION"
Adds the given _pattern_s to a \.gitignore file if it doesn\'t already exist\.
.
.SH "OPTIONS"
<context>
.
.P
\-l, \-\-local
.
.P
Sets the context to the \.gitignore file in the current working directory\. (default)
.
.P
\-g, \-\-global
.
.P
Sets the context to the global gitignore file for the current user\.
.
.P
\-p, \-\-private
.
.P
Sets the context to the private exclude file for the repository (\fB\.git/info/exclude\fR)\.
.
.P
<pattern>
.
.P
A space delimited list of patterns to append to the file in context\.
.
.SS "PATTERN FORMAT"
Pattern format as described in the git manual
.
.IP "\(bu" 4
A blank line matches no files, so it can serve as a separator for readability\. To append a blank line use empty quotes ""\.
.
.IP "\(bu" 4
A line starting with # serves as a comment\. For example, "# This is a comment"
.
.IP "\(bu" 4
An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again\. If a negated pattern matches, this will override lower precedence patterns sources\. To use an exclamation ! as command line argument it is best placed between single quotes \'\'\. For example, \'!src\'
.
.IP "\(bu" 4
If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find a match with a directory\. In other words, foo/ will match a directory foo and paths underneath it, but will not match a regular file or a symbolic link foo (this is consistent with the way how pathspec works in general in git)\.
.
.IP "\(bu" 4
If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the \.gitignore file (relative to the top level of the work tree if not from a \.gitignore file)\.
.
.IP "\(bu" 4
Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname\. For example, "Documentation/*\.html" matches "Documentation/git\.html" but not "Documentation/ppc/ppc\.html" or "tools/perf/Documentation/perf\.html"\.
.
.IP "\(bu" 4
A leading slash matches the beginning of the pathname\. For example, "/*\.c" matches "cat\-file\.c" but not "mozilla\-sha1/sha1\.c"\.
.
.IP "" 0
.
.SH "EXAMPLES"
All arguments are optional so calling git\-ignore alone will display first the global then the local gitignore files:
.
.IP "" 4
.
.nf

$ git ignore
Global gitignore: /home/alice/\.gitignore
# Numerous always\-ignore extensions
*\.diff
*\.err
*\.orig
*\.rej
*\.swo
*\.swp
*\.vi
*~
*\.sass\-cache

# OS or Editor folders
\.DS_Store
\.Trashes
\._*
Thumbs\.db
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
Local gitignore: \.gitignore
\.cache
\.project
\.settings
\.tmproj
nbproject
.
.fi
.
.IP "" 0
.
.P
If you only want to see the global context use the \-\-global argument (for local use \-\-local):
.
.IP "" 4
.
.nf

$ git ignore
Global gitignore: /home/alice/\.gitignore
\.DS_Store
\.Trashes
\._*
Thumbs\.db
.
.fi
.
.IP "" 0
.
.P
To quickly append a new pattern to the default/local context simply:
.
.IP "" 4
.
.nf

$ git ignore *\.log
Adding pattern(s) to: \.gitignore
\.\.\. adding \'*\.log\'
.
.fi
.
.IP "" 0
.
.P
You can now configure any patterns without ever using an editor, with a context and pattern arguments: The resulting configuration is also returned for your convenience\.
.
.IP "" 4
.
.nf

$ git ignore \-\-local "" "# Temporary files" *\.tmp "*\.log" tmp/*  "" "# Files I\'d like to keep" \'!work\'  ""
Adding pattern(s) to: \.gitignore
\.\.\. adding \'\'
\.\.\. adding \'# Temporary files\'
\.\.\. adding \'index\.tmp\'
\.\.\. adding \'*\.log\'
\.\.\. adding \'tmp/*\'
\.\.\. adding \'\'
\.\.\. adding \'# Files I\'d like to keep\'
\.\.\. adding \'!work\'
\.\.\. adding \'\'

Local gitignore: \.gitignore

# Temporary files
index\.tmp
*\.log

# Files I\'d like to keep
!work
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR> and Tema Bolshakov <\fItweekane@gmail\.com\fR> and Nick Lombard <\fIgithub@jigsoft\.co\.za\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000D3000081A40000000000000000000000016627A28D000021C8000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-ignore.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-ignore(1) - Add .gitignore patterns</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-ignore(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-ignore(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-ignore</code> - <span class="man-whatis">Add .gitignore patterns</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-ignore</code> [&lt;context&gt;] [&lt;pattern&gt; [&lt;pattern&gt;]...]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Adds the given _pattern_s to a .gitignore file if it doesn't already exist.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;context&gt;</p>

<p>  -l, --local</p>

<p>  Sets the context to the .gitignore file in the current working directory. (default)</p>

<p>  -g, --global</p>

<p>  Sets the context to the global gitignore file for the current user.</p>

<p>  -p, --private</p>

<p>  Sets the context to the private exclude file for the repository (<code>.git/info/exclude</code>).</p>

<p>  &lt;pattern&gt;</p>

<p>  A space delimited list of patterns to append to the file in context.</p>

<h3 id="PATTERN-FORMAT">PATTERN FORMAT</h3>

<p>Pattern format as described in the git manual</p>

<ul>
<li><p>A blank line matches no files, so it can serve as a separator for readability. To append a blank line use empty quotes "".</p></li>
<li><p>A line starting with # serves as a comment. For example, "# This is a comment"</p></li>
<li><p>An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again. If a negated pattern matches, this will override lower precedence patterns sources. To use an exclamation ! as command line argument it is best placed between single quotes ''. For example, '!src'</p></li>
<li><p>If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find a match with a directory. In other words, foo/ will match a directory foo and paths underneath it, but will not match a regular file or a symbolic link foo (this is consistent with the way how pathspec works in general in git).</p></li>
<li><p>If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the top level of the work tree if not from a .gitignore file).</p></li>
<li><p>Otherwise, git treats the pattern as a shell glob suitable for consumption by <span class="man-ref">fnmatch<span class="s">(3)</span></span> with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".</p></li>
<li><p>A leading slash matches the beginning of the pathname. For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".</p></li>
</ul>


<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  All arguments are optional so calling git-ignore alone will display first the global then the local gitignore files:</p>

<pre><code>$ git ignore
Global gitignore: /home/alice/.gitignore
# Numerous always-ignore extensions
*.diff
*.err
*.orig
*.rej
*.swo
*.swp
*.vi
*~
*.sass-cache

# OS or Editor folders
.DS_Store
.Trashes
._*
Thumbs.db
---------------------------------
Local gitignore: .gitignore
.cache
.project
.settings
.tmproj
nbproject
</code></pre>

<p>If you only want to see the global context use the --global argument (for local use --local):</p>

<pre><code>$ git ignore
Global gitignore: /home/alice/.gitignore
.DS_Store
.Trashes
._*
Thumbs.db
</code></pre>

<p>To quickly append a new pattern to the default/local context simply:</p>

<pre><code>$ git ignore *.log
Adding pattern(s) to: .gitignore
... adding '*.log'
</code></pre>

<p>You can now configure any patterns without ever using an editor, with a context and pattern arguments:
The resulting configuration is also returned for your convenience.</p>

<pre><code>$ git ignore --local "" "# Temporary files" *.tmp "*.log" tmp/*  "" "# Files I'd like to keep" '!work'  ""
Adding pattern(s) to: .gitignore
... adding ''
... adding '# Temporary files'
... adding 'index.tmp'
... adding '*.log'
... adding 'tmp/*'
... adding ''
... adding '# Files I'd like to keep'
... adding '!work'
... adding ''

Local gitignore: .gitignore

# Temporary files
index.tmp
*.log

# Files I'd like to keep
!work
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#x6d;&#97;&#105;&#108;&#x74;&#111;&#58;&#116;&#x6a;&#x40;&#x76;&#105;&#115;&#105;&#111;&#110;&#x2d;&#x6d;&#x65;&#100;&#x69;&#97;&#46;&#x63;&#x61;" data-bare-link="true">&#116;&#106;&#x40;&#118;&#x69;&#x73;&#x69;&#x6f;&#110;&#45;&#109;&#101;&#100;&#105;&#97;&#x2e;&#99;&#97;</a>&gt; and Tema Bolshakov &lt;<a href="&#x6d;&#97;&#105;&#x6c;&#116;&#x6f;&#58;&#116;&#x77;&#101;&#101;&#107;&#x61;&#x6e;&#101;&#x40;&#x67;&#x6d;&#97;&#x69;&#108;&#46;&#x63;&#111;&#x6d;" data-bare-link="true">&#x74;&#119;&#x65;&#x65;&#107;&#x61;&#110;&#x65;&#x40;&#103;&#x6d;&#97;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;</a>&gt;
and Nick Lombard &lt;<a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#58;&#x67;&#105;&#116;&#104;&#117;&#x62;&#x40;&#x6a;&#105;&#103;&#x73;&#x6f;&#x66;&#116;&#46;&#x63;&#x6f;&#x2e;&#x7a;&#97;" data-bare-link="true">&#103;&#105;&#116;&#104;&#x75;&#98;&#x40;&#106;&#105;&#103;&#115;&#x6f;&#102;&#x74;&#x2e;&#x63;&#111;&#x2e;&#122;&#x61;</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'>April 2018</li>
    <li class='tr'>git-ignore(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000D4000081A40000000000000000000000016627A28D0000106B000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-ignore.mdgit-ignore(1) -- Add .gitignore patterns
========================================

## SYNOPSIS

`git-ignore` [&lt;context&gt;] [&lt;pattern&gt; [&lt;pattern&gt;]...]

## DESCRIPTION

Adds the given _pattern_s to a .gitignore file if it doesn't already exist.

## OPTIONS

  &lt;context&gt;

  -l, --local

  Sets the context to the .gitignore file in the current working directory. (default)

  -g, --global

  Sets the context to the global gitignore file for the current user.

  -p, --private

  Sets the context to the private exclude file for the repository (`.git/info/exclude`).

  &lt;pattern&gt;

  A space delimited list of patterns to append to the file in context.

### PATTERN FORMAT

Pattern format as described in the git manual

 * A blank line matches no files, so it can serve as a separator for readability. To append a blank line use empty quotes "".

 * A line starting with # serves as a comment. For example, "# This is a comment"

 * An optional prefix ! which negates the pattern; any matching file excluded by a previous pattern will become included again. If a negated pattern matches, this will override lower precedence patterns sources. To use an exclamation ! as command line argument it is best placed between single quotes ''. For example, '!src'

 * If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find a match with a directory. In other words, foo/ will match a directory foo and paths underneath it, but will not match a regular file or a symbolic link foo (this is consistent with the way how pathspec works in general in git).

 * If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the top level of the work tree if not from a .gitignore file).

 * Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html" or "tools/perf/Documentation/perf.html".

 * A leading slash matches the beginning of the pathname. For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".


## EXAMPLES

  All arguments are optional so calling git-ignore alone will display first the global then the local gitignore files:

    $ git ignore
    Global gitignore: /home/alice/.gitignore
    # Numerous always-ignore extensions
    *.diff
    *.err
    *.orig
    *.rej
    *.swo
    *.swp
    *.vi
    *~
    *.sass-cache

    # OS or Editor folders
    .DS_Store
    .Trashes
    ._*
    Thumbs.db
    ---------------------------------
    Local gitignore: .gitignore
    .cache
    .project
    .settings
    .tmproj
    nbproject

If you only want to see the global context use the --global argument (for local use --local):

    $ git ignore
    Global gitignore: /home/alice/.gitignore
    .DS_Store
    .Trashes
    ._*
    Thumbs.db

To quickly append a new pattern to the default/local context simply:

    $ git ignore *.log
    Adding pattern(s) to: .gitignore
    ... adding '*.log'

You can now configure any patterns without ever using an editor, with a context and pattern arguments:
The resulting configuration is also returned for your convenience.

    $ git ignore --local "" "# Temporary files" *.tmp "*.log" tmp/*  "" "# Files I'd like to keep" '!work'  ""
    Adding pattern(s) to: .gitignore
    ... adding ''
    ... adding '# Temporary files'
    ... adding 'index.tmp'
    ... adding '*.log'
    ... adding 'tmp/*'
    ... adding ''
    ... adding '# Files I'd like to keep'
    ... adding '!work'
    ... adding ''

    Local gitignore: .gitignore

    # Temporary files
    index.tmp
    *.log

    # Files I'd like to keep
    !work

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt; and Tema Bolshakov &lt;<tweekane@gmail.com>&gt;
and Nick Lombard &lt;<github@jigsoft.co.za>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000D5000081A40000000000000000000000016627A28D00000C44000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-info.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-INFO" "1" "August 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-info\fR \- Returns information on current repository
.
.SH "SYNOPSIS"
\fBgit\-info\fR [\-c|\-\-color] [\-\-no\-config]
.
.SH "DESCRIPTION"
Shows the following information about a repository:
.
.IP "1." 4
Remote Url(s)
.
.IP "2." 4
Remote Branches
.
.IP "3." 4
Local Branches
.
.IP "4." 4
Submodule(s) (if present)
.
.IP "5." 4
Most recent commit
.
.IP "6." 4
Configuration Info
.
.IP "" 0
.
.SH "OPTIONS"
\-c, \-\-color
.
.P
Use color for information titles\.
.
.P
\-\-no\-config
.
.P
Don\'t show list all variables set in config file, along with their values\.
.
.SH "GIT CONFIGS"
You could customize the Most recent commit and Configuration Info format via git config options
.
.IP "" 4
.
.nf

$ git config \-\-global \-\-add git\-extras\.info\.log "<log\-command>"
.
.fi
.
.IP "" 0
.
.P
the default \fIlog\-command\fR is "git log \-\-max\-count=1 \-\-pretty=short"
.
.IP "" 4
.
.nf

$ git config \-\-global \-\-add git\-extras\.info\.config\-grep "<config\-grep\-command>"
.
.fi
.
.IP "" 0
.
.P
the default \fIconfig\-grep\-command\fR is "git config \-\-list"
.
.P
For example,
.
.P
to set global configuration to show last commit subject, without sha1
.
.IP "" 4
.
.nf

 $ git config \-\-global \-\-add git\-extras\.info\.log "git log \-\-max\-count=1 \-\-format=\e"Author: %an%nDate:   %ad (%ar)%n%n    %s\e" \-\-date=format:\e"%Y\-%m\-%d %a %H:%M\e""
.
.fi
.
.IP "" 0
.
.P
to set global configuration to show user\'s name and email
.
.IP "" 4
.
.nf

 $ git config \-\-global \-\-add git\-extras\.info\.config\-grep "git config \-\-list | grep \-\-color=never \-E \e"^user\.name|^user\.email\e""
.
.fi
.
.IP "" 0
.
.SH "EXAMPLES"
Outputs info about a repo:
.
.IP "" 4
.
.nf

$ git info

## Remote URLs:

origin      git@github\.com:sampleAuthor/git\-extras\.git (fetch)
origin      git@github\.com:sampleAuthor/git\-extras\.git (push)

## Remote Branches:

origin/HEAD \-> origin/master
origin/myBranch

## Local Branches:

myBranch
* master

## Submodule(s):

  a234567 path2submodule1/submodule1 (branch/tag)
+ b234567 path2submodule2/submodule2 (branch/tag)
\- c234567 path2submodule3/submodule3 (branch/tag)
  e234567 path2submodule4/submodule4 (branch/tag)

## Most Recent Commit:

commit e3952df2c172c6f3eb533d8d0b1a6c77250769a7
Author: Sample Author <sampleAuthor@gmail\.com>

Added git\-info command\.

## Configuration (\.git/config):

color\.diff=auto
color\.status=auto
color\.branch=auto
user\.name=Sample Author
user\.email=sampleAuthor@gmail\.com
core\.repositoryformatversion=0
core\.filemode=true
core\.bare=false
core\.logallrefupdates=true
core\.ignorecase=true
remote\.origin\.fetch=+refs/heads/*:refs/remotes/origin/*
remote\.origin\.url=git@github\.com:mub/git\-extras\.git
branch\.master\.remote=origin
branch\.master\.merge=refs/heads/master
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Leila Muhtasib <\fImuhtasib@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000D6000081A40000000000000000000000016627A28D00001A25000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-info.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-info(1) - Returns information on current repository</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="#GIT-CONFIGS">GIT CONFIGS</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-info(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-info(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-info</code> - <span class="man-whatis">Returns information on current repository</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-info</code> [-c|--color] [--no-config]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Shows the following information about a repository:</p>

<ol>
<li>Remote Url(s)</li>
<li>Remote Branches</li>
<li>Local Branches</li>
<li>Submodule(s) (if present)</li>
<li>Most recent commit</li>
<li>Configuration Info</li>
</ol>


<h2 id="OPTIONS">OPTIONS</h2>

<p>  -c, --color</p>

<p>  Use color for information titles.</p>

<p>  --no-config</p>

<p>  Don't show list all variables set in config file, along with their values.</p>

<h2 id="GIT-CONFIGS">GIT CONFIGS</h2>

<p>  You could customize the Most recent commit and Configuration Info format via git config options</p>

<pre><code>$ git config --global --add git-extras.info.log "&lt;log-command>"
</code></pre>

<p>  the default <var>log-command</var> is "git log --max-count=1 --pretty=short"</p>

<pre><code>$ git config --global --add git-extras.info.config-grep "&lt;config-grep-command>"
</code></pre>

<p>  the default <var>config-grep-command</var> is "git config --list"</p>

<p>  For example,</p>

<p>   to set global configuration to show last commit subject, without sha1</p>

<pre><code> $ git config --global --add git-extras.info.log "git log --max-count=1 --format=\"Author: %an%nDate:   %ad (%ar)%n%n    %s\" --date=format:\"%Y-%m-%d %a %H:%M\""
</code></pre>

<p>   to set global configuration to show user's name and email</p>

<pre><code> $ git config --global --add git-extras.info.config-grep "git config --list | grep --color=never -E \"^user.name|^user.email\""
</code></pre>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Outputs info about a repo:</p>

<pre><code>$ git info

## Remote URLs:

origin      git@github.com:sampleAuthor/git-extras.git (fetch)
origin      git@github.com:sampleAuthor/git-extras.git (push)

## Remote Branches:

origin/HEAD -&gt; origin/master
origin/myBranch

## Local Branches:

myBranch
* master

## Submodule(s):

  a234567 path2submodule1/submodule1 (branch/tag)
+ b234567 path2submodule2/submodule2 (branch/tag)
- c234567 path2submodule3/submodule3 (branch/tag)
  e234567 path2submodule4/submodule4 (branch/tag)

## Most Recent Commit:

commit e3952df2c172c6f3eb533d8d0b1a6c77250769a7
Author: Sample Author &lt;sampleAuthor@gmail.com&gt;

Added git-info command.

## Configuration (.git/config):

color.diff=auto
color.status=auto
color.branch=auto
user.name=Sample Author
user.email=sampleAuthor@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@github.com:mub/git-extras.git
branch.master.remote=origin
branch.master.merge=refs/heads/master
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Leila Muhtasib &lt;<a href="&#x6d;&#97;&#x69;&#108;&#116;&#x6f;&#58;&#x6d;&#117;&#x68;&#116;&#97;&#115;&#x69;&#98;&#64;&#x67;&#109;&#x61;&#105;&#108;&#46;&#99;&#111;&#x6d;" data-bare-link="true">&#x6d;&#x75;&#x68;&#116;&#97;&#115;&#x69;&#x62;&#64;&#x67;&#x6d;&#x61;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;</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'>August 2020</li>
    <li class='tr'>git-info(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000D7000081A40000000000000000000000016627A28D00000AD8000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-info.mdgit-info(1) -- Returns information on current repository
================================

## SYNOPSIS

`git-info` [-c|--color] [--no-config]

## DESCRIPTION

Shows the following information about a repository:

 1. Remote Url(s)
 2. Remote Branches
 3. Local Branches
 4. Submodule(s) (if present)
 5. Most recent commit
 6. Configuration Info

## OPTIONS

  -c, --color

  Use color for information titles.

  --no-config

  Don't show list all variables set in config file, along with their values.

## GIT CONFIGS

  You could customize the Most recent commit and Configuration Info format via git config options

    $ git config --global --add git-extras.info.log "<log-command>"

  the default <log-command> is "git log --max-count=1 --pretty=short"

    $ git config --global --add git-extras.info.config-grep "<config-grep-command>"

  the default <config-grep-command> is "git config --list"

  For example,

   to set global configuration to show last commit subject, without sha1

     $ git config --global --add git-extras.info.log "git log --max-count=1 --format=\"Author: %an%nDate:   %ad (%ar)%n%n    %s\" --date=format:\"%Y-%m-%d %a %H:%M\""

   to set global configuration to show user's name and email

     $ git config --global --add git-extras.info.config-grep "git config --list | grep --color=never -E \"^user.name|^user.email\""

## EXAMPLES

Outputs info about a repo:

    $ git info

    ## Remote URLs:

    origin		git@github.com:sampleAuthor/git-extras.git (fetch)
    origin		git@github.com:sampleAuthor/git-extras.git (push)

    ## Remote Branches:

    origin/HEAD -> origin/master
    origin/myBranch

    ## Local Branches:

    myBranch
    * master

    ## Submodule(s):

      a234567 path2submodule1/submodule1 (branch/tag)
    + b234567 path2submodule2/submodule2 (branch/tag)
    - c234567 path2submodule3/submodule3 (branch/tag)
      e234567 path2submodule4/submodule4 (branch/tag)

    ## Most Recent Commit:

    commit e3952df2c172c6f3eb533d8d0b1a6c77250769a7
    Author: Sample Author <sampleAuthor@gmail.com>

    Added git-info command.

    ## Configuration (.git/config):

    color.diff=auto
    color.status=auto
    color.branch=auto
    user.name=Sample Author
    user.email=sampleAuthor@gmail.com
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true
    core.ignorecase=true
    remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
    remote.origin.url=git@github.com:mub/git-extras.git
    branch.master.remote=origin
    branch.master.merge=refs/heads/master


## AUTHOR

Written by Leila Muhtasib &lt;<muhtasib@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000D8000081A40000000000000000000000016627A28D00000327000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-local-commits.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-LOCAL\-COMMITS" "1" "January 2022" "" "Git Extras"
.SH "NAME"
\fBgit\-local\-commits\fR \- List local commits
.SH "SYNOPSIS"
\fBgit\-local\-commits\fR <args>
.SH "DESCRIPTION"
Lists commits in the local branch that have not been pushed to the remote tracked branch\. This requires that HEAD points to a branch which is tracking another branch\.
.SH "OPTIONS"
<args>
.P
All arguments passed to \fBgit\-local\-commits\fR will be passed directly to \fBgit\-log\fR\.
.SH "EXAMPLES"
.nf
$ git local\-commits \-\-graph
.fi
.SH "AUTHOR"
Written by Michael Komitee <\fImkomitee@gmail\.com\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000D9000081A40000000000000000000000016627A28D0000109C000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-local-commits.html<!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)'>
  <title>git-local-commits(1) - List local commits</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-local-commits(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-local-commits(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-local-commits</code> - <span class="man-whatis">List local commits</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-local-commits</code> &lt;args&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Lists commits in the local branch that have not been pushed to the remote tracked branch.
  This requires that HEAD points to a branch which is tracking another branch.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;args&gt;</p>

<p>All arguments passed to <code>git-local-commits</code> will be passed directly to <code>git-log</code>.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git local-commits --graph
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Michael Komitee &lt;<a href="mailto:mkomitee@gmail.com" data-bare-link="true">mkomitee@gmail.com</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'>January 2022</li>
    <li class='tr'>git-local-commits(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000DA000081A40000000000000000000000016627A28D000002A0000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-local-commits.mdgit-local-commits(1) -- List local commits
=======================================

## SYNOPSIS

`git-local-commits` &lt;args&gt;

## DESCRIPTION

  Lists commits in the local branch that have not been pushed to the remote tracked branch.
  This requires that HEAD points to a branch which is tracking another branch.

## OPTIONS

  &lt;args&gt;

  All arguments passed to `git-local-commits` will be passed directly to `git-log`.

## EXAMPLES

    $ git local-commits --graph

## AUTHOR

Written by Michael Komitee &lt;<mkomitee@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000DB000081A40000000000000000000000016627A28D00000275000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-lock.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-LOCK" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-lock\fR \- Lock a file excluded from version control
.
.SH "SYNOPSIS"
\fBgit\-lock\fR <filename>
.
.SH "DESCRIPTION"
Lock local files from version control\.
.
.SH "OPTIONS"
<filename>
.
.P
The name of the filename\.
.
.SH "EXAMPLES"
.
.nf

$ git lock config/database\.yml
.
.fi
.
.SH "AUTHOR"
Written by Julio Napuri <\fIjulionc@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000DC000081A40000000000000000000000016627A28D0000108E000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-lock.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-lock(1) - Lock a file excluded from version control</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-lock(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-lock(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-lock</code> - <span class="man-whatis">Lock a file excluded from version control</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-lock</code> &lt;filename&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Lock local files from version control.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;filename&gt;</p>

<p>  The name of the filename.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git lock config/database.yml
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Julio Napuri &lt;<a href="&#109;&#97;&#x69;&#108;&#x74;&#x6f;&#58;&#106;&#x75;&#108;&#105;&#111;&#110;&#99;&#64;&#x67;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#111;&#x6d;" data-bare-link="true">&#x6a;&#117;&#x6c;&#x69;&#x6f;&#110;&#x63;&#x40;&#x67;&#x6d;&#x61;&#105;&#108;&#46;&#99;&#111;&#109;</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'>October 2017</li>
    <li class='tr'>git-lock(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000DD000081A40000000000000000000000016627A28D00000203000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-lock.mdgit-lock(1) -- Lock a file excluded from version control
========================================================

## SYNOPSIS

`git-lock` &lt;filename&gt;

## DESCRIPTION

  Lock local files from version control.

## OPTIONS

  &lt;filename&gt;

  The name of the filename.

## EXAMPLES

    $ git lock config/database.yml

## AUTHOR

Written by Julio Napuri &lt;<julionc@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000DE000081A40000000000000000000000016627A28D0000024A000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-locked.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-LOCKED" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-locked\fR \- ls files that have been locked
.
.SH "SYNOPSIS"
\fBgit\-locked\fR
.
.SH "DESCRIPTION"
List local files that have been locked
.
.SH "EXAMPLES"
.
.nf

$ git lock config/database\.yml
$ git locked
config/database\.yml
.
.fi
.
.SH "AUTHOR"
Written by Kevin Woo <\fIkevinawoo@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000DF000081A40000000000000000000000016627A28D00001028000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-locked.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-locked(1) - ls files that have been locked</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="#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-locked(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-locked(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-locked</code> - <span class="man-whatis">ls files that have been locked</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-locked</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  List local files that have been locked</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git lock config/database.yml
$ git locked
config/database.yml
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Kevin Woo &lt;<a href="&#x6d;&#x61;&#105;&#108;&#x74;&#111;&#58;&#107;&#101;&#118;&#105;&#x6e;&#x61;&#x77;&#x6f;&#x6f;&#x40;&#x67;&#109;&#x61;&#x69;&#108;&#x2e;&#x63;&#x6f;&#109;" data-bare-link="true">&#x6b;&#x65;&#x76;&#x69;&#x6e;&#97;&#119;&#111;&#111;&#64;&#103;&#x6d;&#97;&#x69;&#x6c;&#46;&#99;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-locked(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000E0000081A40000000000000000000000016627A28D000001D6000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-locked.mdgit-locked(1) -- ls files that have been locked
========================================================

## SYNOPSIS

`git-locked`

## DESCRIPTION

  List local files that have been locked

## EXAMPLES

    $ git lock config/database.yml
    $ git locked
    config/database.yml

## AUTHOR

Written by Kevin Woo &lt;<kevinawoo@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000E1000081A40000000000000000000000016627A28D0000086A000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-magic.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-MAGIC" "1" "May 2023" "" "Git Extras"
.
.SH "NAME"
\fBgit\-magic\fR \- Automate add/commit/push routines
.
.SH "SYNOPSIS"
\fBgit\-magic\fR [\-a] [\-m \fImsg\fR] [\-e] [\-p] [\-f]
.
.SH "DESCRIPTION"
Produces summary of changes for commit message from \fBgit status \-\-porcelain\fR output\. Commits staged changes with the generated commit message and opens editor to modify generated commit message optionally\. Also staging and pushing can be automated optionally\.
.
.SH "OPTIONS"
\-a
.
.P
Adds everything including untracked files\.
.
.P
\-m \fImsg\fR
.
.P
Use the given \fImsg\fR as the commit message\. If multiple \-m options are given, their values are concatenated as separate paragraphs\. Passed to git commit command\. The generated is appended to user\-given messages\.
.
.P
\-e
.
.P
This option lets you further edit the generated message\. Passed to git commit command\.
.
.P
\-p
.
.P
Runs \fBgit push\fR after commit\.
.
.P
\-f
.
.P
Adds \fB\-f\fR option to \fBgit push\fR command\.
.
.P
\-h
.
.P
Prints synopsis\.
.
.SH "EXAMPLES"
This example stages all changes then commits with automatic commit message\.
.
.IP "" 4
.
.nf

$ git magic \-a
[feature/magic dc2a11e] A  man/git\-magic\.md
 1 file changed, 37 insertions(+)
 create mode 100644 man/git\-auto\.md
# git log
Author: overengineer <54alpersaid@gmail\.com>
Date:   Thu Sep 30 20:14:22 2021 +0300

    M  man/git\-magic\.md
.
.fi
.
.IP "" 0
.
.P
\fB\-m\fR option PREPENDS generated message\.
.
.IP "" 4
.
.nf

$ git magic \-am "Added documentation for git magic"
[feature/magic dc2a11e] Added documentation for git magic
 1 file changed, 42 insertions(+), 0 deletions(\-)
 create mode 100644 A man/git\-auto\.md
$ git log
Author: overengineer <54alpersaid@gmail\.com>
Date:   Thu Sep 30 20:14:22 2021 +0300

    Added documentation for git magic

    M  man/git\-magic\.md
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Alper S\. Soylu <54alpersaid@gmail\.com>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000E2000081A40000000000000000000000016627A28D00001586000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-magic.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-magic(1) - Automate add/commit/push routines</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-magic(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-magic(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-magic</code> - <span class="man-whatis">Automate add/commit/push routines</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-magic</code> [-a] [-m <var>msg</var>] [-e] [-p] [-f]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Produces summary of changes for commit message from <code>git status --porcelain</code> output.
Commits staged changes with the generated commit message and
opens editor to modify generated commit message optionally.
Also staging and pushing can be automated optionally.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>-a</p>

<p>Adds everything including untracked files.</p>

<p>-m <var>msg</var></p>

<p>Use the given <var>msg</var> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.
Passed to git commit command. The generated is appended to user-given messages.</p>

<p>-e</p>

<p>This option lets you further edit the generated message.
Passed to git commit command.</p>

<p>-p</p>

<p>Runs <code>git push</code> after commit.</p>

<p>-f</p>

<p>Adds <code>-f</code> option to <code>git push</code> command.</p>

<p>-h</p>

<p>Prints synopsis.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>This example stages all changes then commits with automatic commit message.</p>

<pre><code>$ git magic -a
[feature/magic dc2a11e] A  man/git-magic.md
 1 file changed, 37 insertions(+)
 create mode 100644 man/git-auto.md
# git log
Author: overengineer &lt;54alpersaid@gmail.com&gt;
Date:   Thu Sep 30 20:14:22 2021 +0300

    M  man/git-magic.md
</code></pre>

<p><code>-m</code> option PREPENDS generated message.</p>

<pre><code>$ git magic -am "Added documentation for git magic"
[feature/magic dc2a11e] Added documentation for git magic
 1 file changed, 42 insertions(+), 0 deletions(-)
 create mode 100644 A man/git-auto.md
$ git log
Author: overengineer &lt;54alpersaid@gmail.com&gt;
Date:   Thu Sep 30 20:14:22 2021 +0300

    Added documentation for git magic

    M  man/git-magic.md
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Alper S. Soylu &lt;54alpersaid@gmail.com></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 2023</li>
    <li class='tr'>git-magic(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000E3000081A40000000000000000000000016627A28D0000072F000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-magic.mdgit-magic(1) -- Automate add/commit/push routines
================================

## SYNOPSIS

`git-magic` [-a] [-m <msg>] [-e] [-p] [-f]

## DESCRIPTION

Produces summary of changes for commit message from `git status --porcelain` output.
Commits staged changes with the generated commit message and
opens editor to modify generated commit message optionally.
Also staging and pushing can be automated optionally.

## OPTIONS

-a

Adds everything including untracked files.

-m <msg>

Use the given <msg> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.
Passed to git commit command. The generated is appended to user-given messages.

-e

This option lets you further edit the generated message.
Passed to git commit command.

-p

Runs `git push` after commit.

-f

Adds `-f` option to `git push` command.

-h

Prints synopsis.

## EXAMPLES

This example stages all changes then commits with automatic commit message.

```
$ git magic -a
[feature/magic dc2a11e] A  man/git-magic.md
 1 file changed, 37 insertions(+)
 create mode 100644 man/git-auto.md
# git log
Author: overengineer <54alpersaid@gmail.com>
Date:   Thu Sep 30 20:14:22 2021 +0300

    M  man/git-magic.md
```

`-m` option PREPENDS generated message.

```
$ git magic -am "Added documentation for git magic"
[feature/magic dc2a11e] Added documentation for git magic
 1 file changed, 42 insertions(+), 0 deletions(-)
 create mode 100644 A man/git-auto.md
$ git log
Author: overengineer <54alpersaid@gmail.com>
Date:   Thu Sep 30 20:14:22 2021 +0300

    Added documentation for git magic
    
    M  man/git-magic.md
```

## AUTHOR

Written by Alper S. Soylu <54alpersaid@gmail.com>

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000E4000081A40000000000000000000000016627A28D0000071B000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-merge-into.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-MERGE\-INTO" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-merge\-into\fR \- Merge one branch into another
.
.SH "SYNOPSIS"
\fBgit merge\-into\fR [src] <dest> [\-\-ff\-only]
.
.SH "DESCRIPTION"
Merge one branch into another, and keep yourself on current branch\. If src branch not given, it will merge current one to dest\.
.
.SH "OPTIONS"
<src>
.
.P
The name of the branch will be merged into\. If this not given, use current branch as default\.
.
.P
<dest>
.
.P
The name of the branch to merge into\.
.
.P
\-\-ff\-only
.
.P
Refuse to merge and exit with a non\-zero status unless the current HEAD is already up\-to\-date or the merge can be resolved as a fast\-forward\.
.
.SH "EXAMPLES"
Assume the following history exists and the current branch is src:
.
.IP "" 4
.
.nf

                 A\-\-\-B\-\-\-C src(current)
                /
           D\-\-\-E\-\-\-F\-\-\-G dest
.
.fi
.
.IP "" 0
.
.P
After running \fBgit merge\-into dest\fR, it will look like this:
.
.IP "" 4
.
.nf

                A\-\-\-B\-\-\-C src(current)
                /         \e
           D\-\-\-E\-\-\-F\-\-\-G\-\-\-H dest
.
.fi
.
.IP "" 0
.
.P
The \fBH\fR commit will record the merge result, just like what \fBgit merge\fR does\. And \fBsrc\fR is still the current branch\.
.
.P
The default implementation of \fBmerge\-into\fR use \fBgit checkout\fR and \fBgit merge\fR, which may cause temporary change in the working tree\. If you make sure your branch can be merged fast\-forward, add \fB\-\-ff\-only\fR to avoid files change\.
.
.SH "AUTHOR"
Written by spacewander <\fIspacewanderlzx@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000E5000081A40000000000000000000000016627A28D0000158A000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-merge-into.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-merge-into(1) - Merge one branch into another</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-merge-into(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-merge-into(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-merge-into</code> - <span class="man-whatis">Merge one branch into another</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git merge-into</code> [src] &lt;dest&gt; [--ff-only]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Merge one branch into another, and keep yourself on current branch. If src branch not given, it will merge current one to dest.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;src&gt;</p>

<p>  The name of the branch will be merged into. If this not given, use current branch as default.</p>

<p>  &lt;dest&gt;</p>

<p>  The name of the branch to merge into.</p>

<p>  --ff-only</p>

<p>  Refuse to merge and exit with a non-zero status unless the current HEAD is
  already up-to-date or the merge can be resolved as a fast-forward.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Assume the following history exists and the current branch is src:</p>

<pre><code>                 A---B---C src(current)
                /
           D---E---F---G dest
</code></pre>

<p>After running <code>git merge-into dest</code>, it will look like this:</p>

<pre><code>                A---B---C src(current)
                /         \
           D---E---F---G---H dest
</code></pre>

<p>The <code>H</code> commit will record the merge result, just like what <code>git merge</code> does.
And <code>src</code> is still the current branch.</p>

<p>The default implementation of <code>merge-into</code> use <code>git checkout</code> and <code>git merge</code>,
which may cause temporary change in the working tree. If you make sure your
branch can be merged fast-forward, add <code>--ff-only</code> to avoid files change.</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by spacewander &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#58;&#115;&#112;&#97;&#x63;&#x65;&#x77;&#97;&#110;&#100;&#101;&#x72;&#108;&#122;&#120;&#64;&#103;&#109;&#97;&#105;&#x6c;&#46;&#99;&#x6f;&#109;" data-bare-link="true">&#115;&#x70;&#x61;&#99;&#101;&#119;&#97;&#110;&#x64;&#101;&#114;&#108;&#x7a;&#120;&#x40;&#x67;&#109;&#97;&#x69;&#108;&#46;&#99;&#111;&#109;</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'>October 2017</li>
    <li class='tr'>git-merge-into(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000E6000081A40000000000000000000000016627A28D00000605000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-merge-into.mdgit-merge-into(1) -- Merge one branch into another
=================================

## SYNOPSIS

`git merge-into` [src] &lt;dest&gt; [--ff-only]

## DESCRIPTION

Merge one branch into another, and keep yourself on current branch. If src branch not given, it will merge current one to dest.

## OPTIONS
  
  &lt;src&gt;

  The name of the branch will be merged into. If this not given, use current branch as default.

  &lt;dest&gt;

  The name of the branch to merge into.

  --ff-only

  Refuse to merge and exit with a non-zero status unless the current HEAD is
  already up-to-date or the merge can be resolved as a fast-forward.


## EXAMPLES

Assume the following history exists and the current branch is src:

                     A---B---C src(current)
                    /
               D---E---F---G dest

After running `git merge-into dest`, it will look like this:

                    A---B---C src(current)
                    /         \
               D---E---F---G---H dest

The `H` commit will record the merge result, just like what `git merge` does.
And `src` is still the current branch.

The default implementation of `merge-into` use `git checkout` and `git merge`, 
which may cause temporary change in the working tree. If you make sure your 
branch can be merged fast-forward, add `--ff-only` to avoid files change.

## AUTHOR

Written by spacewander &lt;<spacewanderlzx@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000E7000081A40000000000000000000000016627A28D00000429000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-merge-repo.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-MERGE\-REPO" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-merge\-repo\fR \- Merge two repo histories
.
.SH "SYNOPSIS"
\fBgit\-merge\-repo\fR <repo> <branch> <directory> [\-\-squash]
.
.SH "DESCRIPTION"
Merges a repository\'s history with the current repository, inside a specified directory\.
.
.P
Optional \fB\-\-squash\fR flag skips the full history and generates only one commit for the merge\.
.
.SH "EXAMPLES"
Merges a local repo\'s \fBfrontend\fR branch into the current repo\'s \fBweb\fR folder:
.
.IP "" 4
.
.nf

$ git merge\-repo \.\./app/\.git frontend web
.
.fi
.
.IP "" 0
.
.P
Merges a remote repo\'s \fBmaster\fR branch into the current repo\'s folder:
.
.IP "" 4
.
.nf

$ git merge\-repo git@github\.com:tj/git\-extras\.git master \.
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Ivan Malopinsky <\fIhello@imsky\.co\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000E8000081A40000000000000000000000016627A28D000011E3000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-merge-repo.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-merge-repo(1) - Merge two repo histories</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="#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-merge-repo(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-merge-repo(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-merge-repo</code> - <span class="man-whatis">Merge two repo histories</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-merge-repo</code> &lt;repo&gt; &lt;branch&gt; &lt;directory&gt; [--squash]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Merges a repository's history with the current repository, inside a specified directory.</p>

<p>Optional <code>--squash</code> flag skips the full history and generates only one commit for the merge.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Merges a local repo's <code>frontend</code> branch into the current repo's <code>web</code> folder:</p>

<pre><code>$ git merge-repo ../app/.git frontend web
</code></pre>

<p>  Merges a remote repo's <code>master</code> branch into the current repo's folder:</p>

<pre><code>$ git merge-repo git@github.com:tj/git-extras.git master .
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Ivan Malopinsky &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#58;&#104;&#101;&#108;&#x6c;&#x6f;&#x40;&#105;&#109;&#115;&#107;&#x79;&#46;&#99;&#111;" data-bare-link="true">&#104;&#101;&#108;&#108;&#111;&#x40;&#105;&#109;&#x73;&#107;&#121;&#x2e;&#x63;&#111;</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'>October 2017</li>
    <li class='tr'>git-merge-repo(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000E9000081A40000000000000000000000016627A28D00000352000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-merge-repo.mdgit-merge-repo(1) -- Merge two repo histories
=============================================

## SYNOPSIS

`git-merge-repo` &lt;repo&gt; &lt;branch&gt; &lt;directory&gt; [--squash]

## DESCRIPTION

Merges a repository's history with the current repository, inside a specified directory.

Optional `--squash` flag skips the full history and generates only one commit for the merge.

## EXAMPLES

  Merges a local repo's `frontend` branch into the current repo's `web` folder:

    $ git merge-repo ../app/.git frontend web

  Merges a remote repo's `master` branch into the current repo's folder:

    $ git merge-repo git@github.com:tj/git-extras.git master .

## AUTHOR

Written by Ivan Malopinsky &lt;<hello@imsky.co>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000EA000081A40000000000000000000000016627A28D0000050C000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-missing.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-MISSING" "1" "April 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-missing\fR \- Show commits missing from another branch
.
.SH "SYNOPSIS"
\fBgit\-missing\fR [<first branch>] <second branch> [<git log options>]
.
.SH "DESCRIPTION"
Shows commits that are in either of two branches but not both\. Useful for seeing what would come across in a merge or push\.
.
.SH "OPTIONS"
[<first branch>]
.
.P
First branch to compare\. If not specified, defaults to currently checked out branch\.
.
.P
<second branch>
.
.P
Second branch to compare\.
.
.P
[<git log options>]
.
.P
Any flags that should be passed to \'git log\', such as \-\-no\-merges\.
.
.SH "EXAMPLES"
Show commits on either my current branch or master but not both:
.
.IP "" 4
.
.nf

$ git missing master
< d14b8f0 only on current checked out branch
> 97ef387 only on master
.
.fi
.
.IP "" 0
.
.P
Show commits on either branch foo or branch bar but not both:
.
.IP "" 4
.
.nf

$ git missing foo bar
< b8f0d14 only on foo
> f38797e only on bar
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Nate Jones <\fInate@endot\.org\fR>
.
.SH "REPORTING BUGS"
<\fIhttp://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttp://github\.com/tj/git\-extras\fR>
070701000000EB000081A40000000000000000000000016627A28D0000132A000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-missing.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-missing(1) - Show commits missing from another branch</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-missing(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-missing(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-missing</code> - <span class="man-whatis">Show commits missing from another branch</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-missing</code> [&lt;first branch&gt;] &lt;second branch&gt; [&lt;git log options&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Shows commits that are in either of two branches but not both.  Useful for
  seeing what would come across in a merge or push.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  [&lt;first branch&gt;]</p>

<p>  First branch to compare.  If not specified, defaults to currently checked out branch.</p>

<p>  &lt;second branch&gt;</p>

<p>  Second branch to compare.</p>

<p>  [&lt;git log options&gt;]</p>

<p>  Any flags that should be passed to 'git log', such as --no-merges.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Show commits on either my current branch or master but not both:</p>

<pre><code>$ git missing master
&lt; d14b8f0 only on current checked out branch
> 97ef387 only on master
</code></pre>

<p>  Show commits on either branch foo or branch bar but not both:</p>

<pre><code>$ git missing foo bar
&lt; b8f0d14 only on foo
> f38797e only on bar
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Nate Jones &lt;<a href="&#x6d;&#x61;&#x69;&#108;&#116;&#111;&#58;&#x6e;&#x61;&#116;&#101;&#x40;&#101;&#110;&#x64;&#111;&#x74;&#46;&#111;&#x72;&#x67;" data-bare-link="true">&#x6e;&#97;&#116;&#x65;&#64;&#101;&#x6e;&#100;&#111;&#116;&#x2e;&#x6f;&#x72;&#x67;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://github.com/tj/git-extras/issues</a>&gt;</p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<p>&lt;<a href="http://github.com/tj/git-extras" data-bare-link="true">http://github.com/tj/git-extras</a>&gt;</p>


  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>April 2018</li>
    <li class='tr'>git-missing(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000EC000081A40000000000000000000000016627A28D00000485000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-missing.mdgit-missing(1) -- Show commits missing from another branch
=========================================================

## SYNOPSIS

`git-missing` [&lt;first branch&gt;] &lt;second branch&gt; [&lt;git log options&gt;]

## DESCRIPTION

  Shows commits that are in either of two branches but not both.  Useful for
  seeing what would come across in a merge or push.

## OPTIONS

  [&lt;first branch&gt;]

  First branch to compare.  If not specified, defaults to currently checked out branch.

  &lt;second branch&gt;

  Second branch to compare.

  [&lt;git log options&gt;]

  Any flags that should be passed to 'git log', such as --no-merges.

## EXAMPLES

  Show commits on either my current branch or master but not both:

    $ git missing master
    < d14b8f0 only on current checked out branch
    > 97ef387 only on master

  Show commits on either branch foo or branch bar but not both:

    $ git missing foo bar
    < b8f0d14 only on foo
    > f38797e only on bar

## AUTHOR

Written by Nate Jones &lt;<nate@endot.org>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000ED000081A40000000000000000000000016627A28D00000471000000000000000000000000000000000000001E00000000git-extras-7.2.0/man/git-mr.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-MR" "1" "April 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-mr\fR \- Checks out a merge request locally
.
.SH "SYNOPSIS"
\fBgit\-mr\fR <number> [<remote>]
.
.br
\fBgit\-mr\fR <url>
.
.br
\fBgit\-mr clean\fR
.
.SH "DESCRIPTION"
Fetches merge request head by its number or URl and check it out in a branch named with merge request number\.
.
.SH "OPTIONS"
<remote>
.
.P
The name of the remote to fetch from\. Defaults to \fBorigin\fR\.
.
.P
<url>
.
.P
GitLab merge request URL in the format \fBhttps://gitlab\.tld/owner/repository/merge_requests/453\fR\.
.
.SH "EXAMPLES"
This checks out merge request \fB!51\fR from remote \fBorigin\fR to branch \fBmr/51\fR\.
.
.IP "" 4
.
.nf

$ git mr 51
From gitlab\.com:owner/repository
 * [new ref]         refs/merge\-requests/51/head \-> mr/51
Switched to branch \'mr/51\'
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Étienne BERSAC \fIbersace03@gmail\.com\fR from git\-pr(1)\.
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000EE000081A40000000000000000000000016627A28D00001304000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-mr.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-mr(1) - Checks out a merge request locally</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-mr(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-mr(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-mr</code> - <span class="man-whatis">Checks out a merge request locally</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-mr</code> &lt;number&gt; [&lt;remote&gt;]<br />
<code>git-mr</code> &lt;url&gt;<br />
<code>git-mr clean</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Fetches merge request head by its number or URl and check it out in a branch
  named with merge request number.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;remote&gt;</p>

<p>  The name of the remote to fetch from. Defaults to <code>origin</code>.</p>

<p>  &lt;url&gt;</p>

<p>  GitLab merge request URL in the format
  <code>https://gitlab.tld/owner/repository/merge_requests/453</code>.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>This checks out merge request <code>!51</code> from remote <code>origin</code> to branch <code>mr/51</code>.</p>

<pre><code>$ git mr 51
From gitlab.com:owner/repository
 * [new ref]         refs/merge-requests/51/head -&gt; mr/51
Switched to branch 'mr/51'
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Étienne BERSAC <a href="&#109;&#x61;&#x69;&#x6c;&#116;&#x6f;&#58;&#x62;&#101;&#x72;&#115;&#97;&#x63;&#101;&#48;&#x33;&#64;&#103;&#x6d;&#x61;&#x69;&#108;&#x2e;&#99;&#x6f;&#109;" data-bare-link="true">&#x62;&#101;&#114;&#115;&#x61;&#x63;&#101;&#48;&#51;&#64;&#x67;&#109;&#97;&#x69;&#x6c;&#46;&#x63;&#111;&#109;</a> from <a class="man-ref" href="git-pr.html">git-pr<span class="s">(1)</span></a>.</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'>April 2018</li>
    <li class='tr'>git-mr(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000EF000081A40000000000000000000000016627A28D000003CB000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-mr.mdgit-mr(1) -- Checks out a merge request locally
========================================

## SYNOPSIS

`git-mr` &lt;number&gt; [&lt;remote&gt;]<br>
`git-mr` &lt;url&gt;<br>
`git-mr clean`

## DESCRIPTION

  Fetches merge request head by its number or URl and check it out in a branch
  named with merge request number.

## OPTIONS

  &lt;remote&gt;

  The name of the remote to fetch from. Defaults to `origin`.

  &lt;url&gt;

  GitLab merge request URL in the format
  `https://gitlab.tld/owner/repository/merge_requests/453`.


## EXAMPLES

This checks out merge request `!51` from remote `origin` to branch `mr/51`.

    $ git mr 51
    From gitlab.com:owner/repository
     * [new ref]         refs/merge-requests/51/head -> mr/51
    Switched to branch 'mr/51'

## AUTHOR

Written by Étienne BERSAC <bersace03@gmail.com> from git-pr(1).

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000F0000081A40000000000000000000000016627A28D0000062B000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-obliterate.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-OBLITERATE" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-obliterate\fR \- rewrite past commits to remove some files
.
.SH "SYNOPSIS"
git obliterate <files\.\.\.> [\-\- <rev\-list options\.\.\.>]
.
.SH "DESCRIPTION"
Completely remove some files from the repository, including past commits and tags\. WARNING! This command will rewrite the history similar to \fBgit rebase\fR(though it affects more)\. The rewritten history will have different object names for all the objects and will not converge with the original branch\. So \fBavoid using it on commits that you shared\fR\. And it will mess up stash, so \fBdon\'t have stash when you run \fBgit obliterate\fR\fR\.
.
.SH "OPTIONS"
You can pass rev\-list options to indicate the range of commits affected\. Those options need to be separated with \'\-\-\' before them\. Run \fBgit help rev\-list\fR to see the acceptable options\.
.
.SH "Examples"
Remove \.secret from the repository:
.
.IP "" 4
.
.nf

$ git obliterate \.secret
.
.fi
.
.IP "" 0
.
.P
Remove \.secret from commits between origin and feature:
.
.IP "" 4
.
.nf

$ git obliterate \.secret \-\- feature ^origin
.
.fi
.
.IP "" 0
.
.P
Remove \.secret from commit abcdefg to commit 1234567
.
.IP "" 4
.
.nf

$ git obliterate \.secret \-\- abcdefg\.\.1234567
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by <\fIbrianloveswords@gmail\.com\fR>
.
.SH "REPORTING BUG"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000F1000081A40000000000000000000000016627A28D00001493000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-obliterate.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-obliterate(1) - rewrite past commits to remove some files</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-BUG">REPORTING BUG</a>
    <a href="#SEE-ALSO">SEE ALSO</a>
  </div>

  <ol class='man-decor man-head man head'>
    <li class='tl'>git-obliterate(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-obliterate(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-obliterate</code> - <span class="man-whatis">rewrite past commits to remove some files</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p>git obliterate &lt;files...&gt; [-- &lt;rev-list options...&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Completely remove some files from the repository, including past commits and tags.
WARNING! This command will rewrite the history similar to <code>git rebase</code>(though it affects more). The rewritten history will have different object names for all the objects and will not converge with the original branch. So <strong>avoid using it on commits that you shared</strong>.
And it will mess up stash, so <strong>don't have stash when you run <code>git obliterate</code></strong>.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>You can pass rev-list options to indicate the range of commits affected. Those options need to be separated with '--' before them. Run <code>git help rev-list</code> to see the acceptable options.</p>

<h2 id="Examples">Examples</h2>

<p>  Remove .secret from the repository:</p>

<pre><code>$ git obliterate .secret
</code></pre>

<p>  Remove .secret from commits between origin and feature:</p>

<pre><code>$ git obliterate .secret -- feature ^origin
</code></pre>

<p>  Remove .secret from commit abcdefg to commit 1234567</p>

<pre><code>$ git obliterate .secret -- abcdefg..1234567
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by &lt;<a href="&#x6d;&#97;&#x69;&#108;&#x74;&#x6f;&#x3a;&#98;&#114;&#x69;&#97;&#110;&#108;&#111;&#x76;&#101;&#x73;&#x77;&#111;&#x72;&#x64;&#x73;&#x40;&#103;&#109;&#x61;&#x69;&#108;&#x2e;&#x63;&#111;&#x6d;" data-bare-link="true">&#x62;&#x72;&#x69;&#x61;&#110;&#108;&#x6f;&#118;&#101;&#115;&#119;&#111;&#114;&#100;&#115;&#x40;&#x67;&#x6d;&#x61;&#105;&#108;&#46;&#99;&#111;&#x6d;</a>&gt;</p>

<h2 id="REPORTING-BUG">REPORTING BUG</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'>October 2017</li>
    <li class='tr'>git-obliterate(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000F2000081A40000000000000000000000016627A28D0000051A000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-obliterate.mdgit-obliterate(1) -- rewrite past commits to remove some files
===============================

## SYNOPSIS

git obliterate &lt;files...&gt; [-- &lt;rev-list options...&gt;]

## DESCRIPTION

Completely remove some files from the repository, including past commits and tags. 
WARNING! This command will rewrite the history similar to `git rebase`(though it affects more). The rewritten history will have different object names for all the objects and will not converge with the original branch. So **avoid using it on commits that you shared**.
And it will mess up stash, so **don't have stash when you run `git obliterate`**.

## OPTIONS

You can pass rev-list options to indicate the range of commits affected. Those options need to be separated with '--' before them. Run `git help rev-list` to see the acceptable options.

## Examples

  Remove .secret from the repository:

    $ git obliterate .secret

  Remove .secret from commits between origin and feature:

    $ git obliterate .secret -- feature ^origin

  Remove .secret from commit abcdefg to commit 1234567

    $ git obliterate .secret -- abcdefg..1234567

## AUTHOR

Written by &lt;<brianloveswords@gmail.com>&gt;

## REPORTING BUG

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000F3000081A40000000000000000000000016627A28D0000054C000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-paste.1.\" generated with Ronn-NG/v0.8.0
.\" http://github.com/apjanke/ronn-ng/tree/0.8.0
.TH "GIT\-PASTE" "1" "September 2019" "" "Git Extras"
.SH "NAME"
\fBgit\-paste\fR \- Send patches to pastebin for chat conversations
.SH "SYNOPSIS"
\fBgit\-paste\fR <git format\-patch options>
.SH "DESCRIPTION"
Send patches to pastebin for chat conversations using pastebinit\. The syntax highlighting will be set to \'diff\'\.
.SH "OPTIONS"
<git format\-patch options>
.P
All options are passed directly to \fBgit format\-patch\fR\. Given no arguments, \fBgit\-paste\fR passes \fB@{u}\fR to \fBgit format\-patch\fR\.
.SH "CONFIGURATION"
The pastebinit software chooses the most appropriate pastebin site for your operating system and the pastebinit documentation \fI\%https://manpages\.debian\.org/pastebinit\fR contains details of how to configure it to use a different site\.
.SH "EXAMPLES"
Pastebin the patches between the current branch and its upstream:
.IP "" 4
.nf
$ git paste
$ git paste @{u}
.fi
.IP "" 0
.P
Pastebin the latest commit:
.IP "" 4
.nf
$ git paste \-1
.fi
.IP "" 0
.P
Pastebin the latest three commits:
.IP "" 4
.nf
$ git paste \-3
.fi
.IP "" 0
.SH "AUTHOR"
Written by Paul Wise <\fI\%mailto:pabs3@bonedaddy\.net\fR>
.SH "REPORTING BUGS"
<\fI\%https://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fI\%https://github\.com/tj/git\-extras\fR>
070701000000F4000081A40000000000000000000000016627A28D00001329000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-paste.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' content='text/html;charset=utf8'>
  <meta name='generator' content='Ronn-NG/v0.8.0 (http://github.com/apjanke/ronn-ng/tree/0.8.0)'>
  <title>git-paste(1) - Send patches to pastebin for chat conversations</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="#CONFIGURATION">CONFIGURATION</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-paste(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-paste(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-paste</code> - <span class="man-whatis">Send patches to pastebin for chat conversations</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-paste</code> &lt;git format-patch options&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Send patches to pastebin for chat conversations using pastebinit.
  The syntax highlighting will be set to 'diff'.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;git format-patch options&gt;</p>

<p>  All options are passed directly to <code>git format-patch</code>.
  Given no arguments, <code>git-paste</code> passes <code>@{u}</code> to <code>git format-patch</code>.</p>

<h2 id="CONFIGURATION">CONFIGURATION</h2>

<p>  The pastebinit software chooses the most appropriate pastebin site
  for your operating system and the <a href="https://manpages.debian.org/pastebinit">pastebinit documentation</a>
  contains details of how to configure it to use a different site.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p> Pastebin the patches between the current branch and its upstream:</p>

<pre><code>$ git paste
$ git paste @{u}
</code></pre>

<p> Pastebin the latest commit:</p>

<pre><code>$ git paste -1
</code></pre>

<p> Pastebin the latest three commits:</p>

<pre><code>$ git paste -3
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Paul Wise &lt;<a href="mailto:pabs3@bonedaddy.net" data-bare-link="true">pabs3@bonedaddy.net</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'>September 2019</li>
    <li class='tr'>git-paste(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000F5000081A40000000000000000000000016627A28D00000494000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-paste.mdgit-paste(1) -- Send patches to pastebin for chat conversations
===============================================================

## SYNOPSIS

`git-paste` &lt;git format-patch options&gt;

## DESCRIPTION

  Send patches to pastebin for chat conversations using pastebinit.
  The syntax highlighting will be set to 'diff'.

## OPTIONS

  &lt;git format-patch options&gt;

  All options are passed directly to `git format-patch`.
  Given no arguments, `git-paste` passes `@{u}` to `git format-patch`.

## CONFIGURATION

  The pastebinit software chooses the most appropriate pastebin site
  for your operating system and the [pastebinit documentation](https://manpages.debian.org/pastebinit)
  contains details of how to configure it to use a different site.

## EXAMPLES

 Pastebin the patches between the current branch and its upstream:

    $ git paste
    $ git paste @{u}

 Pastebin the latest commit:

    $ git paste -1

 Pastebin the latest three commits:

    $ git paste -3

## AUTHOR

Written by Paul Wise &lt;<pabs3@bonedaddy.net>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000F6000081A40000000000000000000000016627A28D00000D94000000000000000000000000000000000000001E00000000git-extras-7.2.0/man/git-pr.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-PR" "1" "September 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-pr\fR \- Checks out a pull request locally
.
.SH "SYNOPSIS"
\fBgit\-pr\fR [\-m|\-\-merge] <number> [<remote>]
.
.br
\fBgit\-pr\fR [\-m|\-\-merge] <[remote]:number>\.\.\.
.
.br
\fBgit\-pr\fR [\-m|\-\-merge] <url>\.\.\.
.
.br
\fBgit\-pr clean\fR
.
.SH "DESCRIPTION"
Creates a local branch based on a GitHub pull request number or URL, and switch to that branch afterwards\.
.
.SH "OPTIONS"
<remote>
.
.P
The name of the remote to fetch from\. Defaults to \fBorigin\fR\.
.
.P
<url>
.
.P
GitHub pull request URL in the format \fBhttps://github\.com/tj/git\-extras/pull/453\fR\.
.
.P
\-m | \-\-merge
.
.P
Checkout a merge commit against the branch the pull request is targeting\. Because this feature uses a private API with which GitHub checks the pull request\'s mergeability, it only works with the opened pull request\. If the merge commit is not up\-to\-date, please visit the pull request web page to trigger the rebuild\.
.
.SH "EXAMPLES"
This checks out the pull request \fB226\fR from \fBorigin\fR:
.
.IP "" 4
.
.nf

$ git pr 226

remote: Counting objects: 12, done\.
remote: Compressing objects: 100% (9/9), done\.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done\.
From https://github\.com/tj/git\-extras
 * [new ref]         refs/pull/226/head \-> pr/226

Switched to branch \'pr/226\'
.
.fi
.
.IP "" 0
.
.P
This pulls from a different remote:
.
.IP "" 4
.
.nf

$ git pr 226 upstream
.
.fi
.
.IP "" 0
.
.P
This does the same thing as the command above:
.
.IP "" 4
.
.nf

$ git pr upstream:226
.
.fi
.
.IP "" 0
.
.P
You can also checkout a pull request based on a GitHub URL:
.
.IP "" 4
.
.nf

$ git pr https://github\.com/tj/git\-extras/pull/453

From https://github\.com/tj/git\-extras
 * [new ref]         refs/pull/453/head \-> pr/453
Switched to branch \'pr/453\'
.
.fi
.
.IP "" 0
.
.P
You could even pull multiple pull requests via the GitHub URL or the ID \fBwith remote specified\fR:
.
.IP "" 4
.
.nf

$ git pr upstream:226 upstream:443
$ git pr upstream:443 https://github\.com/tj/git\-extras/pull/453
.
.fi
.
.IP "" 0
.
.P
Note that \fBgit pr PR\-A PR\-B\fR is equal to:
.
.IP "" 4
.
.nf

$ git pr PR\-A
$ git pr PR\-B
.
.fi
.
.IP "" 0
.
.P
Therefore, if one of the pull request is failed to pull, this command will still go ahead and pull the others\. The final exit code will be decided by the result of the final pulling\.
.
.P
With \fB\-\-merge\fR option, you could check out a merge commit:
.
.IP "" 4
.
.nf

$ git pr origin:755 \-\-merge
remote: Enumerating objects: 3, done\.
remote: Counting objects: 100% (3/3), done\.
remote: Compressing objects: 100% (3/3), done\.
remote: Total 3 (delta 0), reused 0 (delta 0), pack\-reused 0
Unpacking objects: 100% (3/3), done\.
From github\.com:tj/git\-extras
bf7dd69\.\.de6e51c  refs/pull/755/merge \-> pr/755
Switched to branch \'pr/775\'

$ git log pr/775 \-\-oneline
de6e51c (pr/755) Merge bf7dd6\.\.\.
.
.fi
.
.IP "" 0
.
.P
To clean up old branches:
.
.IP "" 4
.
.nf

$ git pr clean

Deleted branch pr/226 (was b96a8c2)\.
Deleted branch pr/220 (was d34dc0f)\.
Deleted branch pr/775 (was de6e51c)\.
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Originally from https://gist\.github\.com/gnarf/5406589
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000F7000081A40000000000000000000000016627A28D00001AA1000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-pr.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-pr(1) - Checks out a pull request locally</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-pr(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-pr(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-pr</code> - <span class="man-whatis">Checks out a pull request locally</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-pr</code> [-m|--merge] &lt;number&gt; [&lt;remote&gt;]<br />
<code>git-pr</code> [-m|--merge] &lt;[remote]:number&gt;...<br />
<code>git-pr</code> [-m|--merge] &lt;url&gt;...<br />
<code>git-pr clean</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Creates a local branch based on a GitHub pull request number or URL, and
  switch to that branch afterwards.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;remote&gt;</p>

<p>  The name of the remote to fetch from. Defaults to <code>origin</code>.</p>

<p>  &lt;url&gt;</p>

<p>  GitHub pull request URL in the format <code>https://github.com/tj/git-extras/pull/453</code>.</p>

<p>  -m | --merge</p>

<p>  Checkout a merge commit against the branch the pull request is targeting.
  Because this feature uses a private API with which GitHub checks the pull
  request's mergeability, it only works with the opened pull request. If the merge
  commit is not up-to-date, please visit the pull request web page to trigger the
  rebuild.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>This checks out the pull request <code>226</code> from <code>origin</code>:</p>

<pre><code>$ git pr 226

remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/tj/git-extras
 * [new ref]         refs/pull/226/head -&gt; pr/226

Switched to branch 'pr/226'
</code></pre>

<p>This pulls from a different remote:</p>

<pre><code>$ git pr 226 upstream
</code></pre>

<p>This does the same thing as the command above:</p>

<pre><code>$ git pr upstream:226
</code></pre>

<p>You can also checkout a pull request based on a GitHub URL:</p>

<pre><code>$ git pr https://github.com/tj/git-extras/pull/453

From https://github.com/tj/git-extras
 * [new ref]         refs/pull/453/head -&gt; pr/453
Switched to branch 'pr/453'
</code></pre>

<p>You could even pull multiple pull requests via the GitHub URL or the ID <strong>with remote specified</strong>:</p>

<pre><code>$ git pr upstream:226 upstream:443
$ git pr upstream:443 https://github.com/tj/git-extras/pull/453
</code></pre>

<p>Note that <code>git pr PR-A PR-B</code> is equal to:</p>

<pre><code>$ git pr PR-A
$ git pr PR-B
</code></pre>

<p>Therefore, if one of the pull request is failed to pull, this command will still go ahead and pull
the others. The final exit code will be decided by the result of the final pulling.</p>

<p>With <code>--merge</code> option, you could check out a merge commit:</p>

<pre><code>$ git pr origin:755 --merge
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:tj/git-extras
bf7dd69..de6e51c  refs/pull/755/merge -&gt; pr/755
Switched to branch 'pr/775'

$ git log pr/775 --oneline
de6e51c (pr/755) Merge bf7dd6...
</code></pre>

<p>To clean up old branches:</p>

<pre><code>$ git pr clean

Deleted branch pr/226 (was b96a8c2).
Deleted branch pr/220 (was d34dc0f).
Deleted branch pr/775 (was de6e51c).
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Originally from https://gist.github.com/gnarf/5406589</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'>September 2020</li>
    <li class='tr'>git-pr(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000F8000081A40000000000000000000000016627A28D00000C06000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-pr.mdgit-pr(1) -- Checks out a pull request locally
=================================

## SYNOPSIS

`git-pr` [-m|--merge] &lt;number&gt; [&lt;remote&gt;]<br>
`git-pr` [-m|--merge] &lt;[remote]:number&gt;...<br>
`git-pr` [-m|--merge] &lt;url&gt;...<br>
`git-pr clean`

## DESCRIPTION

  Creates a local branch based on a GitHub pull request number or URL, and
  switch to that branch afterwards.

## OPTIONS

  &lt;remote&gt;

  The name of the remote to fetch from. Defaults to `origin`.

  &lt;url&gt;

  GitHub pull request URL in the format `https://github.com/tj/git-extras/pull/453`.

  -m | --merge

  Checkout a merge commit against the branch the pull request is targeting.
  Because this feature uses a private API with which GitHub checks the pull
  request's mergeability, it only works with the opened pull request. If the merge
  commit is not up-to-date, please visit the pull request web page to trigger the
  rebuild.

## EXAMPLES

This checks out the pull request `226` from `origin`:

    $ git pr 226

    remote: Counting objects: 12, done.
    remote: Compressing objects: 100% (9/9), done.
    remote: Total 12 (delta 3), reused 9 (delta 3)
    Unpacking objects: 100% (12/12), done.
    From https://github.com/tj/git-extras
     * [new ref]         refs/pull/226/head -> pr/226

    Switched to branch 'pr/226'

This pulls from a different remote:

    $ git pr 226 upstream

This does the same thing as the command above:

    $ git pr upstream:226

You can also checkout a pull request based on a GitHub URL:

    $ git pr https://github.com/tj/git-extras/pull/453

    From https://github.com/tj/git-extras
     * [new ref]         refs/pull/453/head -> pr/453
    Switched to branch 'pr/453'

You could even pull multiple pull requests via the GitHub URL or the ID **with remote specified**:

    $ git pr upstream:226 upstream:443
    $ git pr upstream:443 https://github.com/tj/git-extras/pull/453

Note that `git pr PR-A PR-B` is equal to:

    $ git pr PR-A
    $ git pr PR-B

Therefore, if one of the pull request is failed to pull, this command will still go ahead and pull
the others. The final exit code will be decided by the result of the final pulling.

With `--merge` option, you could check out a merge commit:

    $ git pr origin:755 --merge
    remote: Enumerating objects: 3, done.
    remote: Counting objects: 100% (3/3), done.
    remote: Compressing objects: 100% (3/3), done.
    remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (3/3), done.
    From github.com:tj/git-extras
    bf7dd69..de6e51c  refs/pull/755/merge -> pr/755
    Switched to branch 'pr/775'

    $ git log pr/775 --oneline
    de6e51c (pr/755) Merge bf7dd6...

To clean up old branches:

    $ git pr clean

    Deleted branch pr/226 (was b96a8c2).
    Deleted branch pr/220 (was d34dc0f).
    Deleted branch pr/775 (was de6e51c).

## AUTHOR

Originally from https://gist.github.com/gnarf/5406589

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000F9000081A40000000000000000000000016627A28D000004DF000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-psykorebase.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-PSYKOREBASE" "1" "August 2021" "" "Git Extras"
.SH "NAME"
\fBgit\-psykorebase\fR \- Rebase a branch with a merge commit
.SH "SYNOPSIS"
\fBgit\-psykorebase\fR <target_branch> [<feature_branch>] [\-\-no\-ff]
.br
\fBgit\-psykorebase\fR \-\-continue
.SH "DESCRIPTION"
Rebase the \fBfeature_branch\fR on top of the \fBtarget_branch\fR, the \fBfeature_branch\fR defaults to the current one\.
.SH "OPTIONS"
\fB\-\-no\-ff\fR Force a commit message even if there are no conflicts\.
.P
\fB\-\-continue\fR Continue the rebase after conflicts have been resolved\.
.SH "EXAMPLES"
Rebase current branch on top of master:
.IP "" 4
.nf
$ git psykorebase master \-\-no\-ff
.fi
.IP "" 0
.P
Handle conflicts:
.IP "" 4
.nf
$ git add README\.md
.fi
.IP "" 0
.P
Continue rebase:
.IP "" 4
.nf
$ git psykorebase \-\-continue
.fi
.IP "" 0
.SH "AUTHOR"
Written by Rémy Hubscher <\fIhubscher\.remy@gmail\.com\fR>
.P
Based on Benoît Bryon <\fIbenoit@marmelune\.net\fR> implementation in Python\.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
.P
<\fIhttps://github\.com/benoitbryon/psykorebase\fR>
070701000000FA000081A40000000000000000000000016627A28D0000130B000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-psykorebase.html<!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)'>
  <title>git-psykorebase(1) - Rebase a branch with a merge 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-psykorebase(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-psykorebase(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-psykorebase</code> - <span class="man-whatis">Rebase a branch with a merge commit</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-psykorebase</code> &lt;target_branch&gt; [&lt;feature_branch&gt;] [--no-ff]<br>
<code>git-psykorebase</code> --continue</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Rebase the <code>feature_branch</code> on top of the <code>target_branch</code>, the
<code>feature_branch</code> defaults to the current one.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p><code>--no-ff</code> Force a commit message even if there are no conflicts.</p>

<p><code>--continue</code> Continue the rebase after conflicts have been resolved.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Rebase current branch on top of master:</p>

<pre><code>$ git psykorebase master --no-ff
</code></pre>

<p>Handle conflicts:</p>

<pre><code>$ git add README.md
</code></pre>

<p>Continue rebase:</p>

<pre><code>$ git psykorebase --continue
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Rémy Hubscher &lt;<a href="mailto:hubscher.remy@gmail.com" data-bare-link="true">hubscher.remy@gmail.com</a>&gt;</p>

<p>Based on Benoît Bryon &lt;<a href="mailto:benoit@marmelune.net" data-bare-link="true">benoit@marmelune.net</a>&gt; implementation in
Python.</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>

<p>&lt;<a href="https://github.com/benoitbryon/psykorebase" data-bare-link="true">https://github.com/benoitbryon/psykorebase</a>&gt;</p>

  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>August 2021</li>
    <li class='tr'>git-psykorebase(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000FB000081A40000000000000000000000016627A28D00000412000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-psykorebase.mdgit-psykorebase(1) -- Rebase a branch with a merge commit
=========================================================

## SYNOPSIS

`git-psykorebase` &lt;target_branch&gt; [&lt;feature_branch&gt;] [--no-ff]  
`git-psykorebase` --continue

## DESCRIPTION

Rebase the `feature_branch` on top of the `target_branch`, the
`feature_branch` defaults to the current one.

## OPTIONS

  `--no-ff` Force a commit message even if there are no conflicts.

  `--continue` Continue the rebase after conflicts have been resolved.

## EXAMPLES

  Rebase current branch on top of master:

    $ git psykorebase master --no-ff

  Handle conflicts:

    $ git add README.md

  Continue rebase:

    $ git psykorebase --continue

## AUTHOR

Written by Rémy Hubscher &lt;<hubscher.remy@gmail.com>&gt;

Based on Benoît Bryon &lt;<benoit@marmelune.net>&gt; implementation in
Python.

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;

&lt;<https://github.com/benoitbryon/psykorebase>&gt;
070701000000FC000081A40000000000000000000000016627A28D000005FD000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-pull-request.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-PULL\-REQUEST" "1" "August 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-pull\-request\fR \- Create pull request for GitHub project
.
.SH "SYNOPSIS"
\fBgit\-pull\-request\fR [<target branch>]
.
.SH "DESCRIPTION"
Create pull request for a project on GitHub via command line\.
.
.P
A personal access token is required for making the API call to open the pull request(s) in GitHub\. API Documentation here \fIhttps://docs\.github\.com/en/rest/reference/pulls#create\-a\-pull\-request\fR
.
.P
Make sure the personal access token has the right \fBOAuth\fR scopes for the repo(s)
.
.P
Use \fBgit config \-\-global \-\-add git\-extras\.github\-personal\-access\-token <your\-personal\-access\-token>\fR
.
.P
If using multiple accounts, override the global value in the specific repo using \fBgit config git\-extras\.github\-personal\-access\-token <other\-acc\-personal\-access\-token>\fR
.
.SH "OPTIONS"
<target branch>
.
.P
The target branch you want to send pull request to\.
.
.SH "EXAMPLES"
.
.nf

$ git pull\-request master
Everything up\-to\-date

  create pull\-request for spacewander/spacewander\-toolbox \'master\'

  title: test
  body:
  base [master]:
  GitHub two\-factor authentication code (leave blank if not set up):

\.\.\.
.
.fi
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
070701000000FD000081A40000000000000000000000016627A28D00001437000000000000000000000000000000000000002B00000000git-extras-7.2.0/man/git-pull-request.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-pull-request(1) - Create pull request for GitHub project</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-pull-request(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-pull-request(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-pull-request</code> - <span class="man-whatis">Create pull request for GitHub project</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-pull-request</code> [&lt;target branch&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Create pull request for a project on GitHub via command line.</p>

<p>A personal access token is required for making the API call to open the pull request(s) in GitHub. <a href="https://docs.github.com/en/rest/reference/pulls#create-a-pull-request">API Documentation here</a></p>

<p>Make sure the personal access token has the right <code>OAuth</code> scopes for the repo(s)</p>

<p>Use <code>git config --global --add git-extras.github-personal-access-token &lt;your-personal-access-token></code></p>

<p>If using multiple accounts, override the global value in the specific repo using <code>git config git-extras.github-personal-access-token &lt;other-acc-personal-access-token></code></p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;target branch&gt;</p>

<p>The target branch you want to send pull request to.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git pull-request master
Everything up-to-date

  create pull-request for spacewander/spacewander-toolbox 'master'

  title: test
  body:  
  base [master]: 
  GitHub two-factor authentication code (leave blank if not set up): 

...
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#109;&#97;&#105;&#108;&#x74;&#111;&#x3a;&#x74;&#x6a;&#64;&#118;&#x69;&#x73;&#105;&#x6f;&#x6e;&#x2d;&#109;&#x65;&#x64;&#x69;&#97;&#46;&#99;&#97;" data-bare-link="true">&#116;&#x6a;&#x40;&#118;&#x69;&#x73;&#105;&#x6f;&#x6e;&#45;&#109;&#x65;&#x64;&#x69;&#97;&#x2e;&#x63;&#97;</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'>August 2020</li>
    <li class='tr'>git-pull-request(1)</li>
  </ol>

  </div>
</body>
</html>
070701000000FE000081A40000000000000000000000016627A28D00000526000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-pull-request.mdgit-pull-request(1) -- Create pull request for GitHub project
================================

## SYNOPSIS

`git-pull-request` [&lt;target branch&gt;]

## DESCRIPTION

Create pull request for a project on GitHub via command line.

A personal access token is required for making the API call to open the pull request(s) in GitHub. [API Documentation here](https://docs.github.com/en/rest/reference/pulls#create-a-pull-request)

Make sure the personal access token has the right `OAuth` scopes for the repo(s)

Use `git config --global --add git-extras.github-personal-access-token <your-personal-access-token>`

If using multiple accounts, override the global value in the specific repo using `git config git-extras.github-personal-access-token <other-acc-personal-access-token>`

## OPTIONS

&lt;target branch&gt;

The target branch you want to send pull request to.

## EXAMPLES

```
$ git pull-request master
Everything up-to-date

  create pull-request for spacewander/spacewander-toolbox 'master'

  title: test
  body:  
  base [master]: 
  GitHub two-factor authentication code (leave blank if not set up): 

...
```

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
070701000000FF000081A40000000000000000000000016627A28D00000EA4000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-reauthor.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-REAUTHOR" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-reauthor\fR \- Rewrite history to change author\'s identity
.
.SH "SYNOPSIS"
\fBgit reauthor [<options>]\fR
.
.SH "DESCRIPTION"
Lets you replace the author and/or committer identities in commits and tags\.
.
.P
The command goes through all existing commits and tags in all local branches to selectively modify the identities present in those objects\. All the other information such as dates, messages,\.\. are preserved\.
.
.P
You can rewrite all the identities in the commits and tags objects by using the \-\-all flag, or only replace the identities whose email matches the value of the \-\-old\-email option\. It is also possible to limit the rewrite to a certain type of identity: the author or the committer identity\. By default, both of them are affected\.
.
.br
For each of those identities to update, the command will replace the name and/or email with the new correct values as defined via the options\. If the new identity name to set is not defined, the current one will be kept (and vice\-versa with the email)\.
.
.P
\fBWARNING!\fR This command rewrites history and as a result you will not able to push your branch to the remote without using the \-\-force option\.
.
.br
See more information with \fBgit help filter\-branch\fR\.
.
.SH "OPTIONS"
\-a, \-\-all
.
.IP "" 4
.
.nf

Rewrite ALL identities in commits and tags\.
.
.fi
.
.IP "" 0
.
.P
\-c, \-\-use\-config
.
.IP "" 4
.
.nf

Define correct values from user Git config
Values of \-\-correct\-email and \-\-correct\-name options take precedence over the ones from the config if specified as well
.
.fi
.
.IP "" 0
.
.P
\-e, \-\-correct\-email <\fIemail\fR>
.
.IP "" 4
.
.nf

Define the correct email to set
Empty email \'\' is allowed
.
.fi
.
.IP "" 0
.
.P
\-n, \-\-correct\-name <\fIname\fR>
.
.IP "" 4
.
.nf

Define the correct name to set
Empty name \'\' is not allowed
.
.fi
.
.IP "" 0
.
.P
\-o, \-\-old\-email <\fIemail\fR>
.
.IP "" 4
.
.nf

Rewrite identities matching old email in commits and tags
Empty email \'\' is allowed
.
.fi
.
.IP "" 0
.
.P
\-t, \-\-type <\fIid\fR>
.
.IP "" 4
.
.nf

Define the type of identities affected by the rewrite
Possible type identifiers are: author, committer, both (default)
.
.fi
.
.IP "" 0
.
.SH "EXAMPLES"
Replace the personal email and name of Jack to his work ones
.
.IP "" 4
.
.nf

$ git reauthor \-\-old\-email jack@perso\.me \-\-correct\-email jack@work\.com \-\-correct\-name \'Jack Foobar\'
.
.fi
.
.IP "" 0
.
.P
Replace the email and name of Jack to the ones defined in the Git config
.
.IP "" 4
.
.nf

$ git reauthor \-\-old\-email jack@perso\.me \-\-use\-config
.
.fi
.
.IP "" 0
.
.P
Replace only the email of Jack (keep the name already used)
.
.IP "" 4
.
.nf

$ git reauthor \-\-old\-email jack@perso \-\-correct\-email jack@perso\.me
.
.fi
.
.IP "" 0
.
.P
Change only the committer email of Jack (keep the author email already used)
.
.IP "" 4
.
.nf

$ git reauthor \-\-old\-email jack@perso\.me \-\-correct\-email jack@work\.com \-\-type committer
.
.fi
.
.IP "" 0
.
.P
Set Jack\'s identity as the only one of the whole repository
.
.IP "" 4
.
.nf

$ git reauthor \-\-all \-\-correct\-email jack@perso\.me \-\-correct\-name Jack
.
.fi
.
.IP "" 0
.
.P
Set Jack as the only committer of the whole repository (keeps authors)
.
.IP "" 4
.
.nf

$ git reauthor \-\-all \-\-correct\-email jack@perso\.me \-\-correct\-name Jack \-\-type committer
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Damien Tardy\-Panis <\fIdamien@tardypad\.me\fR>
.
.SH "REPORTING BUGS"
<\fIhttp://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000100000081A40000000000000000000000016627A28D00001C53000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-reauthor.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-reauthor(1) - Rewrite history to change author&#39;s identity</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-reauthor(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-reauthor(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-reauthor</code> - <span class="man-whatis">Rewrite history to change author's identity</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git reauthor [&lt;options>]</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Lets you replace the author and/or committer identities in commits and tags.</p>

<p>The command goes through all existing commits and tags in all local branches to selectively modify the identities present in those objects. All the other information such as dates, messages,.. are preserved.</p>

<p>You can rewrite all the identities in the commits and tags objects by using the --all flag, or only replace the identities whose email matches the value of the --old-email option. It is also possible to limit the rewrite to a certain type of identity: the author or the committer identity. By default, both of them are affected.<br />
For each of those identities to update, the command will replace the name and/or email with the new correct values as defined via the options. If the new identity name to set is not defined, the current one will be kept (and vice-versa with the email).</p>

<p><code>WARNING!</code> This command rewrites history and as a result you will not able to push your branch to the remote without using the --force option.<br />
See more information with <code>git help filter-branch</code>.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -a, --all</p>

<pre><code>Rewrite ALL identities in commits and tags.
</code></pre>

<p>  -c, --use-config</p>

<pre><code>Define correct values from user Git config
Values of --correct-email and --correct-name options take precedence over the ones from the config if specified as well
</code></pre>

<p>  -e, --correct-email &lt;<var>email</var>&gt;</p>

<pre><code>Define the correct email to set
Empty email '' is allowed
</code></pre>

<p>  -n, --correct-name &lt;<var>name</var>&gt;</p>

<pre><code>Define the correct name to set
Empty name '' is not allowed
</code></pre>

<p>  -o, --old-email &lt;<var>email</var>&gt;</p>

<pre><code>Rewrite identities matching old email in commits and tags
Empty email '' is allowed
</code></pre>

<p>  -t, --type &lt;<var>id</var>&gt;</p>

<pre><code>Define the type of identities affected by the rewrite
Possible type identifiers are: author, committer, both (default)
</code></pre>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Replace the personal email and name of Jack to his work ones</p>

<pre><code>$ git reauthor --old-email jack@perso.me --correct-email jack@work.com --correct-name 'Jack Foobar'
</code></pre>

<p>Replace the email and name of Jack to the ones defined in the Git config</p>

<pre><code>$ git reauthor --old-email jack@perso.me --use-config
</code></pre>

<p>Replace only the email of Jack (keep the name already used)</p>

<pre><code>$ git reauthor --old-email jack@perso --correct-email jack@perso.me
</code></pre>

<p>Change only the committer email of Jack (keep the author email already used)</p>

<pre><code>$ git reauthor --old-email jack@perso.me --correct-email jack@work.com --type committer
</code></pre>

<p>Set Jack's identity as the only one of the whole repository</p>

<pre><code>$ git reauthor --all --correct-email jack@perso.me --correct-name Jack
</code></pre>

<p>Set Jack as the only committer of the whole repository (keeps authors)</p>

<pre><code>$ git reauthor --all --correct-email jack@perso.me --correct-name Jack --type committer
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Damien Tardy-Panis &lt;<a href="&#x6d;&#97;&#x69;&#108;&#x74;&#111;&#58;&#100;&#x61;&#109;&#x69;&#x65;&#x6e;&#x40;&#116;&#x61;&#114;&#100;&#x79;&#x70;&#97;&#x64;&#x2e;&#x6d;&#x65;" data-bare-link="true">&#100;&#x61;&#109;&#105;&#x65;&#x6e;&#x40;&#x74;&#97;&#x72;&#100;&#121;&#x70;&#97;&#x64;&#46;&#109;&#101;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://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'>October 2017</li>
    <li class='tr'>git-reauthor(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000101000081A40000000000000000000000016627A28D00000CD3000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-reauthor.mdgit-reauthor(1) -- Rewrite history to change author's identity
==============================================================

## SYNOPSIS

`git reauthor [<options>]`

## DESCRIPTION

Lets you replace the author and/or committer identities in commits and tags.

The command goes through all existing commits and tags in all local branches to selectively modify the identities present in those objects. All the other information such as dates, messages,.. are preserved.

You can rewrite all the identities in the commits and tags objects by using the --all flag, or only replace the identities whose email matches the value of the --old-email option. It is also possible to limit the rewrite to a certain type of identity: the author or the committer identity. By default, both of them are affected.  
For each of those identities to update, the command will replace the name and/or email with the new correct values as defined via the options. If the new identity name to set is not defined, the current one will be kept (and vice-versa with the email).

`WARNING!` This command rewrites history and as a result you will not able to push your branch to the remote without using the --force option.  
See more information with `git help filter-branch`.

## OPTIONS

  -a, --all

    Rewrite ALL identities in commits and tags.

  -c, --use-config

    Define correct values from user Git config
    Values of --correct-email and --correct-name options take precedence over the ones from the config if specified as well

  -e, --correct-email &lt;<email>&gt;

    Define the correct email to set
    Empty email '' is allowed

  -n, --correct-name &lt;<name>&gt;

    Define the correct name to set
    Empty name '' is not allowed

  -o, --old-email &lt;<email>&gt;

    Rewrite identities matching old email in commits and tags
    Empty email '' is allowed

  -t, --type &lt;<id>&gt;

    Define the type of identities affected by the rewrite
    Possible type identifiers are: author, committer, both (default)

## EXAMPLES

Replace the personal email and name of Jack to his work ones

    $ git reauthor --old-email jack@perso.me --correct-email jack@work.com --correct-name 'Jack Foobar'

Replace the email and name of Jack to the ones defined in the Git config

    $ git reauthor --old-email jack@perso.me --use-config

Replace only the email of Jack (keep the name already used)

    $ git reauthor --old-email jack@perso --correct-email jack@perso.me

Change only the committer email of Jack (keep the author email already used)

    $ git reauthor --old-email jack@perso.me --correct-email jack@work.com --type committer

Change only the name and keep email to merge one user with multiple pseudonyms.

    $ git reauthor --old-email jack@perso.me --correct-name Jack

Set Jack's identity as the only one of the whole repository

    $ git reauthor --all --correct-email jack@perso.me --correct-name Jack
    
Set Jack as the only committer of the whole repository (keeps authors)

    $ git reauthor --all --correct-email jack@perso.me --correct-name Jack --type committer

## AUTHOR

Written by Damien Tardy-Panis &lt;<damien@tardypad.me>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000102000081A40000000000000000000000016627A28D00000517000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-rebase-patch.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-REBASE\-PATCH" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-rebase\-patch\fR \- Rebases a patch
.
.SH "SYNOPSIS"
\fBgit\-rebase\-patch\fR <patch\-file>
.
.SH "DESCRIPTION"
Given you have a patch that doesn\'t apply to the current HEAD, but you know it applied to some commit in the past, \fBgit\-rebase\-patch\fR will help you find that commit and do a rebase\.
.
.SH "OPTIONS"
.
.TP
<patch\-file>
The patch to be applied\.
.
.SH "EXAMPLES"
Executing
.
.IP "" 4
.
.nf

$ git rebase\-patch test\.patch
.
.fi
.
.IP "" 0
.
.P
could give you something like that:
.
.IP "" 4
.
.nf

Trying to find a commit the patch applies to\.\.\.
Patch applied to dbcf408dd26 as 7dc8b23ae1a
First, rewinding head to replay your work on top of it\.\.\.
Applying: test\.patch
Using index info to reconstruct a base tree\.\.\.
Falling back to patching base and 3\-way merge\.\.\.
Auto\-merging README\.txt
.
.fi
.
.IP "" 0
.
.P
Then your last commit has the changes of the patch and is named \fItest\.patch\fR\.
.
.SH "AUTHOR"
Written by Niklas Fiekas <\fIniklas\.fiekas@tu\-clausthal\.de\fR>
.
.SH "REPORTING BUGS"
<\fIhttp://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttp://github\.com/tj/git\-extras\fR>
07070100000103000081A40000000000000000000000016627A28D00001396000000000000000000000000000000000000002B00000000git-extras-7.2.0/man/git-rebase-patch.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-rebase-patch(1) - Rebases a patch</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-rebase-patch(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-rebase-patch(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-rebase-patch</code> - <span class="man-whatis">Rebases a patch</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-rebase-patch</code> &lt;patch-file&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Given you have a patch that doesn't apply to the current HEAD, but you know it
applied to some commit in the past, <code>git-rebase-patch</code> will help you find that
commit and do a rebase.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<dl>
<dt>&lt;patch-file&gt;</dt><dd> The patch to be applied.</dd>
</dl>


<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Executing</p>

<pre><code>$ git rebase-patch test.patch
</code></pre>

<p>  could give you something like that:</p>

<pre><code>Trying to find a commit the patch applies to...
Patch applied to dbcf408dd26 as 7dc8b23ae1a
First, rewinding head to replay your work on top of it...
Applying: test.patch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging README.txt
</code></pre>

<p>  Then your last commit has the changes of the patch and is named <em>test.patch</em>.</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Niklas Fiekas &lt;<a href="&#x6d;&#x61;&#x69;&#108;&#116;&#111;&#58;&#x6e;&#x69;&#107;&#108;&#x61;&#115;&#46;&#x66;&#105;&#x65;&#107;&#97;&#x73;&#x40;&#x74;&#117;&#45;&#x63;&#108;&#97;&#x75;&#115;&#116;&#104;&#x61;&#x6c;&#x2e;&#x64;&#x65;" data-bare-link="true">&#x6e;&#x69;&#107;&#108;&#x61;&#115;&#46;&#x66;&#x69;&#x65;&#107;&#97;&#x73;&#64;&#x74;&#117;&#x2d;&#x63;&#x6c;&#97;&#117;&#x73;&#116;&#104;&#x61;&#108;&#46;&#100;&#x65;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://github.com/tj/git-extras/issues</a>&gt;</p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<p>&lt;<a href="http://github.com/tj/git-extras" data-bare-link="true">http://github.com/tj/git-extras</a>&gt;</p>


  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>October 2017</li>
    <li class='tr'>git-rebase-patch(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000104000081A40000000000000000000000016627A28D00000447000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-rebase-patch.mdgit-rebase-patch(1) -- Rebases a patch
================================

## SYNOPSIS

`git-rebase-patch` &lt;patch-file&gt;

## DESCRIPTION

Given you have a patch that doesn't apply to the current HEAD, but you know it
applied to some commit in the past, `git-rebase-patch` will help you find that
commit and do a rebase.

## OPTIONS

  * &lt;patch-file&gt;:
     The patch to be applied.

## EXAMPLES

  Executing

    $ git rebase-patch test.patch

  could give you something like that:

    Trying to find a commit the patch applies to...
    Patch applied to dbcf408dd26 as 7dc8b23ae1a
    First, rewinding head to replay your work on top of it...
    Applying: test.patch
    Using index info to reconstruct a base tree...
    Falling back to patching base and 3-way merge...
    Auto-merging README.txt

  Then your last commit has the changes of the patch and is named *test.patch*.

## AUTHOR

Written by Niklas Fiekas &lt;<niklas.fiekas@tu-clausthal.de>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000105000081A40000000000000000000000016627A28D00000E9B000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-release.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-RELEASE" "1" "April 2022" "" "Git Extras"
.
.SH "NAME"
\fBgit\-release\fR \- Commit, tag and push changes to the repository
.
.SH "SYNOPSIS"
\fBgit\-release\fR [<tagname> | \-\-semver <name>] [\-r <remote>] [\-m <commit info>] [\-\-no\-empty\-commit] [\-c] [\-s] [\-u <key\-id>] [\-\-prefix <tag prefix>] [[\-\-] <hook arguments\.\.\.>]
.
.SH "DESCRIPTION"
Commits changes with message "Release <tagname>" or custom commit information, tags with the given <tagname> and pushes the branch / tags\.
.
.P
This command always creates a release commit, which could be empty if nothing changed\. It works like \fBgit merge \-\-no\-ff\fR\. If you don\'t like the behavior, you could add \fB\-\-no\-empty\-commit\fR to skip it\.
.
.P
Optionally it generates a changelog (see git\-changelog) and a remote can be defined\. The order of first \-c or \-r does not matter\.
.
.P
If \fB\.git/hook/pre\-release\fR or \fB\.git/hook/post\-release\fR exist, they will be triggered with \fBtagname\fR and extra hook arguments before/after the release\.
.
.SH "OPTIONS"
\-\-semver <name>
.
.P
If the latest tag in your repo matches the semver format requirement, you could increase part of it as the new release tag with this option\. The name must be one of the \fBmajor\fR, \fBminor\fR, \fBpatch\fR\. For example, assumed the latest tag is \fB4\.4\.0\fR, with \fBgit release \-\-semver minor\fR you will make a new release with tag \fB4\.5\.0\fR\. Use \fB\-\-prefix\fR if tag has a character before semver\.
.
.P
<tagname>
.
.P
The name of the newly created tag\. Also used in tag comment\.
.
.P
\-\-prefix <tag prefix>
.
.P
Use a prefix with a semver tag\. \fBgit release \-\-semver minor \-\-prefix r\fR would increment the latest tag r4\.4\.0 to r4\.5\.0\. This prefix can be any length, without spaces\.
.
.P
\-r <remote>
.
.P
The "remote" repository that is destination of a push operation: it is passed to git push\.
.
.P
\-m <commit info>
.
.P
use the custom commit information instead of the default message "Release <tagname>" \.
.
.P
\-\-no\-empty\-commit
.
.P
Avoid creating empty commit if nothing could be committed\.
.
.P
\-c
.
.P
Generates or populates the changelog with all commit message since the last tag\. For more info see git\-changelog\.\.
.
.P
\-s
.
.P
Create a signed and annotated tag\.
.
.P
\-u <key\-id>
.
.P
Create a tag, annotated and signed with the given key\.
.
.P
[\-\-] hook arguments\.\.\.
.
.P
The arguments listed after "\-\-" separator will be passed to pre/post\-release hook following the \fBtagname\fR\.
.
.SH "EXAMPLES"
.
.IP "\(bu" 4
Release commit with the given <tagname>\.
.
.IP
$ git release 0\.1\.0
.
.IP "\(bu" 4
Release commit with the given <tagname> and custom commit message\.
.
.IP
$ git release 0\.1\.0 \-m "+ powerful feature added\."
.
.IP "\(bu" 4
Release commit with the given <tagname> and push to specific remote\.
.
.IP
$ git release 0\.1\.0 \-r github
.
.IP "\(bu" 4
Release commit with the given <tagname> and populate changelog\.
.
.IP
$ git release 0\.1\.0 \-c
.
.IP "\(bu" 4
Release commit with the given <tagname>, populate changelog, and push to specific remote\.
.
.IP
$ git release 0\.1\.0 \-r github \-c
.
.IP "\(bu" 4
Release commit with the given <tagname>, pass <tagname> and extra argument to release hook, populate changelog, and push to specific remote\.
.
.IP
$ git release 0\.1\.0 \-r github \-c \-\- \-\-signature\-required
.
.IP "" 0
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR> Extended by David Hartmann <\fIdh@tsl\.io\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000106000081A40000000000000000000000016627A28D00001E54000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-release.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-release(1) - Commit, tag and push changes to the repository</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-release(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-release(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-release</code> - <span class="man-whatis">Commit, tag and push changes to the repository</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-release</code> [&lt;tagname&gt; | --semver &lt;name&gt;] [-r &lt;remote&gt;] [-m &lt;commit info&gt;] [--no-empty-commit] [-c] [-s] [-u &lt;key-id&gt;] [--prefix &lt;tag prefix&gt;] [[--] &lt;hook arguments...&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Commits changes with message "Release &lt;tagname&gt;" or custom commit information, tags with the given &lt;tagname&gt; and pushes the branch / tags.</p>

<p>  This command always creates a release commit, which could be empty if nothing changed. It works like <code>git merge --no-ff</code>. If you don't like the behavior, you could add <code>--no-empty-commit</code> to skip it.</p>

<p>  Optionally it generates a changelog (see git-changelog) and a remote can be defined. The order of first -c or -r does not matter.</p>

<p>  If <code>.git/hook/pre-release</code> or <code>.git/hook/post-release</code> exist, they will be triggered with <code>tagname</code> and extra hook arguments before/after the release.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  --semver &lt;name&gt;</p>

<p>  If the latest tag in your repo matches the semver format requirement, you could increase part of it as the new release tag
  with this option. The name must be one of the <code>major</code>, <code>minor</code>, <code>patch</code>. For example, assumed the latest tag is <code>4.4.0</code>, with
  <code>git release --semver minor</code> you will make a new release with tag <code>4.5.0</code>. Use <code>--prefix</code> if tag has a character before semver.</p>

<p>  &lt;tagname&gt;</p>

<p>  The name of the newly created tag. Also used in tag comment.</p>

<p>  --prefix &lt;tag prefix&gt;</p>

<p>  Use a prefix with a semver tag. <code>git release --semver minor --prefix r</code> would increment the latest tag r4.4.0 to r4.5.0. This prefix
  can be any length, without spaces.</p>

<p>  -r &lt;remote&gt;</p>

<p>  The "remote" repository that is destination of a push operation: it is passed to git push.</p>

<p>  -m &lt;commit info&gt;</p>

<p>  use the custom commit information instead of the default message "Release &lt;tagname&gt;" .</p>

<p>  --no-empty-commit</p>

<p>  Avoid creating empty commit if nothing could be committed.</p>

<p>  -c</p>

<p>  Generates or populates the changelog with all commit message since the last tag. For more info see git-changelog..</p>

<p>  -s</p>

<p>  Create a signed and annotated tag.</p>

<p>  -u &lt;key-id&gt;</p>

<p>  Create a tag, annotated and signed with the given key.</p>

<p>  [--] hook arguments...</p>

<p>  The arguments listed after "--" separator will be passed to pre/post-release hook following the <code>tagname</code>.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<ul>
<li><p>Release commit with the given &lt;tagname&gt;.</p>

<p>$ git release 0.1.0</p></li>
<li><p>Release commit with the given &lt;tagname&gt; and custom commit message.</p>

<p>$ git release 0.1.0 -m "+ powerful feature added."</p></li>
<li><p>Release commit with the given &lt;tagname&gt; and push to specific remote.</p>

<p>$ git release 0.1.0 -r github</p></li>
<li><p>Release commit with the given &lt;tagname&gt; and populate changelog.</p>

<p>$ git release 0.1.0 -c</p></li>
<li><p>Release commit with the given &lt;tagname&gt;, populate changelog, and push to specific remote.</p>

<p>$ git release 0.1.0 -r github -c</p></li>
<li><p>Release commit with the given &lt;tagname&gt;, pass &lt;tagname&gt; and extra argument to release hook,
populate changelog, and push to specific remote.</p>

<p>$ git release 0.1.0 -r github -c -- --signature-required</p></li>
</ul>


<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#x3a;&#116;&#106;&#x40;&#x76;&#105;&#115;&#x69;&#111;&#x6e;&#x2d;&#109;&#x65;&#x64;&#105;&#x61;&#46;&#99;&#97;" data-bare-link="true">&#x74;&#106;&#64;&#118;&#x69;&#115;&#105;&#111;&#x6e;&#45;&#109;&#x65;&#x64;&#105;&#x61;&#x2e;&#99;&#x61;</a>&gt;
Extended by David Hartmann &lt;<a href="&#x6d;&#x61;&#x69;&#108;&#116;&#x6f;&#x3a;&#100;&#104;&#x40;&#116;&#115;&#x6c;&#x2e;&#105;&#x6f;" data-bare-link="true">&#100;&#x68;&#64;&#116;&#x73;&#x6c;&#x2e;&#x69;&#111;</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'>April 2022</li>
    <li class='tr'>git-release(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000107000081A40000000000000000000000016627A28D00000D94000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-release.mdgit-release(1) -- Commit, tag and push changes to the repository
================================================================

## SYNOPSIS

`git-release` [&lt;tagname&gt; | --semver &lt;name&gt;] [-r &lt;remote&gt;] [-m &lt;commit info&gt;] [--no-empty-commit] [-c] [-s] [-u &lt;key-id&gt;] [--prefix &lt;tag prefix&gt;] [[--] &lt;hook arguments...&gt;]

## DESCRIPTION

  Commits changes with message "Release &lt;tagname&gt;" or custom commit information, tags with the given &lt;tagname&gt; and pushes the branch / tags.

  This command always creates a release commit, which could be empty if nothing changed. It works like `git merge --no-ff`. If you don't like the behavior, you could add `--no-empty-commit` to skip it.

  Optionally it generates a changelog (see git-changelog) and a remote can be defined. The order of first -c or -r does not matter.

  If `.git/hook/pre-release` or `.git/hook/post-release` exist, they will be triggered with `tagname` and extra hook arguments before/after the release.

## OPTIONS

  --semver &lt;name&gt;

  If the latest tag in your repo matches the semver format requirement, you could increase part of it as the new release tag
  with this option. The name must be one of the `major`, `minor`, `patch`. For example, assumed the latest tag is `4.4.0`, with
  `git release --semver minor` you will make a new release with tag `4.5.0`. Use `--prefix` if tag has a character before semver.

  &lt;tagname&gt;

  The name of the newly created tag. Also used in tag comment.

  --prefix &lt;tag prefix&gt;

  Use a prefix with a semver tag. `git release --semver minor --prefix r` would increment the latest tag r4.4.0 to r4.5.0. This prefix
  can be any length, without spaces.

  -r &lt;remote&gt;

  The "remote" repository that is destination of a push operation: it is passed to git push.

  -m &lt;commit info&gt;

  use the custom commit information instead of the default message "Release &lt;tagname&gt;" .

  --no-empty-commit

  Avoid creating empty commit if nothing could be committed.

  -c

  Generates or populates the changelog with all commit message since the last tag. For more info see git-changelog..

  -s

  Create a signed and annotated tag.

  -u &lt;key-id&gt;

  Create a tag, annotated and signed with the given key.

  [--] hook arguments...

  The arguments listed after "--" separator will be passed to pre/post-release hook following the `tagname`.

## EXAMPLES

  * Release commit with the given &lt;tagname&gt;.

    $ git release 0.1.0

  * Release commit with the given &lt;tagname&gt; and custom commit message.

    $ git release 0.1.0 -m "+ powerful feature added."

  * Release commit with the given &lt;tagname&gt; and push to specific remote.

    $ git release 0.1.0 -r github

  * Release commit with the given &lt;tagname&gt; and populate changelog.

    $ git release 0.1.0 -c

  * Release commit with the given &lt;tagname&gt;, populate changelog, and push to specific remote.

    $ git release 0.1.0 -r github -c

  * Release commit with the given &lt;tagname&gt;, pass &lt;tagname&gt; and extra argument to release hook,
    populate changelog, and push to specific remote.

    $ git release 0.1.0 -r github -c -- --signature-required


## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;
Extended by David Hartmann &lt;<dh@tsl.io>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000108000081A40000000000000000000000016627A28D0000038F000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-rename-branch.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-RENAME\-BRANCH" "1" "July 2019" "" "Git Extras"
.
.SH "NAME"
\fBgit\-rename\-branch\fR \- rename local branch and push to remote
.
.SH "SYNOPSIS"
\fBgit\-rename\-branch\fR <old\-branch> <new\-branch>
.
.SH "DESCRIPTION"
.
.nf

Rename local branch and push the new branch to remote
.
.fi
.
.SH "OPTIONS"
.
.nf

&lt;old\-branch&gt;

Old branch whose has to be renamed\. This is an optional parameter\. If no value is supplied then the current branch will be renamed\.

&lt;new\-branch&gt;

New branch name
.
.fi
.
.SH "EXAMPLES"
.
.nf

$ git rename\-branch old\-name new\-name

$ git rename\-branch new\-name
.
.fi
.
.SH "AUTHOR"
Written by Hozefa Jodiawalla <\fIhozefarules@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000109000081A40000000000000000000000016627A28D000011F1000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-rename-branch.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-rename-branch(1) - rename local branch and push to remote</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-rename-branch(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-rename-branch(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-rename-branch</code> - <span class="man-whatis">rename local branch and push to remote</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-rename-branch</code> &lt;old-branch&gt; &lt;new-branch&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<pre><code>Rename local branch and push the new branch to remote
</code></pre>

<h2 id="OPTIONS">OPTIONS</h2>

<pre><code>&amp;lt;old-branch&amp;gt;

Old branch whose has to be renamed. This is an optional parameter. If no value is supplied then the current branch will be renamed.

&amp;lt;new-branch&amp;gt;

New branch name
</code></pre>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git rename-branch old-name new-name

$ git rename-branch new-name
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Hozefa Jodiawalla &lt;<a href="&#109;&#97;&#105;&#x6c;&#x74;&#111;&#x3a;&#x68;&#x6f;&#122;&#x65;&#102;&#97;&#114;&#117;&#x6c;&#101;&#x73;&#64;&#103;&#109;&#x61;&#x69;&#x6c;&#46;&#99;&#x6f;&#x6d;" data-bare-link="true">&#x68;&#x6f;&#122;&#x65;&#x66;&#x61;&#114;&#117;&#x6c;&#x65;&#x73;&#x40;&#103;&#x6d;&#x61;&#105;&#x6c;&#x2e;&#99;&#x6f;&#109;</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'>July 2019</li>
    <li class='tr'>git-rename-branch(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000010A000081A40000000000000000000000016627A28D000002EF000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-rename-branch.mdgit-rename-branch(1) -- rename local branch and push to remote
================================

## SYNOPSIS

`git-rename-branch` &lt;old-branch&gt; &lt;new-branch&gt;

## DESCRIPTION

    Rename local branch and push the new branch to remote

## OPTIONS

    &lt;old-branch&gt;

    Old branch whose has to be renamed. This is an optional parameter. If no value is supplied then the current branch will be renamed.

    &lt;new-branch&gt;

    New branch name

## EXAMPLES

    $ git rename-branch old-name new-name

    $ git rename-branch new-name

## AUTHOR

Written by Hozefa Jodiawalla &lt;<hozefarules@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000010B000081A40000000000000000000000016627A28D00000459000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-rename-remote.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-RENAME\-REMOTE" "1" "May 2019" "" "Git Extras"
.
.SH "NAME"
\fBgit\-rename\-remote\fR \- Rename a remote
.
.SH "SYNOPSIS"
\fBgit\-rename\-remote\fR <old\-remote\-name> <new\-remote\-name>
.
.SH "DESCRIPTION"
Rename a git remote regardless of name conflict, and then list current git remotes
.
.SH "OPTIONS"
<old\-remote\-name>
.
.P
The name of the remote you want to rename\.
.
.P
<new\-remote\-name>
.
.P
The new name of the remote\.
.
.SH "EXAMPLES"
.
.nf

$ git remote \-v
origin  git@myserver\.com:myuser/foo\.git (fetch)
origin  git@myserver\.com:myuser/foo\.git (push)
upstream    git@myserver\.com:myuser/bar\.git (fetch)
upstream    git@myserver\.com:myuser/bar\.git (push)
$ git\-rename\-remote upstream origin
origin  git@myserver\.com:myuser/bar\.git (fetch)
origin  git@myserver\.com:myuser/bar\.git (push)
.
.fi
.
.SH "AUTHOR"
Written by timfeirg <\fIkkcocogogo@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000010C000081A40000000000000000000000016627A28D00001290000000000000000000000000000000000000002C00000000git-extras-7.2.0/man/git-rename-remote.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-rename-remote(1) - Rename a remote</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-rename-remote(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-rename-remote(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-rename-remote</code> - <span class="man-whatis">Rename a remote</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-rename-remote</code> &lt;old-remote-name&gt; &lt;new-remote-name&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Rename a git remote regardless of name conflict, and then list current git remotes</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;old-remote-name&gt;</p>

<p>  The name of the remote you want to rename.</p>

<p>  &lt;new-remote-name&gt;</p>

<p>  The new name of the remote.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git remote -v
origin  git@myserver.com:myuser/foo.git (fetch)
origin  git@myserver.com:myuser/foo.git (push)
upstream    git@myserver.com:myuser/bar.git (fetch)
upstream    git@myserver.com:myuser/bar.git (push)
$ git-rename-remote upstream origin
origin  git@myserver.com:myuser/bar.git (fetch)
origin  git@myserver.com:myuser/bar.git (push)
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by timfeirg &lt;<a href="&#x6d;&#x61;&#105;&#108;&#x74;&#x6f;&#58;&#107;&#x6b;&#99;&#111;&#x63;&#111;&#x67;&#x6f;&#103;&#111;&#64;&#x67;&#x6d;&#x61;&#105;&#108;&#46;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#x6b;&#x6b;&#x63;&#x6f;&#99;&#x6f;&#x67;&#111;&#103;&#111;&#64;&#103;&#x6d;&#x61;&#x69;&#108;&#x2e;&#99;&#111;&#x6d;</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 2019</li>
    <li class='tr'>git-rename-remote(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000010D000081A40000000000000000000000016627A28D000003CC000000000000000000000000000000000000002A00000000git-extras-7.2.0/man/git-rename-remote.mdgit-rename-remote(1) -- Rename a remote
=================================

## SYNOPSIS

`git-rename-remote` &lt;old-remote-name&gt; &lt;new-remote-name&gt;

## DESCRIPTION

  Rename a git remote regardless of name conflict, and then list current git remotes

## OPTIONS

  &lt;old-remote-name&gt;

  The name of the remote you want to rename.

  &lt;new-remote-name&gt;

  The new name of the remote.

## EXAMPLES

    $ git remote -v
    origin	git@myserver.com:myuser/foo.git (fetch)
    origin	git@myserver.com:myuser/foo.git (push)
    upstream	git@myserver.com:myuser/bar.git (fetch)
    upstream	git@myserver.com:myuser/bar.git (push)
    $ git-rename-remote upstream origin
    origin	git@myserver.com:myuser/bar.git (fetch)
    origin	git@myserver.com:myuser/bar.git (push)

## AUTHOR

Written by timfeirg &lt;<kkcocogogo@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000010E000081A40000000000000000000000016627A28D0000049F000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-rename-tag.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-RENAME\-TAG" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-rename\-tag\fR \- Rename a tag
.
.SH "SYNOPSIS"
\fBgit\-rename\-tag\fR <old\-tag\-name> <new\-tag\-name>
.
.SH "DESCRIPTION"
Rename a tag (locally and remotely)
.
.SH "OPTIONS"
<old\-tag\-name>
.
.P
The name of the tag you want to rename\.
.
.P
<new\-tag\-name>
.
.P
The new name of the tag\.
.
.SH "EXAMPLES"
.
.nf

$ git tag test
$ git push \-\-tags
Total 0 (delta 0), reused 0 (delta 0)
To git@myserver\.com:myuser/myrepository\.git
 * [new tag]         test \-> test
$ git tag
test
$ git rename\-tag test test2
Deleted tag \'test\' (was 1111111)
Total 0 (delta 0), reused 0 (delta 0)
To git@myserver\.com:myuser/myrepository\.git
 * [new tag]         test2 \-> test2
remote: warning: Deleting a non\-existent ref\.
To git@myserver\.com:myuser/myrepository\.git
 \- [deleted]         refs/tag/test
$ git tag
test2
.
.fi
.
.SH "AUTHOR"
Written by Jesús Espino <\fIjespinog@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000010F000081A40000000000000000000000016627A28D000012BD000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-rename-tag.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-rename-tag(1) - Rename a tag</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-rename-tag(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-rename-tag(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-rename-tag</code> - <span class="man-whatis">Rename a tag</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-rename-tag</code> &lt;old-tag-name&gt; &lt;new-tag-name&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Rename a tag (locally and remotely)</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;old-tag-name&gt;</p>

<p>  The name of the tag you want to rename.</p>

<p>  &lt;new-tag-name&gt;</p>

<p>  The new name of the tag.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git tag test
$ git push --tags
Total 0 (delta 0), reused 0 (delta 0)
To git@myserver.com:myuser/myrepository.git
 * [new tag]         test -&gt; test
$ git tag
test
$ git rename-tag test test2
Deleted tag 'test' (was 1111111)
Total 0 (delta 0), reused 0 (delta 0)
To git@myserver.com:myuser/myrepository.git
 * [new tag]         test2 -&gt; test2
remote: warning: Deleting a non-existent ref.
To git@myserver.com:myuser/myrepository.git
 - [deleted]         refs/tag/test
$ git tag
test2
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jesús Espino &lt;<a href="&#109;&#x61;&#x69;&#x6c;&#116;&#x6f;&#58;&#106;&#x65;&#115;&#x70;&#105;&#110;&#x6f;&#x67;&#x40;&#x67;&#109;&#x61;&#105;&#108;&#x2e;&#x63;&#111;&#x6d;" data-bare-link="true">&#106;&#101;&#x73;&#x70;&#x69;&#110;&#x6f;&#x67;&#x40;&#x67;&#x6d;&#97;&#x69;&#x6c;&#x2e;&#99;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-rename-tag(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000110000081A40000000000000000000000016627A28D0000043E000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-rename-tag.mdgit-rename-tag(1) -- Rename a tag
=================================

## SYNOPSIS

`git-rename-tag` &lt;old-tag-name&gt; &lt;new-tag-name&gt;

## DESCRIPTION

  Rename a tag (locally and remotely)

## OPTIONS

  &lt;old-tag-name&gt;

  The name of the tag you want to rename.

  &lt;new-tag-name&gt;

  The new name of the tag.

## EXAMPLES

    $ git tag test
    $ git push --tags
    Total 0 (delta 0), reused 0 (delta 0)
    To git@myserver.com:myuser/myrepository.git
     * [new tag]         test -> test
    $ git tag
    test
    $ git rename-tag test test2
    Deleted tag 'test' (was 1111111)
    Total 0 (delta 0), reused 0 (delta 0)
    To git@myserver.com:myuser/myrepository.git
     * [new tag]         test2 -> test2
    remote: warning: Deleting a non-existent ref.
    To git@myserver.com:myuser/myrepository.git
     - [deleted]         refs/tag/test
    $ git tag
    test2

## AUTHOR

Written by Jesús Espino &lt;<jespinog@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000111000081A40000000000000000000000016627A28D0000058E000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-repl.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-REPL" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-repl\fR \- git read\-eval\-print\-loop
.
.SH "SYNOPSIS"
\fBgit\-repl\fR
.
.SH "DESCRIPTION"
Git read\-eval\-print\-loop\. Let\'s you run \fBgit\fR commands without typing \'git\'\.
.
.P
Commands can be prefixed with an exclamation mark (!) to be interpreted as a regular command\.
.
.P
Type \fBexit\fR or \fBquit\fR to end the repl session\.
.
.SH "COMMANDS"
<command>
.
.P
Interpreted as \fBgit <command>\fR\.
.
.P
!<command>
.
.P
Interpreted as \fB<command>\fR (not through \fBgit\fR)\.
.
.P
ls
.
.P
Equivalent of \'git ls\-files\'\.
.
.P
exit|quit
.
.P
Ends the repl session\.
.
.SH "EXAMPLES"
.
.nf

$ git repl
git version 2\.9\.2
git\-extras version 3\.0\.0
type \'ls\' to ls files below current directory,
\'!command\' to execute any command or just \'subcommand\' to execute any git subcommand

git (master)> ls\-files
History\.md
Makefile
Readme\.md
bin/git\-changelog
bin/git\-count
bin/git\-delete\-branch
bin/git\-delete\-tag
bin/git\-ignore
bin/git\-release

git (master)> !echo Straight from the shell!
Straight from the shell!

git (master)> quit
.
.fi
.
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000112000081A40000000000000000000000016627A28D000013DE000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-repl.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-repl(1) - git read-eval-print-loop</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="#COMMANDS">COMMANDS</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-repl(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-repl(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-repl</code> - <span class="man-whatis">git read-eval-print-loop</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-repl</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Git read-eval-print-loop. Let's you run <code>git</code> commands without typing 'git'.</p>

<p>  Commands can be prefixed with an exclamation mark (!) to be interpreted as
  a regular command.</p>

<p>  Type <code>exit</code> or <code>quit</code> to end the repl session.</p>

<h2 id="COMMANDS">COMMANDS</h2>

<p>  &lt;command&gt;</p>

<p>  Interpreted as <code>git &lt;command></code>.</p>

<p>  !&lt;command&gt;</p>

<p>  Interpreted as <code>&lt;command></code> (not through <code>git</code>).</p>

<p>  ls</p>

<p>  Equivalent of 'git ls-files'.</p>

<p>  exit|quit</p>

<p>  Ends the repl session.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git repl
git version 2.9.2
git-extras version 3.0.0
type 'ls' to ls files below current directory,
'!command' to execute any command or just 'subcommand' to execute any git subcommand

git (master)&gt; ls-files
History.md
Makefile
Readme.md
bin/git-changelog
bin/git-count
bin/git-delete-branch
bin/git-delete-tag
bin/git-ignore
bin/git-release

git (master)&gt; !echo Straight from the shell!
Straight from the shell!

git (master)&gt; quit
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="&#x6d;&#x61;&#105;&#108;&#x74;&#111;&#58;&#x74;&#106;&#64;&#118;&#105;&#x73;&#105;&#111;&#x6e;&#45;&#x6d;&#x65;&#x64;&#105;&#x61;&#x2e;&#x63;&#97;" data-bare-link="true">&#x74;&#x6a;&#x40;&#118;&#x69;&#115;&#x69;&#111;&#110;&#45;&#x6d;&#101;&#100;&#x69;&#97;&#46;&#x63;&#x61;</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'>October 2017</li>
    <li class='tr'>git-repl(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000113000081A40000000000000000000000016627A28D00000502000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-repl.mdgit-repl(1) -- git read-eval-print-loop
=======================================

## SYNOPSIS

`git-repl`

## DESCRIPTION

  Git read-eval-print-loop. Let's you run `git` commands without typing 'git'.

  Commands can be prefixed with an exclamation mark (!) to be interpreted as
  a regular command.

  Type `exit` or `quit` to end the repl session.

## COMMANDS

  &lt;command&gt;

  Interpreted as `git <command>`.

  !&lt;command&gt;

  Interpreted as `<command>` (not through `git`).

  ls

  Equivalent of 'git ls-files'.

  exit|quit

  Ends the repl session.


## EXAMPLES

    $ git repl
    git version 2.9.2
    git-extras version 3.0.0
    type 'ls' to ls files below current directory,
    '!command' to execute any command or just 'subcommand' to execute any git subcommand

    git (master)> ls-files
    History.md
    Makefile
    Readme.md
    bin/git-changelog
    bin/git-count
    bin/git-delete-branch
    bin/git-delete-tag
    bin/git-ignore
    bin/git-release

    git (master)> !echo Straight from the shell!
    Straight from the shell!

    git (master)> quit

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000114000081A40000000000000000000000016627A28D00000384000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-reset-file.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-RESET\-FILE" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-reset\-file\fR \- Reset one file
.
.SH "SYNOPSIS"
\fBgit\-reset\-file\fR [<filename>] commit\-hash
.
.SH "DESCRIPTION"
Reset one file to HEAD or certain commit\-hash
.
.SH "OPTIONS"
<filename>
.
.P
The name of the file to reset\.
.
.P
<commit\-hash>
.
.P
(Optional) Hash of commit to reset the file to\. Defaults to HEAD\.
.
.SH "EXAMPLES"
Reset one file to HEAD
.
.IP "" 4
.
.nf

$ git reset\-file \.htaccess
.
.fi
.
.IP "" 0
.
.P
or reset one file to certain commit
.
.IP "" 4
.
.nf

$ git reset\-file \.htaccess dc82b19
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Sasha Khamkov <\fIsanusart@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000115000081A40000000000000000000000016627A28D00001191000000000000000000000000000000000000002900000000git-extras-7.2.0/man/git-reset-file.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-reset-file(1) - Reset one file</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-reset-file(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-reset-file(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-reset-file</code> - <span class="man-whatis">Reset one file</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-reset-file</code> [&lt;filename&gt;] commit-hash</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Reset one file to HEAD or certain commit-hash</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;filename&gt;</p>

<p>  The name of the file to reset.</p>

<p>  &lt;commit-hash&gt;</p>

<p>  (Optional) Hash of commit to reset the file to. Defaults to HEAD.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Reset one file to HEAD</p>

<pre><code>$ git reset-file .htaccess
</code></pre>

<p>  or reset one file to certain commit</p>

<pre><code>$ git reset-file .htaccess dc82b19
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Sasha Khamkov &lt;<a href="&#109;&#97;&#105;&#108;&#x74;&#x6f;&#x3a;&#x73;&#97;&#x6e;&#x75;&#115;&#97;&#x72;&#x74;&#64;&#x67;&#x6d;&#97;&#105;&#108;&#46;&#99;&#x6f;&#109;" data-bare-link="true">&#115;&#97;&#x6e;&#x75;&#115;&#x61;&#x72;&#x74;&#x40;&#x67;&#109;&#97;&#105;&#x6c;&#x2e;&#99;&#111;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-reset-file(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000116000081A40000000000000000000000016627A28D000002B3000000000000000000000000000000000000002700000000git-extras-7.2.0/man/git-reset-file.mdgit-reset-file(1) -- Reset one file
================================

## SYNOPSIS

`git-reset-file` [&lt;filename&gt;] commit-hash

## DESCRIPTION

  Reset one file to HEAD or certain commit-hash

## OPTIONS

  &lt;filename&gt;

  The name of the file to reset.

  &lt;commit-hash&gt;

  (Optional) Hash of commit to reset the file to. Defaults to HEAD.

## EXAMPLES

  Reset one file to HEAD

	$ git reset-file .htaccess

  or reset one file to certain commit

	$ git reset-file .htaccess dc82b19

## AUTHOR

Written by Sasha Khamkov &lt;<sanusart@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000117000081A40000000000000000000000016627A28D00000327000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-root.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-ROOT" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-root\fR \- show path of root
.
.SH "SYNOPSIS"
\fBgit root\fR \fIOPTIONS\fR
.
.SH "DESCRIPTION"
print the path for the root directory of git repo
.
.SH "OPTIONS"
\-r, \-\-relative
.
.P
show the relative path from root directory to current directory
.
.SH "EXAMPLES"
.
.nf

$ cd \.\.\./git\-extras/bin
$ git root \-r
bin/
$ git root
/home/\.\.\./git\-extras
$ cd `git root`
$ pwd
/home/\.\.\./git\-extras
# then we can
$ git add \. && git commit
.
.fi
.
.SH "AUTHOR"
Written by spacewander <\fIspacewanderlzx@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000118000081A40000000000000000000000016627A28D00001199000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-root.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-root(1) - show path of root</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-root(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-root(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-root</code> - <span class="man-whatis">show path of root</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git root</code> <a href="#OPTIONS" title="OPTIONS" data-bare-link="true">OPTIONS</a></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>print the path for the root directory of git repo</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -r, --relative</p>

<p>  show the relative path from root directory to current directory</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ cd .../git-extras/bin
$ git root -r
bin/
$ git root
/home/.../git-extras
$ cd `git root`
$ pwd
/home/.../git-extras
# then we can
$ git add . &amp;&amp; git commit
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by spacewander &lt;<a href="&#109;&#97;&#105;&#108;&#x74;&#x6f;&#x3a;&#x73;&#112;&#x61;&#x63;&#101;&#119;&#x61;&#x6e;&#100;&#x65;&#x72;&#108;&#122;&#120;&#64;&#103;&#x6d;&#97;&#105;&#108;&#x2e;&#x63;&#111;&#x6d;" data-bare-link="true">&#x73;&#x70;&#x61;&#x63;&#101;&#119;&#97;&#x6e;&#x64;&#101;&#114;&#x6c;&#122;&#x78;&#x40;&#x67;&#109;&#97;&#x69;&#x6c;&#46;&#x63;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-root(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000119000081A40000000000000000000000016627A28D000002AB000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-root.mdgit-root(1) -- show path of root
========================================

## SYNOPSIS

`git root` [OPTIONS]

## DESCRIPTION

print the path for the root directory of git repo

## OPTIONS

  -r, --relative

  show the relative path from root directory to current directory

## EXAMPLES


    $ cd .../git-extras/bin
    $ git root -r
    bin/
    $ git root
    /home/.../git-extras
    $ cd `git root`
    $ pwd
    /home/.../git-extras
    # then we can
    $ git add . && git commit

## AUTHOR

Written by spacewander &lt;<spacewanderlzx@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000011A000081A40000000000000000000000016627A28D00000B8E000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-scp.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SCP" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-scp\fR \- Copy files to SSH compatible \fBgit\-remote\fR
.
.SH "SYNOPSIS"
.
.nf

`git scp` \-h|help|?
`git scp` <remote> [<commits>\.\.\.|<path>\.\.\.]
`git rscp` <remote> <path>
.
.fi
.
.SH "DESCRIPTION"
A convenient way to copy files from the current working tree to the working directory of a remote repository\. If a \fB<commits>\.\.\.\fR is provided, only files that has changed within the commit range will be copied\.
.
.P
Internally this script uses \fBrsync\fR and not \fBscp\fR as the name suggests\.
.
.P
\fBgit\-rscp\fR \- The reverse of \fBgit\-scp\fR\. Copies specific files from the working directory of a remote repository to the current working directory\.
.
.SH "OPTIONS"
<remote>
.
.IP "" 4
.
.nf

The git remote where you want to copy your files\.
.
.fi
.
.IP "" 0
.
.P
<commits>\.\.\.
.
.IP "" 4
.
.nf

Any commit, commit range or tree\. Uses `git\-diff`(1)
.
.fi
.
.IP "" 0
.
.P
<path>\.\.\.
.
.IP "" 4
.
.nf

The <paths> parameters, when given, are used to limit the diff to the named paths (you can give directory names and get diff for all files under them)\.
.
.fi
.
.IP "" 0
.
.SH "GIT CONFIGS"
To sanitize files using \fBdos2unix\fR before copying files
.
.IP "" 4
.
.nf

$ git config \-\-global \-\-add extras\.scp\.sanitize dos2unix
.
.fi
.
.IP "" 0
.
.P
You can run the files through PHP lint (i\.e\. \fBphp \-l\fR) before copying files
.
.IP "" 4
.
.nf

$ git config \-\-global \-\-add extras\.scp\.sanitize php_lint
.
.fi
.
.IP "" 0
.
.SH "EXAMPLES"
Make sure you have \fBgit\-remote\fR(1) setup
.
.IP "" 4
.
.nf

$ git remote add staging myStagingServer:/var/www/html
.
.fi
.
.IP "" 0
.
.P
Copy unstaged files to remote\. Useful when you want to make quick test without making any commits
.
.IP "" 4
.
.nf

$ git scp staging
.
.fi
.
.IP "" 0
.
.P
Copy staged and unstaged files to remote
.
.IP "" 4
.
.nf

$ git scp staging HEAD
.
.fi
.
.IP "" 0
.
.P
Copy files that has been changed in the last commit, plus any staged or unstaged files to remote
.
.IP "" 4
.
.nf

$ git scp staging HEAD~1
.
.fi
.
.IP "" 0
.
.P
Copy files that has been changed between now and a tag
.
.IP "" 4
.
.nf

$ git scp staging v1\.2\.3
.
.fi
.
.IP "" 0
.
.P
Copy specific files
.
.IP "" 4
.
.nf

$ git scp staging index\.html \.gitignore \.htaccess
.
.fi
.
.IP "" 0
.
.P
Copy specific directory
.
.IP "" 4
.
.nf

$ git scp staging js/vendor/
.
.fi
.
.IP "" 0
.
.P
Copy files from specific directory to multiple servers
.
.IP "" 4
.
.nf

$ for dest in web1 web2 web3; do
    git diff \-\-name\-only 4\.8\.3 4\.8\.2 app/code/community app/design skin/ | xargs git scp $dest
done;
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Chern Jie <\fIlim@chernjie\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/chernjie/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000011B000081A40000000000000000000000016627A28D000019CE000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-scp.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-scp(1) - Copy files to SSH compatible &lt;code&gt;git-remote&lt;/code&gt;</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="#GIT-CONFIGS">GIT CONFIGS</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-scp(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-scp(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-scp</code> - <span class="man-whatis">Copy files to SSH compatible <code>git-remote</code></span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<pre><code>`git scp` -h|help|?
`git scp` &lt;remote> [&lt;commits>...|&lt;path>...]
`git rscp` &lt;remote> &lt;path>
</code></pre>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>A convenient way to copy files from the current working tree to the working directory of a remote repository. If a <code>&lt;commits>...</code> is provided, only files that has changed within the commit range will be copied.</p>

<p>Internally this script uses <code>rsync</code> and not <code>scp</code> as the name suggests.</p>

<p><code>git-rscp</code> - The reverse of <code>git-scp</code>. Copies specific files from the working directory of a remote repository to the current working directory.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;remote&gt;</p>

<pre><code>The git remote where you want to copy your files.
</code></pre>

<p>  &lt;commits&gt;...</p>

<pre><code>Any commit, commit range or tree. Uses `git-diff`(1)
</code></pre>

<p>  &lt;path&gt;...</p>

<pre><code>The &lt;paths> parameters, when given, are used to limit the diff to the named paths (you can give directory names and get diff for all files under them).
</code></pre>

<h2 id="GIT-CONFIGS">GIT CONFIGS</h2>

<p> To sanitize files using <code>dos2unix</code> before copying files</p>

<pre><code>$ git config --global --add extras.scp.sanitize dos2unix
</code></pre>

<p> You can run the files through PHP lint (i.e. <code>php -l</code>) before copying files</p>

<pre><code>$ git config --global --add extras.scp.sanitize php_lint
</code></pre>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p> Make sure you have <code>git-remote</code>(1) setup</p>

<pre><code>$ git remote add staging myStagingServer:/var/www/html
</code></pre>

<p> Copy unstaged files to remote. Useful when you want to make quick test without making any commits</p>

<pre><code>$ git scp staging
</code></pre>

<p> Copy staged and unstaged files to remote</p>

<pre><code>$ git scp staging HEAD
</code></pre>

<p> Copy files that has been changed in the last commit, plus any staged or unstaged files to remote</p>

<pre><code>$ git scp staging HEAD~1
</code></pre>

<p> Copy files that has been changed between now and a tag</p>

<pre><code>$ git scp staging v1.2.3
</code></pre>

<p> Copy specific files</p>

<pre><code>$ git scp staging index.html .gitignore .htaccess
</code></pre>

<p> Copy specific directory</p>

<pre><code>$ git scp staging js/vendor/
</code></pre>

<p> Copy files from specific directory to multiple servers</p>

<pre><code>$ for dest in web1 web2 web3; do
    git diff --name-only 4.8.3 4.8.2 app/code/community app/design skin/ | xargs git scp $dest
done;
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Chern Jie &lt;<a href="&#109;&#97;&#105;&#108;&#x74;&#x6f;&#x3a;&#x6c;&#105;&#x6d;&#x40;&#99;&#104;&#x65;&#x72;&#110;&#x6a;&#x69;&#101;&#46;&#99;&#111;&#109;" data-bare-link="true">&#x6c;&#105;&#109;&#64;&#x63;&#x68;&#101;&#x72;&#x6e;&#x6a;&#x69;&#x65;&#46;&#99;&#111;&#x6d;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;<a href="https://github.com/chernjie/git-extras/issues" data-bare-link="true">https://github.com/chernjie/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'>October 2017</li>
    <li class='tr'>git-scp(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000011C000081A40000000000000000000000016627A28D00000932000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-scp.mdgit-scp(1) -- Copy files to SSH compatible `git-remote`
=======================================================

## SYNOPSIS

    `git scp` -h|help|?
    `git scp` <remote> [<commits>...|<path>...]
    `git rscp` <remote> <path>

## DESCRIPTION

A convenient way to copy files from the current working tree to the working directory of a remote repository. If a `<commits>...` is provided, only files that has changed within the commit range will be copied.

Internally this script uses `rsync` and not `scp` as the name suggests. 

`git-rscp` - The reverse of `git-scp`. Copies specific files from the working directory of a remote repository to the current working directory.

## OPTIONS

  &lt;remote&gt;

    The git remote where you want to copy your files.

  &lt;commits&gt;...

    Any commit, commit range or tree. Uses `git-diff`(1)

  &lt;path&gt;...

    The <paths> parameters, when given, are used to limit the diff to the named paths (you can give directory names and get diff for all files under them).

## GIT CONFIGS

 To sanitize files using `dos2unix` before copying files

    $ git config --global --add extras.scp.sanitize dos2unix

 You can run the files through PHP lint (i.e. `php -l`) before copying files

    $ git config --global --add extras.scp.sanitize php_lint

## EXAMPLES

 Make sure you have `git-remote`(1) setup

    $ git remote add staging myStagingServer:/var/www/html

 Copy unstaged files to remote. Useful when you want to make quick test without making any commits

    $ git scp staging

 Copy staged and unstaged files to remote

    $ git scp staging HEAD

 Copy files that has been changed in the last commit, plus any staged or unstaged files to remote

    $ git scp staging HEAD~1

 Copy files that has been changed between now and a tag

    $ git scp staging v1.2.3

 Copy specific files

    $ git scp staging index.html .gitignore .htaccess

 Copy specific directory

    $ git scp staging js/vendor/

 Copy files from specific directory to multiple servers

    $ for dest in web1 web2 web3; do
        git diff --name-only 4.8.3 4.8.2 app/code/community app/design skin/ | xargs git scp $dest
    done;

## AUTHOR

Written by Chern Jie &lt;<lim@chernjie.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/chernjie/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000011D000081A40000000000000000000000016627A28D00000806000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/git-sed.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SED" "1" "January 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-sed\fR \- replace patterns in git\-controlled files
.
.SH "SYNOPSIS"
\fBgit\-sed\fR [ \-c ] [ \-f \fIflags\fR ] \fIsearch\fR \fIreplacement\fR [ \fIflags\fR ] [ \-\- \fIpathspec\fR ]
.
.SH "DESCRIPTION"
Run git grep and then send results to sed for replacement with the given flags, if they are provided via \-f or as the third argument\.
.
.P
Also runs git commit if \-c is provided\.
.
.SH "OPTIONS"
\-c
.
.P
commit the resulting changes with a standard commit message detailing the exact command ran\. It will fail if there are unstaged changes\.
.
.P
<flags> \-f <flags>
.
.P
will use the given regex flags in the sed command (for example "g" replaces multiple times on the same line)\.
.
.P
<search>
.
.P
the pattern passed to grep and to the first part of the sed expression\.
.
.P
<replacement>
.
.P
the replacement passed to sed, the second part of the sed expression\.
.
.P
\-\- <pathspec>
.
.P
limit the paths which will be applied on\. Read https://git\-scm\.com/docs/gitglossary\.html#Documentation/gitglossary\.txt\-aiddefpathspecapathspec for the supported patterns of pathspec\.
.
.SH "EXAMPLES"
.
.nf

$ git sed \'my_function\' \'do_stuff\'
# \.\.\. only does the changes, without committing
$ git commit \-m"use proper function name"
$ git sed \-c \'do_stuff\' \'stuff\'
# \.\. does the changes and a commit
$ git sed \-f g do_stuff stuff
# \.\. g is actually pretty important, otherwise you will miss some
# stuff!
$ git sed \'my_method\' \'do_stuff\' \-\- lake/
# \.\.\. only replace \'my_method\' occurs under lake/\.
.
.fi
.
.SH "AUTHOR"
Written by Antoine Beaupré <\fIanarcat@debian\.org\fR> from inspiration by https://github\.com/da\-x/git\-search\-replace and https://stackoverflow\.com/questions/9651898/is\-there\-a\-git\-sed\-or\-equivalent
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000011E000081A40000000000000000000000016627A28D00001640000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-sed.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-sed(1) - replace patterns in git-controlled files</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-sed(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-sed(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-sed</code> - <span class="man-whatis">replace patterns in git-controlled files</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-sed</code> [ -c ] [ -f <var>flags</var> ] <var>search</var> <var>replacement</var> [ <var>flags</var> ] [ -- <var>pathspec</var> ]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Run git grep and then send results to sed for replacement with the
given flags, if they are provided via -f or as the third argument.</p>

<p>Also runs git commit if -c is provided.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -c</p>

<p>  commit the resulting changes with a standard commit message
  detailing the exact command ran. It will fail if there are unstaged
  changes.</p>

<p>  &lt;flags&gt;
  -f &lt;flags&gt;</p>

<p>  will use the given regex flags in the sed command (for example "g"
  replaces multiple times on the same line).</p>

<p>  &lt;search&gt;</p>

<p>  the pattern passed to grep and to the first part of the sed expression.</p>

<p>  &lt;replacement&gt;</p>

<p>  the replacement passed to sed, the second part of the sed expression.</p>

<p>  -- &lt;pathspec&gt;</p>

<p>  limit the paths which will be applied on.
  Read https://git-scm.com/docs/gitglossary.html#Documentation/gitglossary.txt-aiddefpathspecapathspec
  for the supported patterns of pathspec.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git sed 'my_function' 'do_stuff'
# ... only does the changes, without committing
$ git commit -m"use proper function name"
$ git sed -c 'do_stuff' 'stuff'
# .. does the changes and a commit
$ git sed -f g do_stuff stuff
# .. g is actually pretty important, otherwise you will miss some
# stuff!
$ git sed 'my_method' 'do_stuff' -- lake/
# ... only replace 'my_method' occurs under lake/.
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Antoine Beaupré &lt;<a href="&#x6d;&#x61;&#105;&#108;&#116;&#111;&#58;&#x61;&#x6e;&#97;&#x72;&#99;&#97;&#x74;&#x40;&#x64;&#101;&#98;&#x69;&#x61;&#110;&#46;&#x6f;&#x72;&#x67;" data-bare-link="true">&#97;&#110;&#97;&#x72;&#99;&#97;&#x74;&#64;&#100;&#x65;&#98;&#105;&#97;&#x6e;&#x2e;&#111;&#x72;&#103;</a>&gt; from
inspiration by https://github.com/da-x/git-search-replace and
https://stackoverflow.com/questions/9651898/is-there-a-git-sed-or-equivalent</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'>January 2020</li>
    <li class='tr'>git-sed(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000011F000081A40000000000000000000000016627A28D0000076C000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-sed.mdgit-sed(1) -- replace patterns in git-controlled files
======================================================

## SYNOPSIS

`git-sed` [ -c ] [ -f <flags> ] <search> <replacement> [ <flags> ] [ -- <pathspec> ]

## DESCRIPTION

Run git grep and then send results to sed for replacement with the
given flags, if they are provided via -f or as the third argument.

Also runs git commit if -c is provided.

## OPTIONS

  -c

  commit the resulting changes with a standard commit message
  detailing the exact command ran. It will fail if there are unstaged
  changes.

  &lt;flags&gt;
  -f &lt;flags&gt;

  will use the given regex flags in the sed command (for example "g"
  replaces multiple times on the same line).

  &lt;search&gt;

  the pattern passed to grep and to the first part of the sed expression.

  &lt;replacement&gt;

  the replacement passed to sed, the second part of the sed expression.

  -- &lt;pathspec&gt;

  limit the paths which will be applied on.
  Read https://git-scm.com/docs/gitglossary.html#Documentation/gitglossary.txt-aiddefpathspecapathspec
  for the supported patterns of pathspec.

## EXAMPLES

    $ git sed 'my_function' 'do_stuff'
    # ... only does the changes, without committing
    $ git commit -m"use proper function name"
    $ git sed -c 'do_stuff' 'stuff'
    # .. does the changes and a commit
    $ git sed -f g do_stuff stuff
    # .. g is actually pretty important, otherwise you will miss some
    # stuff!
    $ git sed 'my_method' 'do_stuff' -- lake/
    # ... only replace 'my_method' occurs under lake/.

## AUTHOR

Written by Antoine Beaupré &lt;<anarcat@debian.org>&gt; from
inspiration by https://github.com/da-x/git-search-replace and
https://stackoverflow.com/questions/9651898/is-there-a-git-sed-or-equivalent

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000120000081A40000000000000000000000016627A28D000002D5000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-setup.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SETUP" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-setup\fR \- Set up a git repository
.
.SH "SYNOPSIS"
\fBgit\-setup\fR [<directory>]
.
.SH "DESCRIPTION"
Set up a git repository if one doesn\'t exist, add all files and make an initial commit\.
.
.SH "OPTIONS"
<directory>
.
.P
The name of a new directory to setup\. By default, the current working directory\.
.
.SH "EXAMPLES"
.
.nf

$ git setup path/to/repository
.
.fi
.
.SH "AUTHOR"
Written by Aggelos Orfanakos <\fIagorf@agorf\.gr\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000121000081A40000000000000000000000016627A28D000010BB000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-setup.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-setup(1) - Set up a git repository</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-setup(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-setup(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-setup</code> - <span class="man-whatis">Set up a git repository</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-setup</code> [&lt;directory&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Set up a git repository if one doesn't exist, add all files and make an initial commit.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;directory&gt;</p>

<p>  The name of a new directory to setup. By default, the current working directory.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git setup path/to/repository
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Aggelos Orfanakos &lt;<a href="&#109;&#97;&#105;&#x6c;&#x74;&#111;&#58;&#x61;&#103;&#x6f;&#x72;&#x66;&#64;&#97;&#x67;&#x6f;&#114;&#x66;&#x2e;&#x67;&#x72;" data-bare-link="true">&#x61;&#103;&#x6f;&#x72;&#102;&#64;&#97;&#x67;&#x6f;&#114;&#x66;&#x2e;&#103;&#114;</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'>October 2017</li>
    <li class='tr'>git-setup(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000122000081A40000000000000000000000016627A28D00000259000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-setup.mdgit-setup(1) -- Set up a git repository
=======================================

## SYNOPSIS

`git-setup` [&lt;directory&gt;]

## DESCRIPTION

Set up a git repository if one doesn't exist, add all files and make an initial commit.
           
## OPTIONS

  &lt;directory&gt;

  The name of a new directory to setup. By default, the current working directory.

## EXAMPLES

    $ git setup path/to/repository

## AUTHOR

Written by Aggelos Orfanakos &lt;<agorf@agorf.gr>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000123000081A40000000000000000000000016627A28D0000025B000000000000000000000000000000000000003000000000git-extras-7.2.0/man/git-show-merged-branches.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SHOW\-MERGED\-BRANCHES" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-show\-merged\-branches\fR \- Show merged branches
.
.SH "SYNOPSIS"
\fBgit\-show\-merged\-branches\fR
.
.SH "DESCRIPTION"
Show all branches merged in to current HEAD\.
.
.SH "EXAMPLES"
.
.nf

$ git show\-merged\-branches
.
.fi
.
.SH "AUTHOR"
Written by Paul Schreiber <\fIpaulschreiber@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000124000081A40000000000000000000000016627A28D0000107E000000000000000000000000000000000000003300000000git-extras-7.2.0/man/git-show-merged-branches.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-show-merged-branches(1) - Show merged branches</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="#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-show-merged-branches(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-show-merged-branches(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-show-merged-branches</code> - <span class="man-whatis">Show merged branches</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-show-merged-branches</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Show all branches merged in to current HEAD.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git show-merged-branches
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Paul Schreiber &lt;<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x70;&#97;&#x75;&#x6c;&#x73;&#99;&#104;&#x72;&#x65;&#x69;&#x62;&#101;&#x72;&#x40;&#103;&#109;&#97;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#109;" data-bare-link="true">&#112;&#x61;&#x75;&#x6c;&#115;&#x63;&#104;&#x72;&#101;&#105;&#98;&#x65;&#x72;&#x40;&#103;&#109;&#97;&#x69;&#108;&#46;&#x63;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-show-merged-branches(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000125000081A40000000000000000000000016627A28D000001C5000000000000000000000000000000000000003100000000git-extras-7.2.0/man/git-show-merged-branches.mdgit-show-merged-branches(1) -- Show merged branches
===================================================

## SYNOPSIS

`git-show-merged-branches`

## DESCRIPTION

  Show all branches merged in to current HEAD.

## EXAMPLES

    $ git show-merged-branches

## AUTHOR

Written by Paul Schreiber &lt;<paulschreiber@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000126000081A40000000000000000000000016627A28D00000780000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-show-tree.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SHOW\-TREE" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-show\-tree\fR \- show branch tree of commit history
.
.SH "SYNOPSIS"
\fBgit\-show\-tree\fR
.
.SH "DESCRIPTION"
Show the decorated graph view of one liner summarized commits from all branches\.
.
.SH "EXAMPLES"
Output the commit history log for all branches as tree view:
.
.IP "" 4
.
.nf

*   4b57684 (HEAD, develop) Merge branch upstream master\.
|\e
| *   515e94a Merge pull request #128 from nickl\-/git\-extras\-html\-hyperlinks
| |\e
| | * 815db8b (nickl/git\-extras\-html\-hyperlinks, git\-extras\-html\-hyperlinks) help ronn make hyperlinks\.
| * | 7398d10 (nickl/develop) Fix #127 git\-ignore won\'t add duplicates\.
| |/
| | * ab72c1e (refs/stash) WIP on develop: 5e943f5 Fix #127 git\-ignore won\'t add duplicates\.
| |/
|/|
* | 730ca89 (bolshakov) Rebase bolshakov with master
|/
* 60f8371 (origin/master, origin/HEAD, master) Merge pull request #126 from agrimaldi/fix\-changelog\-last\-tag
* 9627780 (tag: 1\.7\.0) Release 1\.7\.0
* 2e53ff6 (tag: 1\.6\.0) Release 1\.6\.0
* bbd32d8 (tag: 1\.5\.1) Release 1\.5\.1
| * 6b6b758 (nickl/gh\-pages, gh\-pages) add example git\-extras to gh\-pages
| * 19cfd11 (origin/gh\-pages) Index page
| | * 881a70e (tag: 1\.5\.0) Release 1\.5\.0
| |/
|/|
* | 4db5ee0 (tag: 1\.4\.0) Release 1\.4\.0
* | 9b0bc89 (tag: 1\.3\.0) Release 1\.3\.0
* | be49961 (tag: 1\.2\.0) Release 1\.2\.0
* | c1d2dfc (tag: 1\.1\.0) Release 1\.1\.0
* | 4a56adb (tag: 1\.0\.0) Release 1\.0\.0
* | 948308b (tag: 0\.9\.0) Release 0\.9\.0
* | 40b131d (tag: 0\.8\.1) Release 0\.8\.1
* | 391431d (tag: 0\.8\.0) Release 0\.8\.0
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Nick Lombard \fIgithub@jigsoft\.co\.za\fR
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000127000081A40000000000000000000000016627A28D00001511000000000000000000000000000000000000002800000000git-extras-7.2.0/man/git-show-tree.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-show-tree(1) - show branch tree of commit history</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="#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-show-tree(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-show-tree(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-show-tree</code> - <span class="man-whatis">show branch tree of commit history</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-show-tree</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Show the decorated graph view of one liner summarized commits from all branches.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Output the commit history log for all branches as tree view:</p>

<pre><code>*   4b57684 (HEAD, develop) Merge branch upstream master.
|\
| *   515e94a Merge pull request #128 from nickl-/git-extras-html-hyperlinks
| |\
| | * 815db8b (nickl/git-extras-html-hyperlinks, git-extras-html-hyperlinks) help ronn make hyperlinks.
| * | 7398d10 (nickl/develop) Fix #127 git-ignore won't add duplicates.
| |/
| | * ab72c1e (refs/stash) WIP on develop: 5e943f5 Fix #127 git-ignore won't add duplicates.
| |/
|/|
* | 730ca89 (bolshakov) Rebase bolshakov with master
|/
* 60f8371 (origin/master, origin/HEAD, master) Merge pull request #126 from agrimaldi/fix-changelog-last-tag
* 9627780 (tag: 1.7.0) Release 1.7.0
* 2e53ff6 (tag: 1.6.0) Release 1.6.0
* bbd32d8 (tag: 1.5.1) Release 1.5.1
| * 6b6b758 (nickl/gh-pages, gh-pages) add example git-extras to gh-pages
| * 19cfd11 (origin/gh-pages) Index page
| | * 881a70e (tag: 1.5.0) Release 1.5.0
| |/
|/|
* | 4db5ee0 (tag: 1.4.0) Release 1.4.0
* | 9b0bc89 (tag: 1.3.0) Release 1.3.0
* | be49961 (tag: 1.2.0) Release 1.2.0
* | c1d2dfc (tag: 1.1.0) Release 1.1.0
* | 4a56adb (tag: 1.0.0) Release 1.0.0
* | 948308b (tag: 0.9.0) Release 0.9.0
* | 40b131d (tag: 0.8.1) Release 0.8.1
* | 391431d (tag: 0.8.0) Release 0.8.0
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Nick Lombard <a href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#58;&#x67;&#105;&#x74;&#x68;&#x75;&#98;&#64;&#x6a;&#x69;&#x67;&#115;&#111;&#102;&#x74;&#x2e;&#x63;&#x6f;&#46;&#x7a;&#97;" data-bare-link="true">&#103;&#105;&#116;&#x68;&#117;&#x62;&#64;&#x6a;&#x69;&#103;&#x73;&#x6f;&#102;&#116;&#46;&#x63;&#111;&#46;&#x7a;&#x61;</a></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'>October 2017</li>
    <li class='tr'>git-show-tree(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000128000081A40000000000000000000000016627A28D00000705000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-show-tree.mdgit-show-tree(1) -- show branch tree of commit history
======================================================

## SYNOPSIS

`git-show-tree`

## DESCRIPTION

Show the decorated graph view of one liner summarized commits from all branches.

## EXAMPLES

  Output the commit history log for all branches as tree view:

    *   4b57684 (HEAD, develop) Merge branch upstream master.
    |\
    | *   515e94a Merge pull request #128 from nickl-/git-extras-html-hyperlinks
    | |\
    | | * 815db8b (nickl/git-extras-html-hyperlinks, git-extras-html-hyperlinks) help ronn make hyperlinks.
    | * | 7398d10 (nickl/develop) Fix #127 git-ignore won't add duplicates.
    | |/
    | | * ab72c1e (refs/stash) WIP on develop: 5e943f5 Fix #127 git-ignore won't add duplicates.
    | |/
    |/|
    * | 730ca89 (bolshakov) Rebase bolshakov with master
    |/
    * 60f8371 (origin/master, origin/HEAD, master) Merge pull request #126 from agrimaldi/fix-changelog-last-tag
    * 9627780 (tag: 1.7.0) Release 1.7.0
    * 2e53ff6 (tag: 1.6.0) Release 1.6.0
    * bbd32d8 (tag: 1.5.1) Release 1.5.1
    | * 6b6b758 (nickl/gh-pages, gh-pages) add example git-extras to gh-pages
    | * 19cfd11 (origin/gh-pages) Index page
    | | * 881a70e (tag: 1.5.0) Release 1.5.0
    | |/
    |/|
    * | 4db5ee0 (tag: 1.4.0) Release 1.4.0
    * | 9b0bc89 (tag: 1.3.0) Release 1.3.0
    * | be49961 (tag: 1.2.0) Release 1.2.0
    * | c1d2dfc (tag: 1.1.0) Release 1.1.0
    * | 4a56adb (tag: 1.0.0) Release 1.0.0
    * | 948308b (tag: 0.9.0) Release 0.9.0
    * | 40b131d (tag: 0.8.1) Release 0.8.1
    * | 391431d (tag: 0.8.0) Release 0.8.0

## AUTHOR

Written by Nick Lombard <github@jigsoft.co.za>

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000129000081A40000000000000000000000016627A28D00000269000000000000000000000000000000000000003200000000git-extras-7.2.0/man/git-show-unmerged-branches.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SHOW\-UNMERGED\-BRANCHES" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-show\-unmerged\-branches\fR \- Show unmerged branches
.
.SH "SYNOPSIS"
\fBgit\-show\-unmerged\-branches\fR
.
.SH "DESCRIPTION"
Show all branches not merged in to current HEAD\.
.
.SH "EXAMPLES"
.
.nf

$ git show\-unmerged\-branches
.
.fi
.
.SH "AUTHOR"
Written by Paul Schreiber <\fIpaulschreiber@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000012A000081A40000000000000000000000016627A28D00001094000000000000000000000000000000000000003500000000git-extras-7.2.0/man/git-show-unmerged-branches.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-show-unmerged-branches(1) - Show unmerged branches</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="#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-show-unmerged-branches(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-show-unmerged-branches(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-show-unmerged-branches</code> - <span class="man-whatis">Show unmerged branches</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-show-unmerged-branches</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Show all branches not merged in to current HEAD.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git show-unmerged-branches
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Paul Schreiber &lt;<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x70;&#97;&#x75;&#x6c;&#x73;&#99;&#104;&#x72;&#x65;&#x69;&#x62;&#101;&#x72;&#x40;&#103;&#109;&#97;&#105;&#x6c;&#x2e;&#x63;&#x6f;&#109;" data-bare-link="true">&#112;&#x61;&#x75;&#x6c;&#115;&#x63;&#104;&#x72;&#101;&#105;&#98;&#x65;&#x72;&#x40;&#103;&#109;&#97;&#x69;&#108;&#46;&#x63;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-show-unmerged-branches(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000012B000081A40000000000000000000000016627A28D000001D5000000000000000000000000000000000000003300000000git-extras-7.2.0/man/git-show-unmerged-branches.mdgit-show-unmerged-branches(1) -- Show unmerged branches
=======================================================

## SYNOPSIS

`git-show-unmerged-branches`

## DESCRIPTION

  Show all branches not merged in to current HEAD.

## EXAMPLES

    $ git show-unmerged-branches

## AUTHOR

Written by Paul Schreiber &lt;<paulschreiber@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000012C000081A40000000000000000000000016627A28D000006A1000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-squash.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SQUASH" "1" "October 2020" "" "Git Extras"
.
.SH "NAME"
\fBgit\-squash\fR \- squash N last changes up to a ref\'ed commit
.
.SH "SYNOPSIS"
\fBgit\-squash\fR [<\-\-squash\-msg>] <source\-branch|commit ref> [<commit\-message>]
.
.SH "DESCRIPTION"
Squash the N last changes in the current branch, where N is the range of commits from the given ref up to HEAD\.
.
.SH "OPTIONS"
<source\-branch>
.
.P
Branch to squash on the current branch\.
.
.P
<commit reference> A commit reference (has to be from the current branch) can also be used as the first argument\. A range of commits \fIsha\fR\.\.HEAD will be squashed\.
.
.P
<\-\-squash\-msg>
.
.P
Commit the squash result with the concatenated squashed committed messages\. This option can not be used together with <commit\-message>\.
.
.P
<commit\-message>
.
.P
If commit\-message is given, commit the squashed result, otherwise the squash remains just added to the index and is not committed\.
.
.SH "EXAMPLES"
.
.nf

# squash changes and follow up with separate commit step
$ git squash my\-other\-branch
Updating a2740f5\.\.533b19c
Fast\-forward
Squash commit \-\- not updating HEAD
 my\-changed\-file | 1 +
 1 file changed, 1 insertion(+)
$ git commit \-m "New commit without a real merge"

# squash and commit with given message
$ git squash HEAD~3 "Commit message"

# squash and commit and concatenate all messages
$ git squash \-\-squash\-msg @~3
.
.fi
.
.SH "AUTHOR"
Written by Jesús Espino <\fIjespinog@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000012D000081A40000000000000000000000016627A28D000014FB000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-squash.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-squash(1) - squash N last changes up to a ref&#39;ed 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-squash(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-squash(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-squash</code> - <span class="man-whatis">squash N last changes up to a ref'ed commit</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-squash</code> [&lt;--squash-msg&gt;] &lt;source-branch|commit ref&gt; [&lt;commit-message&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Squash the N last changes in the current branch, where N is the range of commits from the given ref up to HEAD.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;source-branch&gt;</p>

<p>  Branch to squash on the current branch.</p>

<p>  &lt;commit reference&gt;
  A commit reference (has to be from the current branch) can also be used as the
  first argument. A range of commits <var>sha</var>..HEAD will be squashed.</p>

<p>  &lt;--squash-msg&gt;</p>

<p>  Commit the squash result with the concatenated squashed committed messages.
  This option can not be used together with &lt;commit-message&gt;.</p>

<p>  &lt;commit-message&gt;</p>

<p>  If commit-message is given, commit the squashed result, otherwise the squash remains just added to the index and is not committed.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code># squash changes and follow up with separate commit step
$ git squash my-other-branch
Updating a2740f5..533b19c
Fast-forward
Squash commit -- not updating HEAD
 my-changed-file | 1 +
 1 file changed, 1 insertion(+)
$ git commit -m "New commit without a real merge"

# squash and commit with given message
$ git squash HEAD~3 "Commit message"

# squash and commit and concatenate all messages
$ git squash --squash-msg @~3
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Jesús Espino &lt;<a href="&#x6d;&#x61;&#105;&#x6c;&#x74;&#111;&#x3a;&#106;&#x65;&#x73;&#112;&#105;&#x6e;&#111;&#103;&#x40;&#103;&#x6d;&#x61;&#x69;&#x6c;&#46;&#x63;&#x6f;&#x6d;" data-bare-link="true">&#x6a;&#101;&#115;&#x70;&#x69;&#110;&#111;&#103;&#64;&#103;&#x6d;&#97;&#x69;&#x6c;&#x2e;&#99;&#111;&#109;</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'>October 2020</li>
    <li class='tr'>git-squash(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000012E000081A40000000000000000000000016627A28D0000064A000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-squash.mdgit-squash(1) -- squash N last changes up to a ref'ed commit
=============================================

## SYNOPSIS

`git-squash` [&lt;--squash-msg&gt;] &lt;source-branch|commit ref&gt; [&lt;commit-message&gt;]

## DESCRIPTION

  Squash the N last changes in the current branch, where N is the range of commits from the given ref up to HEAD.

## OPTIONS

  &lt;source-branch&gt;

  Branch to squash on the current branch.

  &lt;commit reference&gt;
  A commit reference (has to be from the current branch) can also be used as the
  first argument. A range of commits <sha>..HEAD will be squashed.

  &lt;--squash-msg&gt;

  Commit the squash result with the concatenated squashed committed messages.
  This option can not be used together with &lt;commit-message&gt;.

  &lt;commit-message&gt;

  If commit-message is given, commit the squashed result, otherwise the squash remains just added to the index and is not committed.

## EXAMPLES

    # squash changes and follow up with separate commit step
    $ git squash my-other-branch
    Updating a2740f5..533b19c
    Fast-forward
    Squash commit -- not updating HEAD
     my-changed-file | 1 +
     1 file changed, 1 insertion(+)
    $ git commit -m "New commit without a real merge"

    # squash and commit with given message
    $ git squash HEAD~3 "Commit message"

    # squash and commit and concatenate all messages
    $ git squash --squash-msg @~3

## AUTHOR

Written by Jesús Espino &lt;<jespinog@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000012F000081A40000000000000000000000016627A28D000007F0000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-stamp.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-STAMP" "1" "April 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-stamp\fR \- Stamp the last commit message
.
.SH "SYNOPSIS"
\fBgit stamp [<options>] <id> [<messages>]\fR
.
.SH "DESCRIPTION"
Lets you amend the last commit with a stamp message\.
.
.P
The command appends a message with its identifier to the last commit message\.
.
.br
By default all stamps are appended as a new paragraph to the commit message\.
.
.br
You can change this behavior by using the \-\-replace flag\.
.
.br
With this flag, all the related stamps with the same identifier will be removed first before the new one gets appended\.
.
.P
\fBWARNING!\fR If a commit message without stamp have a line starting with the same identifier, it will be interpreted as a stamp
.
.SH "OPTIONS"
\-r, \-\-replace
.
.IP "" 4
.
.nf

Replace all previous stamps in the last commit message that have the same identifier
The identifier is case insensitive for this replacement
.
.fi
.
.IP "" 0
.
.SH "EXAMPLES"
Commit message is
.
.IP "" 4
.
.nf

| Fix timezone bug
.
.fi
.
.IP "" 0
.
.P
Reference the issues numbers from your bug tracker
.
.IP "" 4
.
.nf

$ git stamp Issue FOO\-123
$ git stamp Issue FOO\-456 \e#close

| Fix timezone bug
|
| Issue FOO\-123
|
| Issue FOO\-456 #close
.
.fi
.
.IP "" 0
.
.P
Link to its review page
.
.IP "" 4
.
.nf

$ git stamp Review https://reviews\.foo\.org/r/4567/

| Fix timezone bug
|
| Issue FOO\-123
|
| Issue FOO\-456 #close
|
| Review https://reviews\.foo\.org/r/4567/
.
.fi
.
.IP "" 0
.
.P
Replace previous issues with a new one
.
.br
(Note that the identifier is case insensitive)
.
.IP "" 4
.
.nf

$ git stamp \-\-replace issue BAR\-123

| Fix timezone bug
|
| Review https://reviews\.foo\.org/r/4567/
|
| issue BAR\-123
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Damien Tardy\-Panis <\fIdamien@tardypad\.me\fR>
.
.SH "REPORTING BUGS"
<\fIhttp://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000130000081A40000000000000000000000016627A28D000015CA000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-stamp.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-stamp(1) - Stamp the last commit message</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-stamp(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-stamp(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-stamp</code> - <span class="man-whatis">Stamp the last commit message</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git stamp [&lt;options>] &lt;id> [&lt;messages>]</code></p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Lets you amend the last commit with a stamp message.</p>

<p>The command appends a message with its identifier to the last commit message.<br />
By default all stamps are appended as a new paragraph to the commit message.<br />
You can change this behavior by using the --replace flag.<br />
With this flag, all the related stamps with the same identifier will be removed first before the new one gets appended.</p>

<p><code>WARNING!</code> If a commit message without stamp have a line starting with the same identifier, it will be interpreted as a stamp</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  -r, --replace</p>

<pre><code>Replace all previous stamps in the last commit message that have the same identifier  
The identifier is case insensitive for this replacement
</code></pre>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Commit message is</p>

<pre><code>| Fix timezone bug
</code></pre>

<p>Reference the issues numbers from your bug tracker</p>

<pre><code>$ git stamp Issue FOO-123
$ git stamp Issue FOO-456 \#close

| Fix timezone bug
|
| Issue FOO-123
|
| Issue FOO-456 #close
</code></pre>

<p>Link to its review page</p>

<pre><code>$ git stamp Review https://reviews.foo.org/r/4567/

| Fix timezone bug
|
| Issue FOO-123
|
| Issue FOO-456 #close
|
| Review https://reviews.foo.org/r/4567/
</code></pre>

<p>Replace previous issues with a new one<br />
(Note that the identifier is case insensitive)</p>

<pre><code>$ git stamp --replace issue BAR-123

| Fix timezone bug
|
| Review https://reviews.foo.org/r/4567/
|
| issue BAR-123
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Damien Tardy-Panis &lt;<a href="&#x6d;&#97;&#x69;&#x6c;&#116;&#111;&#58;&#x64;&#97;&#x6d;&#105;&#x65;&#x6e;&#64;&#x74;&#97;&#x72;&#100;&#x79;&#112;&#97;&#x64;&#46;&#x6d;&#x65;" data-bare-link="true">&#100;&#x61;&#109;&#x69;&#101;&#x6e;&#64;&#x74;&#97;&#x72;&#x64;&#121;&#112;&#97;&#x64;&#x2e;&#x6d;&#101;</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://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'>April 2018</li>
    <li class='tr'>git-stamp(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000131000081A40000000000000000000000016627A28D000006EA000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-stamp.mdgit-stamp(1) -- Stamp the last commit message
=============================================

## SYNOPSIS

`git stamp [<options>] <id> [<messages>]`

## DESCRIPTION

Lets you amend the last commit with a stamp message.

The command appends a message with its identifier to the last commit message.  
By default all stamps are appended as a new paragraph to the commit message.  
You can change this behavior by using the --replace flag.  
With this flag, all the related stamps with the same identifier will be removed first before the new one gets appended.

`WARNING!` If a commit message without stamp have a line starting with the same identifier, it will be interpreted as a stamp

## OPTIONS

  -r, --replace

    Replace all previous stamps in the last commit message that have the same identifier  
    The identifier is case insensitive for this replacement

## EXAMPLES

Commit message is

    | Fix timezone bug

Reference the issues numbers from your bug tracker

    $ git stamp Issue FOO-123
    $ git stamp Issue FOO-456 \#close

    | Fix timezone bug
    |
    | Issue FOO-123
    |
    | Issue FOO-456 #close

Link to its review page

    $ git stamp Review https://reviews.foo.org/r/4567/

    | Fix timezone bug
    |
    | Issue FOO-123
    |
    | Issue FOO-456 #close
    |
    | Review https://reviews.foo.org/r/4567/

Replace previous issues with a new one  
(Note that the identifier is case insensitive)

    $ git stamp --replace issue BAR-123

    | Fix timezone bug
    |
    | Review https://reviews.foo.org/r/4567/
    |
    | issue BAR-123

## AUTHOR

Written by Damien Tardy-Panis &lt;<damien@tardypad.me>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000132000081A40000000000000000000000016627A28D000012AF000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-standup.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-STANDUP" "1" "July 2022" "" "Git Extras"
.SH "NAME"
\fBgit\-standup\fR \- Recall the commit history
.SH "SYNOPSIS"
\fBgit\-standup\fR [\-a author] [\-w \fIweekstart\-weekend\fR|\-d \fIdays\-ago\fR] [\-m depth] [\-D date format] [\-L] [\-f] [\-B] [\-n number of commits] [\-F \fIgpg|authordate\fR]
.br
\fBgit\-standup\fR \-h
.SH "DESCRIPTION"
Recall what you did on the last working day \.\.or be nosy and find what someone else did\.
.SH "OPTIONS"
\-a author
.P
The author of commits\. Use "all" means specifying "all authors"\. Defaults to \fB$(git config user\.name)\fR\.
.P
\-m depth
.P
The depth of recursive directory search\. Defaults to 1\.
.P
\-L
.P
Enable the inclusion of symbolic links in recursive directory search\.
.P
\-d days\-ago
.P
The start of commit history\. Defaults to 1, means "1 days ago"\.
.P
\-w \fIweekstart\-weekend\fR
.P
Limit the search range to weekdays\. If \fIweekstart\fR and/or \fIweekend\fR are missing they default to Mon and Fri\. If the current day is \fIweekstart\fR, commits made on \fIweekend\fR will be included\. I\.e\. calling \fBgit standup \-w \-\fR on a Monday will include commits made on the last Friday\.
.P
\-D relative
.P
The date format displayed in commit history\. Defaults to "relative"\.
.P
\-h
.P
Display help message\.
.P
\-f
.P
Fetch the latest commits before showing commit history\.
.P
The former version of \fBgit standup\fR accepted \fB<author> <since> <until>\fR as options\. This interface is deprecated now, and please avoid to use it!
.P
\-B
.P
Display the commits in branch groups\.
.P
\-n number\-of\-commits
.P
Limit the number of commits displayed per group\. By default, the limitation is applied in the repository level\. For example, if you have 3 repositories under the current directory, \fBgit standup \|\.\|\.\|\. \-n 1\fR will show you 3 commits at most\. When \fB\-B\fR is specific, the limitation is applied in the branch level\. For instance, if each of your 3 repositories have 2 branches, \fBgit standup \|\.\|\.\|\. \-B \-n 1\fR will display 6 commits at most\.
.P
\-F \fIgpg|authordate\fR
.P
Change how the commits are formatted\. Takes an argument, can be specified multiple times\.
.IP "\[ci]" 4
\fB\-F gpg\fR: Display if commit is GPG signed (G) or not (N)\.
.IP "\[ci]" 4
\fB\-F authordate\fR: Print the author date instead of the commit date\.
.IP "" 0
.SH "GIT CONFIGS"
You can configure a implicit \-w \fIweekstart\-weekend\fR, which is superseded if \-w or \-d is given on the command line\. Note that the \fIweekstart\-weekend\fR must be specified, they don\'t have any default values as the \fB\-w\fR flag has\.
.IP "" 4
.nf
$ git config \-\-global git\-extras\.standup\.implicit\-week "Mon\-Fri"
.fi
.IP "" 0
.SH "EXAMPLES"
This shows your commits since yesterday:
.IP "" 4
.nf
$ git standup

a26d1f9 \- add profile hook (69 minutes ago) <spacewander>
.fi
.IP "" 0
.P
This shows the author\'s commits since last week:
.IP "" 4
.nf
$ git standup \-a spacewander \-d 7

a26d1f9 \- add profile hook (70 minutes ago) <spacewander>
4e19859 \- fix getTotalSize return value error (6 days ago) <spacewander>
36da84e \- fix rename over bound (7 days ago) <spacewander>
8e4182a \- add watermark\.png (7 days ago) <spacewander>
46fef1d \- use tinyXML to configure (7 days ago) <spacewander>
.fi
.IP "" 0
.P
If current directory is not a git repo, git\-standup will fetch data from all top\-level git repos under it:
.IP "" 4
.nf
$ cd \.\.
$ git standup \-a spacewander \-d 7

someProject/
4e19859 \- fix getTotalSize return value error (6 days ago) <spacewander>
36da84e \- fix rename over bound (7 days ago) <spacewander>
8e4182a \- add watermark\.png (7 days ago) <spacewander>
46fef1d \- use tinyXML to configure (7 days ago) <spacewander>
.fi
.IP "" 0
.P
By specifying the \fB\-B\fR option, git\-standuo will group the commits in branches:
.IP "" 4
.nf
$ git standup \-B \-a spacewander \-d 7

git\-summary\-cleanup
f788c78 \- git\-summary: clean up other shellcheck warnings (23 hours ago) <spacewander>
3e8c3ab \- git\-summary: fix incorrect active days when commits range is given (23 hours ago) <spacewander>
ff991ac \- git\-summary: remove useless result function\. (23 hours ago) <spacewander>
203f5b4 \- git\-summary: add \-\-dedup\-by\-email to remove duplicate users (5 days ago) <spacewander>

master
203f5b4 \- git\-summary: add \-\-dedup\-by\-email to remove duplicate users (5 days ago) <spacewander>
.fi
.IP "" 0
.P
Note that the same commit can be seen in different branches\.
.SH "AUTHOR"
Originally from https://github\.com/kamranahmedse/git\-standup
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000133000081A40000000000000000000000016627A28D000020E4000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-standup.html<!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)'>
  <title>git-standup(1) - Recall the commit history</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="#GIT-CONFIGS">GIT CONFIGS</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-standup(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-standup(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-standup</code> - <span class="man-whatis">Recall the commit history</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-standup</code> [-a author] [-w <var>weekstart-weekend</var>|-d <var>days-ago</var>] [-m depth] [-D date format] [-L] [-f] [-B] [-n number of commits] [-F <var>gpg|authordate</var>]<br>
<code>git-standup</code> -h</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Recall what you did on the last working day ..or be nosy and find what someone else did.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>-a author</p>

<p>The author of commits. Use "all" means specifying "all authors".
Defaults to <code>$(git config user.name)</code>.</p>

<p>-m depth</p>

<p>The depth of recursive directory search. Defaults to 1.</p>

<p>-L</p>

<p>Enable the inclusion of symbolic links in recursive directory search.</p>

<p>-d days-ago</p>

<p>The start of commit history. Defaults to 1, means "1 days ago".</p>

<p>-w <var>weekstart-weekend</var></p>

<p>Limit the search range to weekdays.
If <var>weekstart</var> and/or <var>weekend</var> are missing they default to Mon and Fri.
If the current day is <var>weekstart</var>, commits made on <var>weekend</var> will be included.
I.e. calling <code>git standup -w -</code> on a Monday will include commits made on the last Friday.</p>

<p>-D relative</p>

<p>The date format displayed in commit history. Defaults to "relative".</p>

<p>-h</p>

<p>Display help message.</p>

<p>-f</p>

<p>Fetch the latest commits before showing commit history.</p>

<p>The former version of <code>git standup</code> accepted <code>&lt;author&gt; &lt;since&gt; &lt;until&gt;</code> as options.
This interface is deprecated now, and please avoid to use it!</p>

<p>-B</p>

<p>Display the commits in branch groups.</p>

<p>-n number-of-commits</p>

<p>Limit the number of commits displayed per group.
By default, the limitation is applied in the repository level. For example, if you
have 3 repositories under the current directory, <code>git standup ... -n 1</code> will
show you 3 commits at most.
When <code>-B</code> is  specific, the limitation is applied in the branch level. For instance,
if each of your 3 repositories have 2 branches, <code>git standup ... -B -n 1</code> will
display 6 commits at most.</p>

<p>-F <var>gpg|authordate</var></p>

<p>Change how the commits are formatted. Takes an argument, can be specified multiple times.</p>

<ul>
  <li>
<code>-F gpg</code>: Display if commit is GPG signed (G) or not (N).</li>
  <li>
<code>-F authordate</code>: Print the author date instead of the commit date.</li>
</ul>

<h2 id="GIT-CONFIGS">GIT CONFIGS</h2>

<p>You can configure a implicit -w <var>weekstart-weekend</var>, which is superseded if -w or -d is given on the command line.
Note that the <var>weekstart-weekend</var> must be specified, they don't have any default values as the <code>-w</code> flag has.</p>

<pre><code>$ git config --global git-extras.standup.implicit-week "Mon-Fri"
</code></pre>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>This shows your commits since yesterday:</p>

<pre><code>$ git standup

a26d1f9 - add profile hook (69 minutes ago) &lt;spacewander&gt;
</code></pre>

<p>This shows the author's commits since last week:</p>

<pre><code>$ git standup -a spacewander -d 7

a26d1f9 - add profile hook (70 minutes ago) &lt;spacewander&gt;
4e19859 - fix getTotalSize return value error (6 days ago) &lt;spacewander&gt;
36da84e - fix rename over bound (7 days ago) &lt;spacewander&gt;
8e4182a - add watermark.png (7 days ago) &lt;spacewander&gt;
46fef1d - use tinyXML to configure (7 days ago) &lt;spacewander&gt;
</code></pre>

<p>If current directory is not a git repo, git-standup will fetch data from all top-level git repos under it:</p>

<pre><code>$ cd ..
$ git standup -a spacewander -d 7

someProject/
4e19859 - fix getTotalSize return value error (6 days ago) &lt;spacewander&gt;
36da84e - fix rename over bound (7 days ago) &lt;spacewander&gt;
8e4182a - add watermark.png (7 days ago) &lt;spacewander&gt;
46fef1d - use tinyXML to configure (7 days ago) &lt;spacewander&gt;
</code></pre>

<p>By specifying the <code>-B</code> option, git-standuo will group the commits in branches:</p>

<pre><code>$ git standup -B -a spacewander -d 7

git-summary-cleanup
f788c78 - git-summary: clean up other shellcheck warnings (23 hours ago) &lt;spacewander&gt;
3e8c3ab - git-summary: fix incorrect active days when commits range is given (23 hours ago) &lt;spacewander&gt;
ff991ac - git-summary: remove useless result function. (23 hours ago) &lt;spacewander&gt;
203f5b4 - git-summary: add --dedup-by-email to remove duplicate users (5 days ago) &lt;spacewander&gt;

master
203f5b4 - git-summary: add --dedup-by-email to remove duplicate users (5 days ago) &lt;spacewander&gt;
</code></pre>

<p>Note that the same commit can be seen in different branches.</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Originally from https://github.com/kamranahmedse/git-standup</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'>July 2022</li>
    <li class='tr'>git-standup(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000134000081A40000000000000000000000016627A28D000010C7000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-standup.mdgit-standup(1) -- Recall the commit history
=================================

## SYNOPSIS

`git-standup` [-a author] [-w <weekstart-weekend>|-d <days-ago>] [-m depth] [-D date format] [-L] [-f] [-B] [-n number of commits] [-F <gpg|authordate>]  
`git-standup` -h

## DESCRIPTION

Recall what you did on the last working day ..or be nosy and find what someone else did.

## OPTIONS

-a author

The author of commits. Use "all" means specifying "all authors".
Defaults to `$(git config user.name)`.

-m depth

The depth of recursive directory search. Defaults to 1.

-L

Enable the inclusion of symbolic links in recursive directory search.

-d days-ago

The start of commit history. Defaults to 1, means "1 days ago".

-w <weekstart-weekend>

Limit the search range to weekdays.
If <weekstart> and/or <weekend> are missing they default to Mon and Fri.
If the current day is <weekstart>, commits made on <weekend> will be included.
I.e. calling `git standup -w -` on a Monday will include commits made on the last Friday.

-D relative

The date format displayed in commit history. Defaults to "relative".

-h

Display help message.

-f

Fetch the latest commits before showing commit history.

The former version of `git standup` accepted `<author> <since> <until>` as options.
This interface is deprecated now, and please avoid to use it!

-B

Display the commits in branch groups.

-n number-of-commits

Limit the number of commits displayed per group.
By default, the limitation is applied in the repository level. For example, if you
have 3 repositories under the current directory, `git standup ... -n 1` will
show you 3 commits at most.
When `-B` is  specific, the limitation is applied in the branch level. For instance,
if each of your 3 repositories have 2 branches, `git standup ... -B -n 1` will
display 6 commits at most.

-F <gpg|authordate>

Change how the commits are formatted. Takes an argument, can be specified multiple times.

* `-F gpg`: Display if commit is GPG signed (G) or not (N).
* `-F authordate`: Print the author date instead of the commit date.

## GIT CONFIGS

You can configure a implicit -w <weekstart-weekend>, which is superseded if -w or -d is given on the command line.
Note that the <weekstart-weekend> must be specified, they don't have any default values as the `-w` flag has.

    $ git config --global git-extras.standup.implicit-week "Mon-Fri"

## EXAMPLES

This shows your commits since yesterday:

    $ git standup

    a26d1f9 - add profile hook (69 minutes ago) <spacewander>

This shows the author's commits since last week:

    $ git standup -a spacewander -d 7

    a26d1f9 - add profile hook (70 minutes ago) <spacewander>
    4e19859 - fix getTotalSize return value error (6 days ago) <spacewander>
    36da84e - fix rename over bound (7 days ago) <spacewander>
    8e4182a - add watermark.png (7 days ago) <spacewander>
    46fef1d - use tinyXML to configure (7 days ago) <spacewander>

If current directory is not a git repo, git-standup will fetch data from all top-level git repos under it:

    $ cd ..
    $ git standup -a spacewander -d 7

    someProject/
    4e19859 - fix getTotalSize return value error (6 days ago) <spacewander>
    36da84e - fix rename over bound (7 days ago) <spacewander>
    8e4182a - add watermark.png (7 days ago) <spacewander>
    46fef1d - use tinyXML to configure (7 days ago) <spacewander>

By specifying the `-B` option, git-standuo will group the commits in branches:

    $ git standup -B -a spacewander -d 7

    git-summary-cleanup
    f788c78 - git-summary: clean up other shellcheck warnings (23 hours ago) <spacewander>
    3e8c3ab - git-summary: fix incorrect active days when commits range is given (23 hours ago) <spacewander>
    ff991ac - git-summary: remove useless result function. (23 hours ago) <spacewander>
    203f5b4 - git-summary: add --dedup-by-email to remove duplicate users (5 days ago) <spacewander>

    master
    203f5b4 - git-summary: add --dedup-by-email to remove duplicate users (5 days ago) <spacewander>

Note that the same commit can be seen in different branches.

## AUTHOR

Originally from https://github.com/kamranahmedse/git-standup

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000135000081A40000000000000000000000016627A28D00000D45000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-summary.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-SUMMARY" "1" "June 2023" "" "Git Extras"
.SH "NAME"
\fBgit\-summary\fR \- Show repository summary
.SH "SYNOPSIS"
\fBgit\-summary\fR [\-\-dedup\-by\-email] [\-\-no\-merges] [<committish>]
.P
\fBgit\-summary\fR \-\-line [<path>]
.SH "DESCRIPTION"
Shows a summary of the repository or a path within it\.
.SH "OPTIONS"
<committish>
.P
Summarize only the range of commits included in the <committish>\.
.P
<path>
.P
Summarize only the range of files included in the <path>\.
.P
\-\-dedup\-by\-email
.P
Remove duplicate authors who belong to the same email address\. For example,
.IP "" 4
.nf
$ git summary
\|\.\|\.\|\.
133  TJ Holowaychuk            9\.9%
115  Tj Holowaychuk            8\.5%

$ git summary \-\-dedup\-by\-email
\|\.\|\.\|\.
248  TJ Holowaychuk            18\.4%
.fi
.IP "" 0
.P
\-\-no\-merges
.P
Exclude merge commits\.
.P
\-\-line
.P
Summarize with lines other than commits\. When \fB\-\-line\fR is specified, the last argument is treated as <path>\.
.P
This option can not be used together with \fB\-\-dedup\-by\-email\fR or \fB\-\-no\-merges\fR\.
.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\.
.P
Some information like the authors cannot be displayed in this mode\.
.SH "EXAMPLES"
Outputs a repo summary:
.IP "" 4
.nf
$ git summary

project     : express
repo age    : 10 months ago
branch      : master
last active : 3 weeks ago
active on   : 93 days
commits     : 1893
files       : 111
uncommitted : 3
authors     :
 1285 visionmedia
  478 Tj Holowaychuk
   48 Aaron Heckmann
   34 csausdev
   26 ciaranj
    6 Guillermo Rauch
    3 Nick Poulden
    2 Brian McKinney
    2 Benny Wong
    1 Justin Lilly
    1 James Herdman
    1 Adam Sanderson
    1 Viktor Kelemen
    1 Gregory Ritter
    1 Greg Ritter
    1 ewoudj
    1 isaacs
    1 Matt Colyer
.fi
.IP "" 0
.P
This command can also take a committish, and will print a summary for the range of commits included in the committish:
.IP "" 4
.nf
$ git summary v42\.\.
.fi
.IP "" 0
.P
Outputs a repo summary by line:
.IP "" 4
.nf
$ git summary \-\-line

project  : git\-extras
lines    : 26820
authors  :
  \|\.\|\.\|\.
.fi
.IP "" 0
.P
Filter with the path:
.IP "" 4
.nf
$ git summary \-\-line bin/

project  : git\-extras
lines    : 4420
authors  :
  \|\.\|\.\|\.
.fi
.IP "" 0
.P
Tabular summary
.IP "" 4
.nf
$ git summary \-\-output\-style tabular
# Repo     | Age       | Last active | Active on | Commits | Uncommitted | Branch
git\-extras | 13 years  | 7 hours ago | 807 days  | 1703    | 3           | master
.fi
.IP "" 0
.P
Oneline summary
.IP "" 4
.nf
$ git summary \-\-output\-style oneline
git\-extras / age: 13 years / last active: 7 hours ago / active on 807 days / commits: 1703 / uncommitted: 3 / branch: master
.fi
.IP "" 0
.SH "AUTHOR"
Written by Tj Holowaychuk <\fItj@vision\-media\.ca\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000136000081A40000000000000000000000016627A28D00001B25000000000000000000000000000000000000002600000000git-extras-7.2.0/man/git-summary.html<!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)'>
  <title>git-summary(1) - Show repository summary</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-summary(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-summary(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-summary</code> - <span class="man-whatis">Show repository summary</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-summary</code> [--dedup-by-email] [--no-merges] [&lt;committish&gt;]</p>

<p><code>git-summary</code> --line [&lt;path&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Shows a summary of the repository or a path within it.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;committish&gt;</p>

<p>Summarize only the range of commits included in the &lt;committish&gt;.</p>

<p>&lt;path&gt;</p>

<p>Summarize only the range of files included in the &lt;path&gt;.</p>

<p>--dedup-by-email</p>

<p>Remove duplicate authors who belong to the same email address.
  For example,</p>

<pre><code>$ git summary
...
133  TJ Holowaychuk            9.9%
115  Tj Holowaychuk            8.5%

$ git summary --dedup-by-email
...
248  TJ Holowaychuk            18.4%
</code></pre>

<p>--no-merges</p>

<p>Exclude merge commits.</p>

<p>--line</p>

<p>Summarize with lines other than commits.
  When <code>--line</code> is specified, the last argument is treated as &lt;path&gt;.</p>

<p>This option can not be used together with <code>--dedup-by-email</code> or <code>--no-merges</code>.</p>

<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>

<p>Some information like the authors cannot be displayed in this mode.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Outputs a repo summary:</p>

<pre><code>$ git summary

project     : express
repo age    : 10 months ago
branch      : master
last active : 3 weeks ago
active on   : 93 days
commits     : 1893
files       : 111
uncommitted : 3
authors     :
 1285 visionmedia
  478 Tj Holowaychuk
   48 Aaron Heckmann
   34 csausdev
   26 ciaranj
    6 Guillermo Rauch
    3 Nick Poulden
    2 Brian McKinney
    2 Benny Wong
    1 Justin Lilly
    1 James Herdman
    1 Adam Sanderson
    1 Viktor Kelemen
    1 Gregory Ritter
    1 Greg Ritter
    1 ewoudj
    1 isaacs
    1 Matt Colyer
</code></pre>

<p>This command can also take a committish, and will print a summary for the range
  of commits included in the committish:</p>

<pre><code>$ git summary v42..
</code></pre>

<p>Outputs a repo summary by line:</p>

<pre><code>$ git summary --line

project  : git-extras
lines    : 26820
authors  :
  ...
</code></pre>

<p>Filter with the path:</p>

<pre><code>$ git summary --line bin/

project  : git-extras
lines    : 4420
authors  :
  ...
</code></pre>

<p>Tabular summary</p>

<pre><code>$ git summary --output-style tabular
# Repo     | Age       | Last active | Active on | Commits | Uncommitted | Branch
git-extras | 13 years  | 7 hours ago | 807 days  | 1703    | 3           | master
</code></pre>

<p>Oneline summary</p>

<pre><code>$ git summary --output-style oneline
git-extras / age: 13 years / last active: 7 hours ago / active on 807 days / commits: 1703 / uncommitted: 3 / branch: master
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Tj Holowaychuk &lt;<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.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'>June 2023</li>
    <li class='tr'>git-summary(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000137000081A40000000000000000000000016627A28D00000CCE000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-summary.mdgit-summary(1) -- Show repository summary
=========================================

## SYNOPSIS

`git-summary` [--dedup-by-email] [--no-merges] [&lt;committish&gt;]

`git-summary` --line [&lt;path&gt;]

## DESCRIPTION

Shows a summary of the repository or a path within it.

## OPTIONS

  &lt;committish&gt;

  Summarize only the range of commits included in the &lt;committish&gt;.

  &lt;path&gt;

  Summarize only the range of files included in the &lt;path&gt;.

  --dedup-by-email

  Remove duplicate authors who belong to the same email address.
  For example,

    $ git summary
    ...
    133  TJ Holowaychuk            9.9%
    115  Tj Holowaychuk            8.5%

    $ git summary --dedup-by-email
    ...
    248  TJ Holowaychuk            18.4%

  --no-merges

  Exclude merge commits.

  --line

  Summarize with lines other than commits.
  When `--line` is specified, the last argument is treated as &lt;path&gt;.

  This option can not be used together with `--dedup-by-email` or `--no-merges`.

  --output-style &lt;style&gt;

  Summarizes the repository and print the output according to the specified style.
  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.
  * `oneline`: Prints the summary in a single line. Fields are separated by a `/`
               sorrounded by one space on each side.

  Some information like the authors cannot be displayed in this mode.

## EXAMPLES

  Outputs a repo summary:

    $ git summary

    project     : express
    repo age    : 10 months ago
    branch      : master
    last active : 3 weeks ago
    active on   : 93 days
    commits     : 1893
    files       : 111
    uncommitted : 3
    authors     :
     1285 visionmedia
      478 Tj Holowaychuk
       48 Aaron Heckmann
       34 csausdev
       26 ciaranj
        6 Guillermo Rauch
        3 Nick Poulden
        2 Brian McKinney
        2 Benny Wong
        1 Justin Lilly
        1 James Herdman
        1 Adam Sanderson
        1 Viktor Kelemen
        1 Gregory Ritter
        1 Greg Ritter
        1 ewoudj
        1 isaacs
        1 Matt Colyer

  This command can also take a committish, and will print a summary for the range
  of commits included in the committish:

    $ git summary v42..

  Outputs a repo summary by line:

    $ git summary --line

    project  : git-extras
    lines    : 26820
    authors  :
      ...

  Filter with the path:

    $ git summary --line bin/

    project  : git-extras
    lines    : 4420
    authors  :
      ...

  Tabular summary

    $ git summary --output-style tabular
    # Repo     | Age       | Last active | Active on | Commits | Uncommitted | Branch
    git-extras | 13 years  | 7 hours ago | 807 days  | 1703    | 3           | master

  Oneline summary

    $ git summary --output-style oneline
    git-extras / age: 13 years / last active: 7 hours ago / active on 807 days / commits: 1703 / uncommitted: 3 / branch: master

## AUTHOR

Written by Tj Holowaychuk &lt;<tj@vision-media.ca>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000138000081A40000000000000000000000016627A28D00000523000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-sync.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-SYNC" "1" "August 2022" "" "Git Extras"
.
.SH "NAME"
\fBgit\-sync\fR \- Sync local branch with remote branch
.
.SH "SYNOPSIS"
\fBgit sync\fR [\-\-soft] [\-\-force] [ <remote> <branch> ]
.
.SH "DESCRIPTION"
Sync local branch with <remote>/<branch>\.
.
.P
When <remote> and <branch> are not specified on the command line, upstream of local branch will be used by default\.
.
.P
All changes and untracked files and directories will be removed unless you add \-s(\-\-soft)\.
.
.SH "OPTIONS"
\-\-soft or \-s
.
.P
Add this flag if you want to preserve untracked files\.
.
.P
\-\-force or \-f
.
.P
Add this flag to disable interaction\.
.
.SH "EXAMPLES"
Sync local branch with its upstream
.
.IP "" 4
.
.nf

$ git sync
.
.fi
.
.IP "" 0
.
.P
Sync local branch with origin/master
.
.IP "" 4
.
.nf

$ git sync origin master
.
.fi
.
.IP "" 0
.
.P
Sync without cleaning untracked files:
.
.IP "" 4
.
.nf

$ git sync \-s origin master
.
.fi
.
.IP "" 0
.
.P
Sync without interaction:
.
.IP "" 4
.
.nf

$ git sync \-f
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Takuma Yamaguchi <\fIkumon0587@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000139000081A40000000000000000000000016627A28D00001350000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-sync.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-sync(1) - Sync local branch with remote branch</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-sync(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-sync(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-sync</code> - <span class="man-whatis">Sync local branch with remote branch</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p>  <code>git sync</code> [--soft] [--force] [ &lt;remote&gt; &lt;branch&gt; ]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Sync local branch with &lt;remote&gt;/&lt;branch&gt;.</p>

<p>  When &lt;remote&gt; and &lt;branch&gt; are not specified on the command line, upstream of local branch will be used by default.</p>

<p>  All changes and untracked files and directories will be removed unless you add -s(--soft).</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  --soft or -s</p>

<p>  Add this flag if you want to preserve untracked files.</p>

<p>  --force or -f</p>

<p>  Add this flag to disable interaction.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Sync local branch with its upstream</p>

<pre><code>$ git sync
</code></pre>

<p>  Sync local branch with origin/master</p>

<pre><code>$ git sync origin master
</code></pre>

<p>  Sync without cleaning untracked files:</p>

<pre><code>$ git sync -s origin master
</code></pre>

<p>  Sync without interaction:</p>

<pre><code>$ git sync -f
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Takuma Yamaguchi &lt;<a href="&#x6d;&#x61;&#105;&#108;&#x74;&#111;&#58;&#107;&#117;&#x6d;&#x6f;&#110;&#x30;&#53;&#x38;&#55;&#x40;&#x67;&#x6d;&#97;&#105;&#x6c;&#46;&#x63;&#111;&#x6d;" data-bare-link="true">&#x6b;&#x75;&#109;&#111;&#110;&#x30;&#x35;&#56;&#x37;&#64;&#103;&#x6d;&#97;&#x69;&#108;&#46;&#x63;&#x6f;&#109;</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'>August 2022</li>
    <li class='tr'>git-sync(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000013A000081A40000000000000000000000016627A28D0000044F000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-sync.mdgit-sync(1) -- Sync local branch with remote branch
=================================================================

## SYNOPSIS

  `git sync` [--soft] [--force] [ &lt;remote&gt; &lt;branch&gt; ]

## DESCRIPTION

  Sync local branch with &lt;remote&gt;/&lt;branch&gt;.
  
  When &lt;remote&gt; and &lt;branch&gt; are not specified on the command line, upstream of local branch will be used by default.
  
  All changes and untracked files and directories will be removed unless you add -s(--soft).

## OPTIONS

  --soft or -s

  Add this flag if you want to preserve untracked files.

  --force or -f

  Add this flag to disable interaction.


## EXAMPLES

  Sync local branch with its upstream

    $ git sync

  Sync local branch with origin/master

    $ git sync origin master

  Sync without cleaning untracked files:

    $ git sync -s origin master

  Sync without interaction:

    $ git sync -f

## AUTHOR

Written by Takuma Yamaguchi &lt;<kumon0587@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000013B000081A40000000000000000000000016627A28D00000293000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-touch.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-TOUCH" "1" "October 2017" "" "Git Extras"
.
.SH "NAME"
\fBgit\-touch\fR \- Touch and add file to the index
.
.SH "SYNOPSIS"
\fBgit\-touch\fR <filename>
.
.SH "DESCRIPTION"
Call \fBtouch\fR on the given file and add it to the current index\. Used one\-step creating new files\.
.
.SH "OPTIONS"
<filename>
.
.P
File to be touched\.
.
.SH "EXAMPLES"
$ git touch Makefile
.
.SH "AUTHOR"
Written by Alex McHale <\fIalexmchale@gmail\.com\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000013C000081A40000000000000000000000016627A28D000010C8000000000000000000000000000000000000002400000000git-extras-7.2.0/man/git-touch.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-touch(1) - Touch and add file to the index</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-touch(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-touch(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-touch</code> - <span class="man-whatis">Touch and add file to the index</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-touch</code> &lt;filename&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Call <code>touch</code> on the given file and add it to the current index. Used one-step creating new files.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  &lt;filename&gt;</p>

<p>  File to be touched.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  $ git touch Makefile</p>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Alex McHale &lt;<a href="&#109;&#x61;&#105;&#x6c;&#116;&#111;&#58;&#x61;&#x6c;&#x65;&#x78;&#109;&#x63;&#104;&#x61;&#x6c;&#101;&#x40;&#103;&#109;&#97;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#109;" data-bare-link="true">&#97;&#108;&#x65;&#x78;&#109;&#99;&#x68;&#x61;&#x6c;&#101;&#x40;&#103;&#x6d;&#97;&#x69;&#108;&#46;&#99;&#x6f;&#x6d;</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'>October 2017</li>
    <li class='tr'>git-touch(1)</li>
  </ol>

  </div>
</body>
</html>
0707010000013D000081A40000000000000000000000016627A28D0000021D000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-touch.mdgit-touch(1) -- Touch and add file to the index
===============================================

## SYNOPSIS

`git-touch` &lt;filename&gt;

## DESCRIPTION

  Call `touch` on the given file and add it to the current index. Used one-step creating new files.

## OPTIONS

  &lt;filename&gt;

  File to be touched.

## EXAMPLES

  $ git touch Makefile

## AUTHOR

Written by Alex McHale &lt;<alexmchale@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
0707010000013E000081A40000000000000000000000016627A28D00000502000000000000000000000000000000000000002000000000git-extras-7.2.0/man/git-undo.1.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
.TH "GIT\-UNDO" "1" "June 2018" "" "Git Extras"
.
.SH "NAME"
\fBgit\-undo\fR \- Remove latest commits
.
.SH "SYNOPSIS"
\fBgit\-undo\fR [\-s, \-\-soft, \-h, \-\-hard] [<commitcount>]
.
.SH "DESCRIPTION"
Removes the latest commits\.
.
.SH "OPTIONS"
\-\-soft or \-s
.
.P
Rolls back the commit(s) but leaves the changes in the staging area\.
.
.P
\-\-hard or \-h
.
.P
This option wipes your commit(s), so that your changes cannot be recovered\. Use with care\. To avoid being confused with \fB\-\-help\fR, there will be a confirmation when \fB\-h\fR is specified\.
.
.P
<commitcount>
.
.P
Number of commits to remove\. Defaults to \fI1\fR, thus remove the latest commit\.
.
.SH "EXAMPLES"
Removes the latest commit\.
.
.IP "" 4
.
.nf

$ git undo
.
.fi
.
.IP "" 0
.
.P
Removes the latest commit, restoring the staging area\.
.
.IP "" 4
.
.nf

$ git undo \-s
.
.fi
.
.IP "" 0
.
.P
Remove the latest 3 commits:
.
.IP "" 4
.
.nf

$ git undo 3
.
.fi
.
.IP "" 0
.
.SH "AUTHOR"
Written by Kenneth Reitz <\fIme@kennethreitz\.com\fR> and Nick Lombard <\fIgithub@jigsoft\.co\.za\fR>
.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
0707010000013F000081A40000000000000000000000016627A28D0000143D000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-undo.html<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' value='text/html;charset=utf8'>
  <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
  <title>git-undo(1) - Remove latest commits</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-undo(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-undo(1)</li>
  </ol>

  <h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-undo</code> - <span class="man-whatis">Remove latest commits</span>
</p>

<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-undo</code> [-s, --soft, -h, --hard] [&lt;commitcount&gt;]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>  Removes the latest commits.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>  --soft or -s</p>

<p>  Rolls back the commit(s) but leaves the changes in the staging area.</p>

<p>  --hard or -h</p>

<p>  This option wipes your commit(s), so that your changes cannot be recovered. Use with care.
  To avoid being confused with <code>--help</code>, there will be a confirmation when <code>-h</code> is specified.</p>

<p>  &lt;commitcount&gt;</p>

<p>  Number of commits to remove. Defaults to <em>1</em>, thus remove the latest commit.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>  Removes the latest commit.</p>

<pre><code>$ git undo
</code></pre>

<p>  Removes the latest commit, restoring the staging area.</p>

<pre><code>$ git undo -s
</code></pre>

<p>  Remove the latest 3 commits:</p>

<pre><code>$ git undo 3
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Kenneth Reitz &lt;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#x3a;&#x6d;&#x65;&#64;&#107;&#101;&#x6e;&#x6e;&#101;&#116;&#104;&#114;&#101;&#105;&#116;&#x7a;&#x2e;&#x63;&#111;&#109;" data-bare-link="true">&#x6d;&#x65;&#x40;&#x6b;&#101;&#110;&#x6e;&#101;&#116;&#x68;&#x72;&#101;&#105;&#116;&#122;&#46;&#99;&#x6f;&#109;</a>&gt; and Nick Lombard &lt;<a href="&#109;&#x61;&#105;&#108;&#x74;&#111;&#x3a;&#x67;&#x69;&#116;&#x68;&#x75;&#x62;&#64;&#x6a;&#105;&#x67;&#x73;&#111;&#x66;&#x74;&#x2e;&#99;&#x6f;&#46;&#122;&#x61;" data-bare-link="true">&#103;&#105;&#x74;&#104;&#117;&#98;&#64;&#x6a;&#105;&#103;&#115;&#x6f;&#102;&#116;&#46;&#x63;&#x6f;&#46;&#122;&#97;</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'>June 2018</li>
    <li class='tr'>git-undo(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000140000081A40000000000000000000000016627A28D00000404000000000000000000000000000000000000002100000000git-extras-7.2.0/man/git-undo.mdgit-undo(1) -- Remove latest commits
====================================

## SYNOPSIS

`git-undo` [-s, --soft, -h, --hard] [&lt;commitcount&gt;]

## DESCRIPTION

  Removes the latest commits.

## OPTIONS

  --soft or -s

  Rolls back the commit(s) but leaves the changes in the staging area.

  --hard or -h

  This option wipes your commit(s), so that your changes cannot be recovered. Use with care.
  To avoid being confused with `--help`, there will be a confirmation when `-h` is specified.

  &lt;commitcount&gt;

  Number of commits to remove. Defaults to *1*, thus remove the latest commit.

## EXAMPLES

  Removes the latest commit.

    $ git undo

  Removes the latest commit, restoring the staging area.

    $ git undo -s

  Remove the latest 3 commits:

    $ git undo 3

## AUTHOR

Written by Kenneth Reitz &lt;<me@kennethreitz.com>&gt; and Nick Lombard &lt;<github@jigsoft.co.za>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000141000081A40000000000000000000000016627A28D0000026E000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-unlock.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-UNLOCK" "1" "December 2021" "" "Git Extras"
.SH "NAME"
\fBgit\-unlock\fR \- Unlock a file excluded from version control
.SH "SYNOPSIS"
\fBgit\-unlock\fR <filename>
.SH "DESCRIPTION"
Unlock local files from version control\.
.SH "OPTIONS"
<filename>
.P
The name of the filename\.
.SH "EXAMPLES"
.nf
$ git unlock config/database\.yml
.fi
.SH "AUTHOR"
Written by Julio Napuri <\fIjulionc@gmail\.com\fR>
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000142000081A40000000000000000000000016627A28D00000FDF000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-unlock.html<!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)'>
  <title>git-unlock(1) - Unlock a file excluded from version control</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-unlock(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-unlock(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-unlock</code> - <span class="man-whatis">Unlock a file excluded from version control</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-unlock</code> &lt;filename&gt;</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Unlock local files from version control.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>&lt;filename&gt;</p>

<p>The name of the filename.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>$ git unlock config/database.yml
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Julio Napuri &lt;<a href="mailto:julionc@gmail.com" data-bare-link="true">julionc@gmail.com</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'>December 2021</li>
    <li class='tr'>git-unlock(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000143000081A40000000000000000000000016627A28D00000211000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-unlock.mdgit-unlock(1) -- Unlock a file excluded from version control
============================================================

## SYNOPSIS

`git-unlock` &lt;filename&gt;

## DESCRIPTION

  Unlock local files from version control.

## OPTIONS

  &lt;filename&gt;

  The name of the filename.

## EXAMPLES

    $ git unlock config/database.yml

## AUTHOR

Written by Julio Napuri &lt;<julionc@gmail.com>&gt;

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000144000081A40000000000000000000000016627A28D000004E3000000000000000000000000000000000000002200000000git-extras-7.2.0/man/git-utimes.1.\" generated with Ronn-NG/v0.9.1
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
.TH "GIT\-UTIMES" "1" "May 2022" "" "Git Extras"
.SH "NAME"
\fBgit\-utimes\fR \- Change files modification time to their last commit date
.SH "SYNOPSIS"
\fBgit\-utimes\fR [\-\-newer]
.SH "DESCRIPTION"
Change files modification time to their last commit date\. Does not touch files that are in the working tree or index\.
.SH "OPTIONS"
\-\-newer
.P
Preserves the original modification time of files that were committed from the local repo, by only touching files that are newer than their last commit date\.
.SH "EXAMPLES"
Update all files' modification time to their last commit date, except those in working tree or index:
.IP "" 4
.nf
$ git utimes
.fi
.IP "" 0
.P
As above, but preserve original modification time of files that were committed from local repo:
.IP "" 4
.nf
$ git utimes \-\-newer
.fi
.IP "" 0
.SH "AUTHOR"
Written by Vitaly Chikunov <\fIvt@altlinux\.org\fR>, inspired by Stackexchange comments\. Updated by Bill Wood <\fIwpwoodjr@gmail\.com\fR> to add \fB\-\-newer\fR flag and ignore files in the working tree or index\.
.SH "REPORTING BUGS"
<\fIhttps://github\.com/tj/git\-extras/issues\fR>
.SH "SEE ALSO"
<\fIhttps://github\.com/tj/git\-extras\fR>
07070100000145000081A40000000000000000000000016627A28D00001288000000000000000000000000000000000000002500000000git-extras-7.2.0/man/git-utimes.html<!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)'>
  <title>git-utimes(1) - Change files modification time to their last commit date</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-utimes(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-utimes(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-utimes</code> - <span class="man-whatis">Change files modification time to their last commit date</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-utimes</code> [--newer]</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>Change files modification time to their last commit date. Does not touch files that are in the working tree or index.</p>

<h2 id="OPTIONS">OPTIONS</h2>

<p>--newer</p>

<p>Preserves the original modification time of files that were committed from the local repo, by only touching files that are newer than their last commit date.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<p>Update all files' modification time to their last commit date, except those in working tree or index:</p>

<pre><code>$ git utimes
</code></pre>

<p>As above, but preserve original modification time of files that were committed from local repo:</p>

<pre><code>$ git utimes --newer
</code></pre>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Vitaly Chikunov &lt;<a href="mailto:vt@altlinux.org" data-bare-link="true">vt@altlinux.org</a>&gt;, inspired by Stackexchange comments. Updated by Bill Wood &lt;<a href="mailto:wpwoodjr@gmail.com" data-bare-link="true">wpwoodjr@gmail.com</a>&gt; to add <code>--newer</code> flag and ignore files in the working tree or index.</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 2022</li>
    <li class='tr'>git-utimes(1)</li>
  </ol>

  </div>
</body>
</html>
07070100000146000081A40000000000000000000000016627A28D00000457000000000000000000000000000000000000002300000000git-extras-7.2.0/man/git-utimes.mdgit-utimes(1) -- Change files modification time to their last commit date
=========================================================================

## SYNOPSIS

`git-utimes` [--newer]

## DESCRIPTION

  Change files modification time to their last commit date. Does not touch files that are in the working tree or index.

## OPTIONS

  --newer

  Preserves the original modification time of files that were committed from the local repo, by only touching files that are newer than their last commit date.

## EXAMPLES

Update all files' modification time to their last commit date, except those in working tree or index:

    $ git utimes

As above, but preserve original modification time of files that were committed from local repo:

    $ git utimes --newer

## AUTHOR

Written by Vitaly Chikunov &lt;<vt@altlinux.org>&gt;, inspired by Stackexchange comments. Updated by Bill Wood &lt;<wpwoodjr@gmail.com>&gt; to add `--newer` flag and ignore files in the working tree or index.

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000147000081A40000000000000000000000016627A28D00000859000000000000000000000000000000000000001F00000000git-extras-7.2.0/man/index.txt# manuals
git-abort(1) git-abort
git-alias(1) git-alias
git-archive-file(1) git-archive-file
git-authors(1) git-authors
git-browse-ci(1) git-browse-ci
git-browse(1) git-browse
git-brv(1) git-brv
git-bulk(1) git-bulk
git-changelog(1) git-changelog
git-clear-soft(1) git-clear-soft
git-clear(1) git-clear
git-coauthor(1) git-coauthor
git-commits-since(1) git-commits-since
git-contrib(1) git-contrib
git-count(1) git-count
git-cp(1) git-cp
git-create-branch(1) git-create-branch
git-delete-branch(1) git-delete-branch
git-delete-merged-branches(1) git-delete-merged-branches
git-delete-squashed-branches(1) git-delete-squashed-branches
git-delete-submodule(1) git-delete-submodule
git-delete-tag(1) git-delete-tag
git-delta(1) git-delta
git-effort(1) git-effort
git-extras(1) git-extras
git-feature(1) git-feature
git-force-clone(1) git-force-clone
git-fork(1) git-fork
git-fresh-branch(1) git-fresh-branch
git-get(1) git-get
git-gh-pages(1) git-gh-pages
git-graft(1) git-graft
git-guilt(1) git-guilt
git-ignore-io(1) git-ignore-io
git-ignore(1) git-ignore
git-info(1) git-info
git-local-commits(1) git-local-commits
git-lock(1) git-lock
git-locked(1) git-locked
git-magic(1) git-magic
git-merge-into(1) git-merge-into
git-merge-repo(1) git-merge-repo
git-missing(1) git-missing
git-mr(1) git-mr
git-obliterate(1) git-obliterate
git-paste(1) git-paste
git-pr(1) git-pr
git-psykorebase(1) git-psykorebase
git-pull-request(1) git-pull-request
git-reauthor(1) git-reauthor
git-rebase-patch(1) git-rebase-patch
git-release(1) git-release
git-rename-branch(1) git-rename-branch
git-rename-remote(1) git-rename-remote
git-rename-tag(1) git-rename-tag
git-repl(1) git-repl
git-reset-file(1) git-reset-file
git-root(1) git-root
git-scp(1) git-scp
git-sed(1) git-sed
git-setup(1) git-setup
git-show-merged-branches(1) git-show-merged-branches
git-show-tree(1) git-show-tree
git-show-unmerged-branches(1) git-show-unmerged-branches
git-squash(1) git-squash
git-stamp(1) git-stamp
git-standup(1) git-standup
git-summary(1) git-summary
git-sync(1) git-sync
git-touch(1) git-touch
git-undo(1) git-undo
git-unlock(1) git-unlock
git-utimes(1) git-utimes
07070100000148000081A40000000000000000000000016627A28D00000151000000000000000000000000000000000000002500000000git-extras-7.2.0/man/man-template.md<NAME>(1) -- <short description>
================================

## SYNOPSIS

`<NAME>` [OPTIONS]

## DESCRIPTION

## OPTIONS

## EXAMPLES

## AUTHOR

Written by <AUTHOR> <EMAIL> [and <SECOND_AUTHOR> <EMAIL>]

## REPORTING BUGS

&lt;<https://github.com/tj/git-extras/issues>&gt;

## SEE ALSO

&lt;<https://github.com/tj/git-extras>&gt;
07070100000149000081A40000000000000000000000016627A28D00000111000000000000000000000000000000000000002100000000git-extras-7.2.0/need_git_commit# A list of the commands in alphabetical order that require has_git_commit(),
# and should have it included in the "built" version of the command
git-authors
git-changelog
git-commits-since
git-count
git-effort
git-local-commits
git-reauthor
git-stamp
git-summary
git-undo
0707010000014A000081A40000000000000000000000016627A28D000000F6000000000000000000000000000000000000002300000000git-extras-7.2.0/not_need_git_repo# A list of the commands in alphabetical order that do not use is_git_repo(),
# and should not have it included in the "built" version of the command
git-alias
git-bulk
git-extras
git-force-clone
git-fork
git-get
git-ignore
git-setup
git-standup
0707010000014B000041ED0000000000000000000000026627A28D00000000000000000000000000000000000000000000001700000000git-extras-7.2.0/tests0707010000014C000081A40000000000000000000000016627A28D00000684000000000000000000000000000000000000002100000000git-extras-7.2.0/tests/README.md# Test for git-extras
The git-extras has its own testcases now, and the more is on the way! So let's introduce it.

We choose python to help us to reach to other shore cause **python is life saver**.

The test part depends on:

* python >= 3.11
* poetry >= 1.7.1
* pytest >= 7.4
* gitpython >= 3.1.40

So the versions are higher than above is recommended.

# How to run the tests
1. Install `poetry`
2. Install the dependencies via `poetry install --no-root`
3. Run `poetry run pytest`

It is done or go without `poetry`,

1. Install python >= 3.11
2. Install pytest >= 7.4
3. Install gitpython >= 3.1.40
4. Run `pytest`

The second way maybe blocked the some missing dependencies at someday, so the first one is recommended.

# What and how to create a unit test
One command has a unit test, because one `git-*` command is just do one thing, so we can eat a piece of `git-*` command in one time.

For example,

1. The `git-alias` should have a test suite, so create `test_git_alias.py` in the directory `test`
2. Create a test class `TestGitAlias` in the `test_git_alias.py`
3. Create a test case `test_init`, and some test fixtures can be used, `temp_repo`, `named_temp_repo` etc.
    * `temp_repo` is module scoped fixture which create a temporary directory and available in the test suite `test_git_alias.py`.
    * `named_temp_repo` is just same as `temp_repo` except the custom directory renaming.
4. Loop the third step until the 100% coverage of the function of the `git-alias`

# References
* [poetry](https://github.com/python-poetry/poetry)
* [pytest](https://github.com/pytest-dev/pytest/)
* [git python](https://github.com/gitpython-developers/GitPython)
0707010000014D000081A40000000000000000000000016627A28D000003A4000000000000000000000000000000000000002300000000git-extras-7.2.0/tests/conftest.py# Sharing fixtures
# Ref: https://docs.pytest.org/en/6.2.x/fixture.html#scope-sharing-fixtures-across-classes-modules-packages-or-session

import pytest
from helper import TempRepository

def create_repo(dirname = None):
    repo = TempRepository(dirname)
    tmp_file_a = repo.create_tmp_file()
    tmp_file_b = repo.create_tmp_file()
    repo.switch_cwd_under_repo()
    return repo

def init_repo_git_status(repo):
    git = repo.get_repo_git()
    git.add(".")
    git.config("--local", "user.name", "test")
    git.config("--local", "user.email", "test@git-extras.com")
    git.commit("-m", "chore: initial commit")

@pytest.fixture(scope="module")
def temp_repo():
    repo = create_repo()
    init_repo_git_status(repo)
    return repo

@pytest.fixture(scope="module")
def named_temp_repo(request):
    dirname = request.param
    repo = create_repo(dirname)
    init_repo_git_status(repo)
    yield repo
    repo.teardown()
0707010000014E000081A40000000000000000000000016627A28D0000119F000000000000000000000000000000000000002100000000git-extras-7.2.0/tests/helper.pyimport os, subprocess, shutil, tempfile
from git import Repo, GitCommandError
from testpath import MockCommand, modified_env

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
GIT_EXTRAS_BIN = os.path.abspath(os.path.join(CURRENT_DIR, "..", "bin"))
GIT_EXTRAS_HELPER = os.path.abspath(os.path.join(CURRENT_DIR, "..", "helper"))

GITHUB_ORIGIN = "https://github.com/tj/git-extras.git"
GITLAB_ORIGIN = "https://gitlab.com/tj/git-extras.git"
BITBUCKET_ORIGIN = "https://bitbucket.org/tj/git-extras.git"

class TempRepository:
    def __init__(self, repo_work_dir = None):
        self._system_tmpdir = tempfile.gettempdir()
        if repo_work_dir == None:
            repo_work_dir = tempfile.mkdtemp()
        else:
            repo_work_dir = os.path.join(self._system_tmpdir, repo_work_dir)
        self._cwd = repo_work_dir
        self._tempdirname = self._cwd[len(self._system_tmpdir) + 1:]
        self._git_repo = Repo.init(repo_work_dir, b="default")
        self._files = []
        self.change_origin_to_github()

    def switch_cwd_under_repo(self):
        os.chdir(self._cwd)
        print(f"The current work directory has switched to {self._cwd}")

    def get_cwd(self):
        return self._cwd

    def get_repo_dirname(self):
        return self._tempdirname

    def get_repo_git(self):
        return self._git_repo.git

    def get_file(self, index):
        return self._files[index]

    def get_filename(self, index):
        file = self._files[index]
        return file[1:]

    def get_files(self):
        return self._files

    def create_tmp_dir(self):
        tmp_dir = tempfile.mkdtemp()
        return tmp_dir

    def create_tmp_file(self, temp_dir = None):
        if temp_dir == None:
            temp_dir = self._cwd

        tmp_file = tempfile.mkstemp(dir=temp_dir)
        self._files.append(tmp_file[1])
        return tmp_file

    def remove_tmp_file(self, file_path):
        os.remove(file_path)
        print(f"File {file_path} has been removed")

    def writefile(self, temp_file, data):
        if data == None:
            return

        with open(temp_file, "w", encoding="utf-8") as f:
            f.write(data)

    def teardown(self):
        shutil.rmtree(self._cwd, ignore_errors=True)
        print(f"The temp directory {self._cwd} has been removed")

    def invoke_extras_command(self, name, *params):
        command_name = "git-" + name
        print(f"Invoke the git-extras command - {command_name} at {self._cwd}")
        script = [os.path.join(GIT_EXTRAS_BIN, command_name), *list(params)]
        print(f"Run the script \"{' '.join(script)}\"")
        return subprocess.run(script, capture_output=True)

    def invoke_installed_extras_command(self, name, *params):
        command_name = "git-" + name
        print(f"Invoke the git-extras command - {command_name} at {self._cwd}")
        origin_extras_command = os.path.join(GIT_EXTRAS_BIN, command_name)
        temp_extras_command = os.path.join(self._cwd, command_name)
        helpers = [
                os.path.join(GIT_EXTRAS_HELPER, "git-extra-utility"),
                os.path.join(GIT_EXTRAS_HELPER, "is-git-repo")]

        if not os.path.exists(temp_extras_command):
            whole = []
            with open(temp_extras_command, "w") as t:
                for helper in helpers:
                    with open(helper) as h:
                        content = h.read()
                        whole.extend(content.splitlines())
                with open(origin_extras_command) as o:
                    content = o.read()
                    first, *rest = content.splitlines()
                    whole.extend(rest)
                    whole.insert(0, first)
                t.write("\n".join(whole))
                print(f"Update file {temp_extras_command}")
            os.chmod(temp_extras_command, 0o775)

        script = [temp_extras_command, *params]
        print(f"Run the script \"{script}\"")
        return subprocess.run(script, capture_output=True)

    def change_origin(self, origin_url):
        try:
            self._git_repo.git.remote("add", "origin", origin_url)
        except GitCommandError as err:
            print(err)
        self._git_repo.git.remote("set-url", "origin", origin_url)

    def change_origin_to_github(self):
        self.change_origin(GITHUB_ORIGIN)

    def change_origin_to_gitlab(self):
        self.change_origin(GITLAB_ORIGIN)

    def change_origin_to_bitbucket(self):
        self.change_origin(BITBUCKET_ORIGIN)
0707010000014F000081A40000000000000000000000016627A28D00001277000000000000000000000000000000000000002300000000git-extras-7.2.0/tests/poetry.lock# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.

[[package]]
name = "colorama"
version = "0.4.6"
description = "Cross-platform colored terminal text."
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
files = [
    {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
    {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
]

[[package]]
name = "gitdb"
version = "4.0.11"
description = "Git Object Database"
optional = false
python-versions = ">=3.7"
files = [
    {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"},
    {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"},
]

[package.dependencies]
smmap = ">=3.0.1,<6"

[[package]]
name = "gitpython"
version = "3.1.40"
description = "GitPython is a Python library used to interact with Git repositories"
optional = false
python-versions = ">=3.7"
files = [
    {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"},
    {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"},
]

[package.dependencies]
gitdb = ">=4.0.1,<5"

[package.extras]
test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"]

[[package]]
name = "iniconfig"
version = "2.0.0"
description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.7"
files = [
    {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
    {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]

[[package]]
name = "packaging"
version = "23.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.7"
files = [
    {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
    {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
]

[[package]]
name = "pluggy"
version = "1.3.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.8"
files = [
    {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"},
    {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"},
]

[package.extras]
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]

[[package]]
name = "pytest"
version = "7.4.0"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.7"
files = [
    {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"},
    {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"},
]

[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<2.0"

[package.extras]
testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]

[[package]]
name = "smmap"
version = "5.0.1"
description = "A pure Python implementation of a sliding window memory map manager"
optional = false
python-versions = ">=3.7"
files = [
    {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"},
    {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
]

[[package]]
name = "testpath"
version = "0.6.0"
description = "Test utilities for code working with files and commands"
optional = false
python-versions = ">= 3.5"
files = [
    {file = "testpath-0.6.0-py3-none-any.whl", hash = "sha256:8ada9f80a2ac6fb0391aa7cdb1a7d11cfa8429f693eda83f74dde570fe6fa639"},
    {file = "testpath-0.6.0.tar.gz", hash = "sha256:2f1b97e6442c02681ebe01bd84f531028a7caea1af3825000f52345c30285e0f"},
]

[package.extras]
test = ["pytest"]

[metadata]
lock-version = "2.0"
python-versions = "^3.11"
content-hash = "b7e7874dbe3c45aaa4d22378531624f0900b4c86600fbcb4b323ad5eaf616ca1"
07070100000150000081A40000000000000000000000016627A28D000001BA000000000000000000000000000000000000002600000000git-extras-7.2.0/tests/pyproject.toml[tool.poetry]
name = "git-extras-tests"
version = "0.1.0"
description = "tests for git extras"
authors = ["vanpipy <vanpipy@gmail.com>"]
license = "MIT"
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"
pytest = "7.4"
gitpython = "3.1.40"
testpath = "0.6.0"

[tool.pytest.ini_options]
minversion = "7.4"
addopts = "-ra -q"
testpaths = ["."]

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
07070100000151000081A40000000000000000000000016627A28D00000816000000000000000000000000000000000000002900000000git-extras-7.2.0/tests/test_git_abort.pyfrom git import GitCommandError

class TestGitAbort:
    def test_init(self, temp_repo):
        git = temp_repo.get_repo_git()
        tmp_file = temp_repo.get_file(0)
        git.branch("A")
        git.branch("B")
        git.checkout("A")
        temp_repo.writefile(tmp_file, "a")
        git.add(".")
        git.commit("-m", "A")
        git.checkout("B")
        temp_repo.writefile(tmp_file, "b")
        git.add(".")
        git.commit("-m", "B")
        git.status()

    def test_cherry_pick(self, temp_repo):
        git = temp_repo.get_repo_git()
        try:
            git.cherry_pick("A")
        except GitCommandError as err:
            print(err)
        result = git.status()
        assert "Unmerged path" in result
        temp_repo.invoke_extras_command("abort")
        result = git.status()
        assert "nothing to commit, working tree clean" in result

    def test_merge(self, temp_repo):
        git = temp_repo.get_repo_git()
        try:
            git.merge("A")
        except GitCommandError as err:
            print(err)
        result = git.status()
        assert "Unmerged path" in result
        temp_repo.invoke_extras_command("abort")
        result = git.status()
        assert "nothing to commit, working tree clean" in result

    def test_rebase(self, temp_repo):
        git = temp_repo.get_repo_git()
        try:
            git.rebase("A")
        except GitCommandError as err:
            print(err)
        result = git.status()
        assert "Unmerged path" in result
        temp_repo.invoke_extras_command("abort")
        result = git.status()
        assert "nothing to commit, working tree clean" in result

    def test_revert(self, temp_repo):
        git = temp_repo.get_repo_git()
        try:
            git.revert("A")
        except GitCommandError as err:
            print(err)
        result = git.status()
        assert "Unmerged path" in result
        temp_repo.invoke_extras_command("abort")
        result = git.status()
        assert "nothing to commit, working tree clean" in result
07070100000152000081A40000000000000000000000016627A28D00000C04000000000000000000000000000000000000002900000000git-extras-7.2.0/tests/test_git_alias.pyclass TestGitAlias:
    def test_init(self, temp_repo):
        git = temp_repo.get_repo_git()
        git.config("--global", "alias.globalalias", "status")
        git.config("--global", "alias.x", "status")
        git.config("--local", "alias.localalias", "status")
        git.config("--local", "alias.y", "status")

    def test_list_all(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias")
        actual = actual.stdout.decode()
        assert "globalalias = status" in actual
        assert "x = status" in actual
        assert "localalias = status" in actual
        assert "y = status" in actual

    def test_list_all_globally(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias", "--global")
        actual = actual.stdout.decode()
        assert "globalalias = status" in actual

    def test_list_all_locally(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias", "--local")
        actual = actual.stdout.decode()
        assert "localalias = status" in actual

    def test_search_globally(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias", "--global", "global")
        actual = actual.stdout.decode()
        assert "globalalias = status" in actual
        actual = temp_repo.invoke_extras_command("alias", "--global", "local")
        actual = actual.stdout.decode()
        assert "" == actual

    def test_search_locally(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias", "--local", "local")
        actual = actual.stdout.decode()
        assert "localalias = status" in actual
        actual = temp_repo.invoke_extras_command("alias", "--local", "global")
        actual = actual.stdout.decode()
        assert "" == actual

    def test_get_alias_globally_and_defaultly(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias", "globalalias")
        actual = actual.stdout.decode()
        assert "globalalias = status" in actual

    def test_set_alias_globally_and_defaultly(self, temp_repo):
        temp_repo.invoke_extras_command("alias", "globalalias", "diff")
        actual = temp_repo.invoke_extras_command("alias")
        actual = actual.stdout.decode()
        assert "globalalias = diff" in actual

    def test_get_alias_locally(self, temp_repo):
        actual = temp_repo.invoke_extras_command("alias", "--local", "localalias")
        actual = actual.stdout.decode()
        assert "localalias = status" in actual

    def test_set_alias_locally(self, temp_repo):
        temp_repo.invoke_extras_command("alias", "--local", "localalias", "diff")
        actual = temp_repo.invoke_extras_command("alias")
        actual = actual.stdout.decode()
        assert "localalias = diff" in actual

    def test_teardown(self, temp_repo):
        git = temp_repo.get_repo_git()
        git.config("--global", "--unset", "alias.globalalias")
        git.config("--global", "--unset", "alias.x")
        git.config("--local", "--unset", "alias.localalias")
        git.config("--local", "--unset", "alias.y")
07070100000153000081A40000000000000000000000016627A28D00000C05000000000000000000000000000000000000003000000000git-extras-7.2.0/tests/test_git_archive_file.pyimport os, pytest

class TestGitArchiveFile:
    def test_init(self, temp_repo):
        git = temp_repo.get_repo_git()
        tmp_file = temp_repo.get_file(0)
        temp_repo.writefile(tmp_file, "data")
        git.add(".")
        git.commit("-m", "test: add data")
        git.tag("0.1.0", "-m", "bump: 0.1.0")

    def test_archive_file_on_tags_branch(self, temp_repo):
        git = temp_repo.get_repo_git()
        git.checkout("-b", "tags0.1.0")
        temp_repo.invoke_installed_extras_command("archive-file")
        filename = "{0}.{1}.zip".format(temp_repo.get_repo_dirname(), git.describe())
        assert filename in os.listdir()

    def test_archive_file_on_any_not_tags_branch_without_default_branch(self, temp_repo):
        git = temp_repo.get_repo_git()
        git.checkout("-b", "not-tags-branch")
        temp_repo.invoke_installed_extras_command("archive-file")
        filename = "{0}.{1}.{2}.zip".format(
                temp_repo.get_repo_dirname(),
                git.describe("--always", "--long"),
                "not-tags-branch")
        assert filename in os.listdir()

    def test_archive_file_on_any_not_tags_branch_with_default_branch(self, temp_repo):
        git = temp_repo.get_repo_git()
        git.checkout("default")
        git.config("git-extras.default-branch", "default")
        temp_repo.invoke_installed_extras_command("archive-file")
        filename = "{0}.{1}.zip".format(
                temp_repo.get_repo_dirname(),
                git.describe("--always", "--long"))
        assert filename in os.listdir()

    def test_archive_file_on_branch_name_has_slash(self, temp_repo):
        git = temp_repo.get_repo_git()
        git.checkout("-b", "feature/slash")
        temp_repo.invoke_installed_extras_command("archive-file")
        filename = "{0}.{1}.{2}.zip".format(
                temp_repo.get_repo_dirname(),
                git.describe("--always", "--long"),
                "feature-slash")
        assert filename in os.listdir()

    @pytest.mark.parametrize("named_temp_repo", ["backslash\\dir"], indirect=True)
    def test_archive_file_on_dirname_has_backslash(self, named_temp_repo):
        named_temp_repo.invoke_installed_extras_command("archive-file")
        git = named_temp_repo.get_repo_git()
        filename = "{0}.{1}.{2}.zip".format(
                "backslash-dir",
                git.describe("--always", "--long"),
                "default")
        assert filename in os.listdir()

    def test_archive_file_on_tag_name_has_slash(self, temp_repo):
        temp_repo.switch_cwd_under_repo()
        git = temp_repo.get_repo_git()
        git.checkout("default")
        git.tag("--delete", "0.1.0")
        git.tag("0.1.0/slash", "-m", "bump: 0.1.0")
        temp_repo.invoke_installed_extras_command("archive-file")
        description_include_version = git.describe("--always", "--long")
        filename = "{0}.{1}.zip".format(
                temp_repo.get_repo_dirname(),
                description_include_version.replace("/", "-"))
        assert filename in os.listdir()
07070100000154000081A40000000000000000000000016627A28D00000785000000000000000000000000000000000000002B00000000git-extras-7.2.0/tests/test_git_authors.pyimport os, subprocess

expected_authors_list = "test <test@git-extras.com>\ntestagain <testagain@git-extras.com>\n"
expected_authors_list_without_email = "test\ntestagain\n"
authors_file = "AUTHORS"

class TestGitAuthors:
    def test_init(self, temp_repo):
        git = temp_repo.get_repo_git()
        tmp_file = temp_repo.get_file(0)
        temp_repo.writefile(tmp_file, "A")
        git.add(".")
        git.commit("-m", "test: add data A")
        git.config("--local", "user.name", "testagain")
        git.config("--local", "user.email", "testagain@git-extras.com")
        temp_repo.writefile(tmp_file, "B")
        git.add(".")
        git.commit("-m", "test: add data B")

    def test_output_authors_has_email_without_any_parameter(self, temp_repo):
        git = temp_repo.get_repo_git()
        rs = temp_repo.invoke_extras_command("authors")
        with open(authors_file) as f:
            content = f.read()
            print(content)
            print(expected_authors_list)
            assert content == expected_authors_list

    def test_list_authors_has_email_defaultly(self, temp_repo):
        git = temp_repo.get_repo_git()
        actual = temp_repo.invoke_extras_command("authors", "--list")
        actual = actual.stdout.decode()
        assert actual == expected_authors_list
        actual = temp_repo.invoke_extras_command("authors", "-l")
        actual = actual.stdout.decode()
        assert actual == expected_authors_list

    def test_list_authors_has_not_email(self, temp_repo):
        git = temp_repo.get_repo_git()
        actual = temp_repo.invoke_extras_command("authors", "--list", "--no-email")
        actual = actual.stdout.decode()
        assert actual == expected_authors_list_without_email
        actual = temp_repo.invoke_extras_command("authors", "-l", "--no-email")
        actual = actual.stdout.decode()
        assert actual == expected_authors_list_without_email
07070100000155000081A40000000000000000000000016627A28D00002AE8000000000000000000000000000000000000002A00000000git-extras-7.2.0/tests/test_git_browse.pyimport os, subprocess
from testpath import MockCommand, modified_env

UNKNOWN_SITE_ORIGIN = "https://unknown-site.com/tj/git-extras.git"

def get_file_uri(mode, filename, git):
    commit_hash = git.rev_parse("HEAD")
    if mode == "github":
        return "https://github.com/tj/git-extras/blob/" + commit_hash + '/' + filename
    if mode == "gitlab":
        return "https://gitlab.com/tj/git-extras/-/blob/" + commit_hash + '/' + filename
    if mode == "bitbucket":
        return "https://bitbucket.org/tj/git-extras/src/" + commit_hash + '/' + filename

class TestGitBrowse:
    def test_browse_github_file_on_mac(self, temp_repo):
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("github", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_file_on_mac(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("gitlab", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_file_on_mac(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("bitbucket", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_github_file_on_git_bash_on_window(self, temp_repo):
        temp_repo.change_origin_to_github()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("github", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_file_on_git_bash_on_window(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("gitlab", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_file_on_git_bash_on_window(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("bitbucket", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_github_file_on_WSL_with_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_github()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("github", filename, git)
            openCommand.assert_called(["-NoProfile", "start", expected_url])

    def test_browse_gitlab_file_on_WSL_with_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("gitlab", filename, git)
            openCommand.assert_called(["-NoProfile", "start", expected_url])

    def test_browse_bitbucket_file_on_WSL_with_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("bitbucket", filename, git)
            openCommand.assert_called(["-NoProfile", "start", expected_url])

    def test_browse_github_file_on_WSL_without_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_github()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("github", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_file_on_WSL_without_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("gitlab", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_file_on_WSL_without_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("bitbucket", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_github_file_not_mac_or_msys_or_linux(self, temp_repo):
        temp_repo.change_origin_to_github()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("github", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_file_not_mac_or_msys_or_linux(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("gitlab", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_file_not_mac_or_msys_or_linux(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename)
            expected_url = get_file_uri("bitbucket", filename, git)
            openCommand.assert_called([expected_url])

    def test_browse_github_file_with_line_number(self, temp_repo):
        temp_repo.change_origin_to_github()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20")
            expected_url = get_file_uri("github", filename, git)
            openCommand.assert_called([expected_url + "#L10-L20"])

    def test_browse_gitlab_file_with_line_number(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20")
            expected_url = get_file_uri("gitlab", filename, git)
            openCommand.assert_called([expected_url + "#L10-20"])

    def test_browse_bitbucket_file_with_line_number(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20")
            expected_url = get_file_uri("bitbucket", filename, git)
            openCommand.assert_called([expected_url + "#lines-10:20"])

    def test_browse_unknown_site_file(self, temp_repo):
        temp_repo.change_origin(UNKNOWN_SITE_ORIGIN)
        git = temp_repo.get_repo_git()
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin")
            openCommand.assert_called([UNKNOWN_SITE_ORIGIN[0:-4]])

    def test_browse_unknown_site_file_with_line_number(self, temp_repo):
        git = temp_repo.get_repo_git()
        filename = temp_repo.get_filename(0)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse", "origin", filename, "10", "20")
            openCommand.assert_called([UNKNOWN_SITE_ORIGIN[0:-4]])
07070100000156000081A40000000000000000000000016627A28D00001CB6000000000000000000000000000000000000002D00000000git-extras-7.2.0/tests/test_git_browse_ci.pyimport os, subprocess
from testpath import MockCommand, modified_env

UNKNOWN_SITE_ORIGIN = "https://unknown-site.com/tj/git-extras.git"

def get_ci_uri_by_domain(mode):
    if mode == "github":
        return "https://github.com/tj/git-extras/actions"
    if mode == "gitlab":
        return "https://gitlab.com/tj/git-extras/-/pipelines"
    if mode == "bitbucket":
        return "https://bitbucket.org/tj/git-extras/addon/pipelines/home"

class TestGitBrowse:
    def test_browse_github_ci_on_mac(self, temp_repo):
        with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("github")
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_ci_on_mac(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("gitlab")
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_ci_on_mac(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        with modified_env({ "OSTYPE": "darwin" }), MockCommand("open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("bitbucket")
            openCommand.assert_called([expected_url])

    def test_browse_github_ci_on_git_bash_on_window(self, temp_repo):
        temp_repo.change_origin_to_github()
        with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("github")
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_ci_on_git_bash_on_window(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("gitlab")
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_ci_on_git_bash_on_window(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        with modified_env({ "OSTYPE": "msys" }), MockCommand("start") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("bitbucket")
            openCommand.assert_called([expected_url])

    def test_browse_github_ci_on_WSL_with_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_github()
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("github")
            openCommand.assert_called(["-NoProfile", "start", expected_url])

    def test_browse_gitlab_ci_on_WSL_with_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("gitlab")
            openCommand.assert_called(["-NoProfile", "start", expected_url])

    def test_browse_bitbucket_ci_on_WSL_with_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "microsoft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("powershell.exe") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("bitbucket")
            openCommand.assert_called(["-NoProfile", "start", expected_url])

    def test_browse_github_ci_on_WSL_without_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_github()
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("github")
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_ci_on_WSL_without_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("gitlab")
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_ci_on_WSL_without_microsoft_key(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        with modified_env({ "OSTYPE": "linux" }), MockCommand.fixed_output("uname", "no-micro-soft"), \
            MockCommand.fixed_output("command", "/powershell.exe"), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("bitbucket")
            openCommand.assert_called([expected_url])

    def test_browse_github_ci_not_mac_or_msys_or_linux(self, temp_repo):
        temp_repo.change_origin_to_github()
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("github")
            openCommand.assert_called([expected_url])

    def test_browse_gitlab_ci_not_mac_or_msys_or_linux(self, temp_repo):
        temp_repo.change_origin_to_gitlab()
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("gitlab")
            openCommand.assert_called([expected_url])

    def test_browse_bitbucket_ci_not_mac_or_msys_or_linux(self, temp_repo):
        temp_repo.change_origin_to_bitbucket()
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            expected_url = get_ci_uri_by_domain("bitbucket")
            openCommand.assert_called([expected_url])

    def test_browse_unknown_site_file(self, temp_repo):
        temp_repo.change_origin(UNKNOWN_SITE_ORIGIN)
        with modified_env({ "OSTYPE": "unique-system" }), MockCommand("xdg-open") as openCommand:
            temp_repo.invoke_extras_command("browse-ci", "origin")
            openCommand.assert_called([''])
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!2015 blocks
openSUSE Build Service is sponsored by