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
```

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 <repo>. 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 <tag> 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 <tag>"
- Tags with the given <tag>
- 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.
[](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 <<muhtasib@gmail.com>>
Shell Script by Nick Lombard <<github@jigsoft.co.za>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:pkitszel@gmail.com" data-bare-link="true">pkitszel@gmail.com</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 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 <<pkitszel@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <search-pattern>
<code>git-alias</code> <alias-name> <command>
<code>git-alias</code> [--global]
<code>git-alias</code> [--local]
<code>git-alias</code> [--global] <search-pattern>
<code>git-alias</code> [--local] <search-pattern>
<code>git-alias</code> [--global] <alias-name> <command>
<code>git-alias</code> [--local] <alias-name> <command></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><search-pattern></p>
<p>The pattern used to search aliases.</p>
<p><alias-name></p>
<p>The name of the alias to create.</p>
<p><command></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 <%ae>
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Jonhnny Weslley <<a href="mailto:jw@jonhnnyweslley.net" data-bare-link="true">jw@jonhnnyweslley.net</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'>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` <search-pattern>
`git-alias` <alias-name> <command>
`git-alias` [--global]
`git-alias` [--local]
`git-alias` [--global] <search-pattern>
`git-alias` [--local] <search-pattern>
`git-alias` [--global] <alias-name> <command>
`git-alias` [--local] <alias-name> <command>
## 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
<search-pattern>
The pattern used to search aliases.
<alias-name>
The name of the alias to create.
<command>
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 <<jw@jonhnnyweslley.net>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:me@thehippo.de" data-bare-link="true">me@thehippo.de</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'>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 <<me@thehippo.de>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <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>
</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 <<a href="mailto:tituswormer@gmail.com" data-bare-link="true">tituswormer@gmail.com</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'>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 <<tituswormer@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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) - <View the web page for the 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="#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><remote_name></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 <<a href="https://github.com/pbnj" data-bare-link="true">https://github.com/pbnj</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'>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
<remote_name>
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 <<https://github.com/pbnj>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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) - <View the web page for the 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="#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><remote_name></p>
<p>The name of the remote you wish to browse to. Defaults to
the first remote if not specified.</p>
<p><file_name></p>
<p>The name of the file you wish to browse to.</p>
<p><line_1></p>
<p>The line number of the file you wish to browse to.</p>
<p><line_2></p>
<p>The line range (from <line_1> to <line_2>) 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 <<a href="https://github.com/mapitman" data-bare-link="true">https://github.com/mapitman</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'>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
<remote_name>
The name of the remote you wish to browse to. Defaults to
the first remote if not specified.
<file_name>
The name of the file you wish to browse to.
<line_1>
The line number of the file you wish to browse to.
<line_2>
The line range (from <line_1> to <line_2>) 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 <<https://github.com/mapitman>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="https://github.com/Osse" data-bare-link="true">https://github.com/Osse</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'>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 <<https://github.com/Osse>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <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</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 <ws-name></p>
<p> Run the git command on the specified workspace. The workspace must be registered.</p>
<p> <git command></p>
<p> Any git Command you wish to execute on the repositories.</p>
<p> --addworkspace <ws-name> <ws-root-directory> (--from <URL or file&rt;gt;)</p>
<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>
<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 <ws-name></p>
<p> Remove the workspace with the logical name <ws-name>.</p>
<p> --addcurrent <ws-name></p>
<p> Adds the current directory as workspace to git bulk operations. The workspace is referenced with its logical name <ws-name>.</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 <<a href="mailto:ns103@hotmail.de" data-bare-link="true">ns103@hotmail.de</a>></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p><https://github.com/nschlimm/git-bulk></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 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 <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
## 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 <ws-name>
Run the git command on the specified workspace. The workspace must be registered.
<git command>
Any git Command you wish to execute on the repositories.
--addworkspace <ws-name> <ws-root-directory> (--from <URL or file&rt;gt;)
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.
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 <ws-name>
Remove the workspace with the logical name <ws-name>.
--addcurrent <ws-name>
Adds the current directory as workspace to git bulk operations. The workspace is referenced with its logical name <ws-name>.
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 <<ns103@hotmail.de>>
## REPORTING BUGS
<https://github.com/nschlimm/git-bulk>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] [<file>]<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> <file></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 <<a href="mailto:mark@mixtur.com" data-bare-link="true">mark@mixtur.com</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'>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] [<file>]<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
<file>
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 <<mark@mixtur.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:grindhold@gmx.net" data-bare-link="true">grindhold@gmx.net</a>> by Matiss Treinis <<a href="mailto:mrtreinis@gmail.com" data-bare-link="true">mrtreinis@gmail.com</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'>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 <<grindhold@gmx.net>> by Matiss Treinis <<mrtreinis@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:grindhold@gmx.net" data-bare-link="true">grindhold@gmx.net</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'>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 <<grindhold@gmx.net>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <co-author> <co-author-email></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Add a co-author to the last commit</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <co-author></p>
<p> The username of the co-author you want to add.</p>
<p> <co-author-email></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="mailto:jacobherringtondeveloper@gmail.com" data-bare-link="true">jacobherringtondeveloper@gmail.com</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 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` <co-author> <co-author-email>
## DESCRIPTION
Add a co-author to the last commit
## OPTIONS
<co-author>
The username of the co-author you want to add.
<co-author-email>
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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<date>]</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> List of commits since the given <em>date</em>.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <date></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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` [<date>]
## DESCRIPTION
List of commits since the given _date_.
## OPTIONS
<date>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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'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> [<username>|<email>]</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> <username></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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` [<username>|<email>]
## 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
<username>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <current_filename> <destination_filename></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 <<a href="mailto:hubscher.remy@gmail.com" data-bare-link="true">hubscher.remy@gmail.com</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>
<p><<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>></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` <current_filename> <destination_filename>
## 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 <<hubscher.remy@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
<<https://stackoverflow.com/questions/16937359/git-copy-file-preserving-history/44036771#44036771>>
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]] <branchname></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Creates local branch named <branchname> and optionally sets up a remote tracking branch.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p><-r|--remote [remote_name]></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><--from [start_point]></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><branchname></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 & remote branch 'integration' (on default 'origin')
$ git create-branch -r integration
# creates local & 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 & 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
</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 <<a href="mailto:jw@jonhnnyweslley.net" data-bare-link="true">jw@jonhnnyweslley.net</a>>
Modified by Mark Pitman <<a href="mailto:mark.pitman@gmail.com" data-bare-link="true">mark.pitman@gmail.com</a>>, Brian Murrell <<a href="mailto:btmurrell@gmail.com" data-bare-link="true">btmurrell@gmail.com</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'>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]] <branchname>
## DESCRIPTION
Creates local branch named <branchname> and optionally sets up a remote tracking branch.
## OPTIONS
<-r|--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.
<branchname>
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 <<jw@jonhnnyweslley.net>>
Modified by Mark Pitman <<mark.pitman@gmail.com>>, Brian Murrell <<btmurrell@gmail.com>>.
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <branchname></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Deletes local and remote branch named <branchname>.
Note that local deletion fails if the branch is checked out.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <branchname></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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` <branchname>
## DESCRIPTION
Deletes local and remote branch named <branchname>.
Note that local deletion fails if the branch is checked out.
## OPTIONS
<branchname>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:jespinog@gmail.com" data-bare-link="true">jespinog@gmail.com</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'>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 <<jespinog@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] [<branch-name>]</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> <branch-name></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 <<a href="mailto:teddy.katz@gmail.com" data-bare-link="true">teddy.katz@gmail.com</a>> and Vladimir Jimenez <<a href="mailto:me@allejo.io" data-bare-link="true">me@allejo.io</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'>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] [<branch-name>]
## 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)
<branch-name>
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 <<teddy.katz@gmail.com>> and Vladimir Jimenez <<me@allejo.io>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <path></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <path></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 <<a href="mailto:jw@jonhnnyweslley.net" data-bare-link="true">jw@jonhnnyweslley.net</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'>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` <path>
## DESCRIPTION
## OPTIONS
<path>
The path of the submodule to delete.
## EXAMPLES
$ git delete-submodule lib/foo
## AUTHOR
Written by Jonhnny Weslley <<jw@jonhnnyweslley.net>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <tagname></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Deletes local and remote tag named <tagname>.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <tagname></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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` <tagname>
## DESCRIPTION
Deletes local and remote tag named <tagname>.
## OPTIONS
<tagname>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<branch>] [<filter>]</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 <<a href="mailto:hello@imsky.co" data-bare-link="true">hello@imsky.co</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'>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` [<branch>] [<filter>]
## 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 <<hello@imsky.co>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <value>] [<path>...] [-- [<log options>...]]</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 <value></p>
<p> Ignore files with commits <= a value.</p>
<p> <path>...</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> <log options>...</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 <<a href="mailto:muhtasib@gmail.com" data-bare-link="true">muhtasib@gmail.com</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'>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 <value>] [<path>...] [-- [<log options>...]]
## 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 <value>
Ignore files with commits <= a value.
<path>...
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).
<log options>...
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 <<muhtasib@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:jespinog@gmail.com" data-bare-link="true">jespinog@gmail.com</a>><br />
Modified by Mark Pitman <<a href="mailto:mark.pitman@gmail.com" data-bare-link="true">mark.pitman@gmail.com</a>><br />
Modified by Carlos Prado <<a href="mailto:carlos.prado@cpradog.com" data-bare-link="true">carlos.prado@cpradog.com</a>><br />
Modified by Austin Ziegler <<a href="mailto:halostatue@gmail.com" data-bare-link="true">halostatue@gmail.com</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>>, <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 <<jespinog@gmail.com>>
Modified by Mark Pitman <<mark.pitman@gmail.com>>
Modified by Carlos Prado <<carlos.prado@cpradog.com>>
Modified by Austin Ziegler <<halostatue@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>, 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> [<github-repo-url>]</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 <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 <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>$ ..<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)
</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 <<a href="mailto:mail@andrewgriffithsonline.com" data-bare-link="true">mail@andrewgriffithsonline.com</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'>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` [<github-repo-url>]
## 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 <<mail@andrewgriffithsonline.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <branchname></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Creates empty local branch named <branchname>.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <branchname></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 <<a href="mailto:me@kennethreitz.com" data-bare-link="true">me@kennethreitz.com</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'>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` <branchname>
## DESCRIPTION
Creates empty local branch named <branchname>.
## OPTIONS
<branchname>
The name of the branch to create.
## EXAMPLES
$ git fresh-branch docs
## AUTHOR
Written by Kenneth Reitz <<me@kennethreitz.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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/<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.
$
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Edwin Kofler <<a href="mailto:edwin@kofler.dev" data-bare-link="true">edwin@kofler.dev</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'>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 <<edwin@kofler.dev>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 -> 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 <<a href="mailto:jespinog@gmail.com" data-bare-link="true">jespinog@gmail.com</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'>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 <<jespinog@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <src-branch> <dest-branch></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Merge commits from <src-branch> into <dest-branch></p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <src-branch></p>
<p> <dest-branch></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 <<a href="mailto:me@kennethreitz.com" data-bare-link="true">me@kennethreitz.com</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'>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` <src-branch> <dest-branch>
## DESCRIPTION
Merge commits from <src-branch> into <dest-branch>
## OPTIONS
<src-branch>
<dest-branch>
## EXAMPLES
$ git graft new_feature dev
## AUTHOR
Written by Kenneth Reitz <<me@kennethreitz.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<option>]<br />
<code>git guilt</code> [<option>] <since> [<until>]</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, <until> 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 <<a href="mailto:spacewanderlzx@gmail.com" data-bare-link="true">spacewanderlzx@gmail.com</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'>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` [<option>]<br>
`git guilt` [<option>] <since> [<until>]
## 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, <until> 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 <<spacewanderlzx@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<OPTIONS>]</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> <OPTIONS></p>
<p> -a, --append <types>...<br />
Append new .gitignore content to .gitignore under the current directory</p>
<p> -r, --replace <types>...<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 <word><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="mailto:weilee.rx@gmail.com" data-bare-link="true">weilee.rx@gmail.com</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'>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` [<OPTIONS>]
## DESCRIPTION
Get sample gitignore file from [gitignore.io](https://www.toptal.com/developers/gitignore/)
## OPTIONS
<OPTIONS>
-a, --append <types>...
Append new .gitignore content to .gitignore under the current directory
-r, --replace <types>...
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 <word>
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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<context>] [<pattern> [<pattern>]...]</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> <context></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> <pattern></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</a>> and Tema Bolshakov <<a href="mailto:tweekane@gmail.com" data-bare-link="true">tweekane@gmail.com</a>>
and Nick Lombard <<a href="mailto:github@jigsoft.co.za" data-bare-link="true">github@jigsoft.co.za</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'>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` [<context>] [<pattern> [<pattern>]...]
## DESCRIPTION
Adds the given _pattern_s to a .gitignore file if it doesn't already exist.
## OPTIONS
<context>
-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`).
<pattern>
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 <<tj@vision-media.ca>> and Tema Bolshakov <<tweekane@gmail.com>>
and Nick Lombard <<github@jigsoft.co.za>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 "<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 "<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 -> 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
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Leila Muhtasib <<a href="mailto:muhtasib@gmail.com" data-bare-link="true">muhtasib@gmail.com</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 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 <<muhtasib@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <args></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><args></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 <<a href="mailto:mkomitee@gmail.com" data-bare-link="true">mkomitee@gmail.com</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'>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` <args>
## 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
<args>
All arguments passed to `git-local-commits` will be passed directly to `git-log`.
## EXAMPLES
$ git local-commits --graph
## AUTHOR
Written by Michael Komitee <<mkomitee@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <filename></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Lock local files from version control.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <filename></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 <<a href="mailto:julionc@gmail.com" data-bare-link="true">julionc@gmail.com</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'>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` <filename>
## DESCRIPTION
Lock local files from version control.
## OPTIONS
<filename>
The name of the filename.
## EXAMPLES
$ git lock config/database.yml
## AUTHOR
Written by Julio Napuri <<julionc@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:kevinawoo@gmail.com" data-bare-link="true">kevinawoo@gmail.com</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'>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 <<kevinawoo@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <54alpersaid@gmail.com>
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 <54alpersaid@gmail.com>
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 <54alpersaid@gmail.com></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'>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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] <dest> [--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> <src></p>
<p> The name of the branch will be merged into. If this not given, use current branch as default.</p>
<p> <dest></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 <<a href="mailto:spacewanderlzx@gmail.com" data-bare-link="true">spacewanderlzx@gmail.com</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'>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] <dest> [--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
<src>
The name of the branch will be merged into. If this not given, use current branch as default.
<dest>
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 <<spacewanderlzx@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <repo> <branch> <directory> [--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 <<a href="mailto:hello@imsky.co" data-bare-link="true">hello@imsky.co</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'>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` <repo> <branch> <directory> [--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 <<hello@imsky.co>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<first branch>] <second branch> [<git log options>]</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> [<first branch>]</p>
<p> First branch to compare. If not specified, defaults to currently checked out branch.</p>
<p> <second branch></p>
<p> Second branch to compare.</p>
<p> [<git log options>]</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
< 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
< b8f0d14 only on foo
> f38797e only on bar
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Nate Jones <<a href="mailto:nate@endot.org" data-bare-link="true">nate@endot.org</a>></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p><<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://github.com/tj/git-extras/issues</a>></p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p><<a href="http://github.com/tj/git-extras" data-bare-link="true">http://github.com/tj/git-extras</a>></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` [<first branch>] <second branch> [<git log options>]
## 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
[<first branch>]
First branch to compare. If not specified, defaults to currently checked out branch.
<second branch>
Second branch to compare.
[<git log options>]
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 <<nate@endot.org>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <number> [<remote>]<br />
<code>git-mr</code> <url><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> <remote></p>
<p> The name of the remote to fetch from. Defaults to <code>origin</code>.</p>
<p> <url></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 -> mr/51
Switched to branch 'mr/51'
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Étienne BERSAC <a href="mailto:bersace03@gmail.com" data-bare-link="true">bersace03@gmail.com</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><<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'>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` <number> [<remote>]<br>
`git-mr` <url><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
<remote>
The name of the remote to fetch from. Defaults to `origin`.
<url>
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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <files...> [-- <rev-list options...>]</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 <<a href="mailto:brianloveswords@gmail.com" data-bare-link="true">brianloveswords@gmail.com</a>></p>
<h2 id="REPORTING-BUG">REPORTING BUG</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'>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 <files...> [-- <rev-list options...>]
## 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 <<brianloveswords@gmail.com>>
## REPORTING BUG
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <git format-patch options></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> <git format-patch options></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 <<a href="mailto:pabs3@bonedaddy.net" data-bare-link="true">pabs3@bonedaddy.net</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'>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` <git format-patch options>
## DESCRIPTION
Send patches to pastebin for chat conversations using pastebinit.
The syntax highlighting will be set to 'diff'.
## OPTIONS
<git format-patch options>
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 <<pabs3@bonedaddy.net>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] <number> [<remote>]<br />
<code>git-pr</code> [-m|--merge] <[remote]:number>...<br />
<code>git-pr</code> [-m|--merge] <url>...<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> <remote></p>
<p> The name of the remote to fetch from. Defaults to <code>origin</code>.</p>
<p> <url></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 -> 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 -> 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 -> 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><<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'>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] <number> [<remote>]<br>
`git-pr` [-m|--merge] <[remote]:number>...<br>
`git-pr` [-m|--merge] <url>...<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
<remote>
The name of the remote to fetch from. Defaults to `origin`.
<url>
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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <target_branch> [<feature_branch>] [--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 <<a href="mailto:hubscher.remy@gmail.com" data-bare-link="true">hubscher.remy@gmail.com</a>></p>
<p>Based on Benoît Bryon <<a href="mailto:benoit@marmelune.net" data-bare-link="true">benoit@marmelune.net</a>> implementation in
Python.</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>
<p><<a href="https://github.com/benoitbryon/psykorebase" data-bare-link="true">https://github.com/benoitbryon/psykorebase</a>></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` <target_branch> [<feature_branch>] [--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 <<hubscher.remy@gmail.com>>
Based on Benoît Bryon <<benoit@marmelune.net>> implementation in
Python.
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
<<https://github.com/benoitbryon/psykorebase>>
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> [<target branch>]</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 <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 <other-acc-personal-access-token></code></p>
<h2 id="OPTIONS">OPTIONS</h2>
<p><target branch></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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 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` [<target branch>]
## 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
<target branch>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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'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 [<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 <<var>email</var>></p>
<pre><code>Define the correct email to set
Empty email '' is allowed
</code></pre>
<p> -n, --correct-name <<var>name</var>></p>
<pre><code>Define the correct name to set
Empty name '' is not allowed
</code></pre>
<p> -o, --old-email <<var>email</var>></p>
<pre><code>Rewrite identities matching old email in commits and tags
Empty email '' is allowed
</code></pre>
<p> -t, --type <<var>id</var>></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 <<a href="mailto:damien@tardypad.me" data-bare-link="true">damien@tardypad.me</a>></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p><<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://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'>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 <<email>>
Define the correct email to set
Empty email '' is allowed
-n, --correct-name <<name>>
Define the correct name to set
Empty name '' is not allowed
-o, --old-email <<email>>
Rewrite identities matching old email in commits and tags
Empty email '' is allowed
-t, --type <<id>>
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 <<damien@tardypad.me>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <patch-file></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><patch-file></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 <<a href="mailto:niklas.fiekas@tu-clausthal.de" data-bare-link="true">niklas.fiekas@tu-clausthal.de</a>></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p><<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://github.com/tj/git-extras/issues</a>></p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p><<a href="http://github.com/tj/git-extras" data-bare-link="true">http://github.com/tj/git-extras</a>></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` <patch-file>
## 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
* <patch-file>:
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 <<niklas.fiekas@tu-clausthal.de>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<tagname> | --semver <name>] [-r <remote>] [-m <commit info>] [--no-empty-commit] [-c] [-s] [-u <key-id>] [--prefix <tag prefix>] [[--] <hook arguments...>]</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Commits changes with message "Release <tagname>" or custom commit information, tags with the given <tagname> 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 <name></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> <tagname></p>
<p> The name of the newly created tag. Also used in tag comment.</p>
<p> --prefix <tag prefix></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 <remote></p>
<p> The "remote" repository that is destination of a push operation: it is passed to git push.</p>
<p> -m <commit info></p>
<p> use the custom commit information instead of the default message "Release <tagname>" .</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 <key-id></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 <tagname>.</p>
<p>$ git release 0.1.0</p></li>
<li><p>Release commit with the given <tagname> and custom commit message.</p>
<p>$ git release 0.1.0 -m "+ powerful feature added."</p></li>
<li><p>Release commit with the given <tagname> and push to specific remote.</p>
<p>$ git release 0.1.0 -r github</p></li>
<li><p>Release commit with the given <tagname> and populate changelog.</p>
<p>$ git release 0.1.0 -c</p></li>
<li><p>Release commit with the given <tagname>, 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 <tagname>, pass <tagname> 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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</a>>
Extended by David Hartmann <<a href="mailto:dh@tsl.io" data-bare-link="true">dh@tsl.io</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'>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` [<tagname> | --semver <name>] [-r <remote>] [-m <commit info>] [--no-empty-commit] [-c] [-s] [-u <key-id>] [--prefix <tag prefix>] [[--] <hook arguments...>]
## DESCRIPTION
Commits changes with message "Release <tagname>" or custom commit information, tags with the given <tagname> 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 <name>
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.
<tagname>
The name of the newly created tag. Also used in tag comment.
--prefix <tag prefix>
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 <remote>
The "remote" repository that is destination of a push operation: it is passed to git push.
-m <commit info>
use the custom commit information instead of the default message "Release <tagname>" .
--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 <key-id>
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 <tagname>.
$ git release 0.1.0
* Release commit with the given <tagname> and custom commit message.
$ git release 0.1.0 -m "+ powerful feature added."
* Release commit with the given <tagname> and push to specific remote.
$ git release 0.1.0 -r github
* Release commit with the given <tagname> and populate changelog.
$ git release 0.1.0 -c
* Release commit with the given <tagname>, populate changelog, and push to specific remote.
$ git release 0.1.0 -r github -c
* Release commit with the given <tagname>, pass <tagname> 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 <<tj@vision-media.ca>>
Extended by David Hartmann <<dh@tsl.io>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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
<old\-branch>
Old branch whose has to be renamed\. This is an optional parameter\. If no value is supplied then the current branch will be renamed\.
<new\-branch>
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> <old-branch> <new-branch></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>&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
</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 <<a href="mailto:hozefarules@gmail.com" data-bare-link="true">hozefarules@gmail.com</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'>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` <old-branch> <new-branch>
## DESCRIPTION
Rename local branch and push the new branch to remote
## OPTIONS
<old-branch>
Old branch whose has to be renamed. This is an optional parameter. If no value is supplied then the current branch will be renamed.
<new-branch>
New branch name
## EXAMPLES
$ git rename-branch old-name new-name
$ git rename-branch new-name
## AUTHOR
Written by Hozefa Jodiawalla <<hozefarules@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <old-remote-name> <new-remote-name></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> <old-remote-name></p>
<p> The name of the remote you want to rename.</p>
<p> <new-remote-name></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 <<a href="mailto:kkcocogogo@gmail.com" data-bare-link="true">kkcocogogo@gmail.com</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'>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` <old-remote-name> <new-remote-name>
## DESCRIPTION
Rename a git remote regardless of name conflict, and then list current git remotes
## OPTIONS
<old-remote-name>
The name of the remote you want to rename.
<new-remote-name>
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 <<kkcocogogo@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <old-tag-name> <new-tag-name></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Rename a tag (locally and remotely)</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p> <old-tag-name></p>
<p> The name of the tag you want to rename.</p>
<p> <new-tag-name></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 -> 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
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Jesús Espino <<a href="mailto:jespinog@gmail.com" data-bare-link="true">jespinog@gmail.com</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'>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` <old-tag-name> <new-tag-name>
## DESCRIPTION
Rename a tag (locally and remotely)
## OPTIONS
<old-tag-name>
The name of the tag you want to rename.
<new-tag-name>
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 <<jespinog@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <command></p>
<p> Interpreted as <code>git <command></code>.</p>
<p> !<command></p>
<p> Interpreted as <code><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)> 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
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Tj Holowaychuk <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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
<command>
Interpreted as `git <command>`.
!<command>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<filename>] 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> <filename></p>
<p> The name of the file to reset.</p>
<p> <commit-hash></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 <<a href="mailto:sanusart@gmail.com" data-bare-link="true">sanusart@gmail.com</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'>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` [<filename>] commit-hash
## DESCRIPTION
Reset one file to HEAD or certain commit-hash
## OPTIONS
<filename>
The name of the file to reset.
<commit-hash>
(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 <<sanusart@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 . && git commit
</code></pre>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by spacewander <<a href="mailto:spacewanderlzx@gmail.com" data-bare-link="true">spacewanderlzx@gmail.com</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'>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 <<spacewanderlzx@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <code>git-remote</code></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` <remote> [<commits>...|<path>...]
`git rscp` <remote> <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><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> <remote></p>
<pre><code>The git remote where you want to copy your files.
</code></pre>
<p> <commits>...</p>
<pre><code>Any commit, commit range or tree. Uses `git-diff`(1)
</code></pre>
<p> <path>...</p>
<pre><code>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).
</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 <<a href="mailto:lim@chernjie.com" data-bare-link="true">lim@chernjie.com</a>></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p><<a href="https://github.com/chernjie/git-extras/issues" data-bare-link="true">https://github.com/chernjie/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'>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
<remote>
The git remote where you want to copy your files.
<commits>...
Any commit, commit range or tree. Uses `git-diff`(1)
<path>...
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 <<lim@chernjie.com>>
## REPORTING BUGS
<<https://github.com/chernjie/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <flags>
-f <flags></p>
<p> will use the given regex flags in the sed command (for example "g"
replaces multiple times on the same line).</p>
<p> <search></p>
<p> the pattern passed to grep and to the first part of the sed expression.</p>
<p> <replacement></p>
<p> the replacement passed to sed, the second part of the sed expression.</p>
<p> -- <pathspec></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é <<a href="mailto:anarcat@debian.org" data-bare-link="true">anarcat@debian.org</a>> 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><<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'>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.
<flags>
-f <flags>
will use the given regex flags in the sed command (for example "g"
replaces multiple times on the same line).
<search>
the pattern passed to grep and to the first part of the sed expression.
<replacement>
the replacement passed to sed, the second part of the sed expression.
-- <pathspec>
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é <<anarcat@debian.org>> 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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> [<directory>]</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> <directory></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 <<a href="mailto:agorf@agorf.gr" data-bare-link="true">agorf@agorf.gr</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'>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` [<directory>]
## DESCRIPTION
Set up a git repository if one doesn't exist, add all files and make an initial commit.
## OPTIONS
<directory>
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 <<agorf@agorf.gr>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:paulschreiber@gmail.com" data-bare-link="true">paulschreiber@gmail.com</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'>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 <<paulschreiber@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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="mailto:github@jigsoft.co.za" data-bare-link="true">github@jigsoft.co.za</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'>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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:paulschreiber@gmail.com" data-bare-link="true">paulschreiber@gmail.com</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'>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 <<paulschreiber@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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'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> [<--squash-msg>] <source-branch|commit ref> [<commit-message>]</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> <source-branch></p>
<p> Branch to squash on the current branch.</p>
<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 <var>sha</var>..HEAD will be squashed.</p>
<p> <--squash-msg></p>
<p> Commit the squash result with the concatenated squashed committed messages.
This option can not be used together with <commit-message>.</p>
<p> <commit-message></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 <<a href="mailto:jespinog@gmail.com" data-bare-link="true">jespinog@gmail.com</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'>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` [<--squash-msg>] <source-branch|commit ref> [<commit-message>]
## 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
<source-branch>
Branch to squash on the current branch.
<commit reference>
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.
<--squash-msg>
Commit the squash result with the concatenated squashed committed messages.
This option can not be used together with <commit-message>.
<commit-message>
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 <<jespinog@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 [<options>] <id> [<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 <<a href="mailto:damien@tardypad.me" data-bare-link="true">damien@tardypad.me</a>></p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p><<a href="http://github.com/tj/git-extras/issues" data-bare-link="true">http://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'>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 <<damien@tardypad.me>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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><author> <since> <until></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) <spacewander>
</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) <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>
</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) <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>
</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) <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>
</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><<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'>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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] [<committish>]</p>
<p><code>git-summary</code> --line [<path>]</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><committish></p>
<p>Summarize only the range of commits included in the <committish>.</p>
<p><path></p>
<p>Summarize only the range of files included in the <path>.</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 <path>.</p>
<p>This option can not be used together with <code>--dedup-by-email</code> or <code>--no-merges</code>.</p>
<p>--output-style <style></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 <<a href="mailto:tj@vision-media.ca" data-bare-link="true">tj@vision-media.ca</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'>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] [<committish>]
`git-summary` --line [<path>]
## DESCRIPTION
Shows a summary of the repository or a path within it.
## OPTIONS
<committish>
Summarize only the range of commits included in the <committish>.
<path>
Summarize only the range of files included in the <path>.
--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 <path>.
This option can not be used together with `--dedup-by-email` or `--no-merges`.
--output-style <style>
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 <<tj@vision-media.ca>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] [ <remote> <branch> ]</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p> Sync local branch with <remote>/<branch>.</p>
<p> When <remote> and <branch> 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 <<a href="mailto:kumon0587@gmail.com" data-bare-link="true">kumon0587@gmail.com</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 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] [ <remote> <branch> ]
## DESCRIPTION
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).
## 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 <<kumon0587@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <filename></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> <filename></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 <<a href="mailto:alexmchale@gmail.com" data-bare-link="true">alexmchale@gmail.com</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'>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` <filename>
## DESCRIPTION
Call `touch` on the given file and add it to the current index. Used one-step creating new files.
## OPTIONS
<filename>
File to be touched.
## EXAMPLES
$ git touch Makefile
## AUTHOR
Written by Alex McHale <<alexmchale@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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] [<commitcount>]</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> <commitcount></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 <<a href="mailto:me@kennethreitz.com" data-bare-link="true">me@kennethreitz.com</a>> and Nick Lombard <<a href="mailto:github@jigsoft.co.za" data-bare-link="true">github@jigsoft.co.za</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'>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] [<commitcount>]
## 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.
<commitcount>
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 <<me@kennethreitz.com>> and Nick Lombard <<github@jigsoft.co.za>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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> <filename></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>Unlock local files from version control.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<p><filename></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 <<a href="mailto:julionc@gmail.com" data-bare-link="true">julionc@gmail.com</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'>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` <filename>
## DESCRIPTION
Unlock local files from version control.
## OPTIONS
<filename>
The name of the filename.
## EXAMPLES
$ git unlock config/database.yml
## AUTHOR
Written by Julio Napuri <<julionc@gmail.com>>
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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 <<a href="mailto:vt@altlinux.org" data-bare-link="true">vt@altlinux.org</a>>, inspired by Stackexchange comments. Updated by Bill Wood <<a href="mailto:wpwoodjr@gmail.com" data-bare-link="true">wpwoodjr@gmail.com</a>> to add <code>--newer</code> flag and ignore files in the working tree or index.</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'>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 <<vt@altlinux.org>>, inspired by Stackexchange comments. Updated by Bill Wood <<wpwoodjr@gmail.com>> to add `--newer` flag and ignore files in the working tree or index.
## REPORTING BUGS
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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
<<https://github.com/tj/git-extras/issues>>
## SEE ALSO
<<https://github.com/tj/git-extras>>
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