A curated list of add-ons that extend/enhance the git CLI.
$ git bla
Something awesome happens!
“You don’t have to know everything. You simply need to know where to find it when necessary.” (John Brunner)
Inspired by the awesome list thing.
Note: Certain commands may not function immediately after installation. You may need to run a post-install script or manually configure aliases for them to work correctly.
3.8.11
- fix node 0.12/iojs problems
- add node 0.12 and iojs to travis
- update dependencies (liftoff, v8flags)
- documentation tweaks
commits-since
$ git commits-since yesterday
... changes since yesterday
TJ Holowaychuk - Fixed readme
count
$ git count
total 855
create-branch
$ git create-branch development
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/tj/git-extras.git
* [new branch] HEAD -> development
Branch development set up to track remote branch development from origin.
Switched to a new branch 'development'
delete-branch
$ git delete-branch integration
Deleted branch integration (was bfb8522).
Deleted remote-tracking branch remote/integration (was bfb8522).
To git@github.com:remote/gulp.git
- [deleted] integration
delete-submodule
$ git delete-submodule lib/foo
delete-tag
$ git delete-tag v0.1.1
Deleted tag 'v0.1.1' (was 9fde751)
To https://github.com/tj/git-extras.git
- [deleted] v0.1.1
delete-merged-branches
$ git delete-merged-branches
Deleted feature/themes (was c029ab3).
Deleted feature/live_preview (was a81b002).
Deleted feature/dashboard (was 923befa).
fresh-branch
$ git fresh-branch docs
Removing .DS_Store
Removing .editorconfig
Removing .gitignore
guilt
$ git guilt `git log --until="3 weeks ago" --format="%H" -n 1` HEAD
Paul Schreiber +++++++++++++++++++++++++++++++++++++++++++++(349)
spacewander +++++++++++++++++++++++++++++++++++++++++++++(113)
Mark Eissler ++++++++++++++++++++++++++
merge-into
$ git merge-into master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Updating 9fde751..e62edfa
Fast-forward
234 | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 234
Switched to branch 'development'
graft
$ git graft development
Your branch is up-to-date with 'origin/master'.
Merge made by the 'recursive' strategy.
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Deleted branch development (was 64b3563).
alias
$ git alias last "cat-file commit HEAD"
$ git alias
last = cat-file commit HEAD
ignore
$ git ignore build "*.o" "*.log"
... added 'build'
... added '*.o'
... added '*.log'
info
$ 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
## Most Recent Commit:
commit e3952df2c172c6f3eb533d8d0b1a6c77250769a7
Author: Sample Author <sampleAuthor@gmail.com>
Added git-info command.
Type 'git log' for more commits, or 'git show <commit id>' for full commit details.
## Configuration (.git/config):
color.diff=auto
color.status=auto
fork
$ git fork LearnBoost/expect.js
release
$ git release 0.1.0
... releasing 0.1.0
On branch development
Your branch is up-to-date with 'origin/development'.
nothing to commit, working directory clean
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/tj/git-extras.git
9fde751..e62edfa master -> master
Counting objects: 1, done.
Writing objects: 100% (1/1), 166 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://github.com/tj/git-extras.git
* [new tag] 0.1.0 -> 0.1.0
... complete
contrib
$ 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
repl
$ git repl
git> ls-files
History.md
Makefile
undo
$ git undo
Unstaged changes after reset:
M package.json
M readme.md
gh-pages
$ git gh-pages
scp
$ git scp staging HEAD
setup
$ git setup
Initialized empty Git repository in /GitHub/test/gulp/.git/
[master (root-commit) 9469797] Initial commit
69 files changed, 3900 insertions(+)
create mode 100644 .editorconfig
create mode 100644 .gitignore
create mode 100644 .jscsrc
touch
$ git touch index.js
obliterate
$ git obliterate secrets.json
Rewrite 2357a4334051a6d1733037406ab7538255030d0b (1/981)rm 'secrets.json'
Rewrite b5f62b2746c23150917d346bd0c50c467f01eb03 (2/981)rm 'secrets.json'
Rewrite 3cd94f3395c2701848f6ff626a0a4f883d8a8433 (3/981)rm 'secrets.json'
feature|refactor|bug|chore
$ git feature dependencies
$ git feature finish dependencies
Already up-to-date.
Deleted branch feature/dependencies (was f0fc4c7).
Deleted remote-tracking branch origin/feature/dependencies (was f0fc4c7).
To git@github.com:stevemao/gulp.git
- [deleted] feature/dependencies
local-commits
$ git local-commits
commit 5f00a3c1bb71876ebdca059fac96b7185dea5467
Merge: 7ad3ef9 841af4e
Author: Blaine Bublitz <blaine@iceddev.com>
Date: Thu Aug 20 11:35:15 2015 -0700
Merge pull request #1211 from JimiHFord/patch-1
Update guidelines.md
commit 841af4ee7aaf55b505354d0e86d7fb876d745e26
Author: Jimi Ford <JimiHFord@users.noreply.github.com>
Date: Thu Aug 20 11:55:38 2015 -0400
Update guidelines.md
fixed typo
archive-file
$ git archive-file
Building archive on branch "master"
Saved to "gulp.v3.9.0-36-g47cb6b0.zip" ( 60K)
missing
$ git missing master
< d14b8f0 only on current checked out branch
> 97ef387 only on master
lock
$ git lock config/database.yml
locked
$ git locked
config/database.yml
unlock
$ git unlock config/database.yml
reset-file
$ git reset-file README.md HEAD^
Reset 'README.md' to HEAD^
pr
$ git pr 226
From https://github.com/tj/git-extras
* [new ref] refs/pulls/226/head -> pr/226
Switched to branch 'pr/226'
root
$ git root
/GitHub/git
delta
$ git delta
README.md
merge-repo
$ git merge-repo git@github.com:tj/git-extras.git master .
git fetch git@github.com:tj/git-extras.git master
warning: no common commits
remote: Counting objects: 3507, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 3507 (delta 1), reused 0 (delta 0), pack-reused 3502
Receiving objects: 100% (3507/3507), 821.12 KiB | 286.00 KiB/s, done.
Resolving deltas: 100% (1986/1986), done.
From github.com:tj/git-extras
* branch master -> FETCH_HEAD
Added dir 'git-merge-repo.E95m0gj'
No local changes to save
psykorebase
$ git psykorebase master
$ git psykorebase --continue
$ git psykorebase master feature
[hub](https://github.com/github/hub)
clone
$ git clone schacon/ticgit
> git clone git://github.com/schacon/ticgit.git
$ git clone -p schacon/ticgit
> git clone git@github.com:schacon/ticgit.git
$ git clone resque
> git clone git@github.com/YOUR_USER/resque.git
remote add
$ git remote add rtomayko
> git remote add rtomayko git://github.com/rtomayko/CURRENT_REPO.git
$ git remote add -p rtomayko
> git remote add rtomayko git@github.com:rtomayko/CURRENT_REPO.git
$ git remote add origin
> git remote add origin git://github.com/YOUR_USER/CURRENT_REPO.git
fetch
$ git fetch mislav
> git remote add mislav git://github.com/mislav/REPO.git
> git fetch mislav
$ git fetch mislav,xoebus
> git remote add mislav ...
> git remote add xoebus ...
> git fetch --multiple mislav xoebus
cherry-pick
$ git cherry-pick https://github.com/mislav/REPO/commit/SHA
> git remote add -f --no-tags mislav git://github.com/mislav/REPO.git
> git cherry-pick SHA
$ git cherry-pick mislav@SHA
> git remote add -f --no-tags mislav git://github.com/mislav/CURRENT_REPO.git
> git cherry-pick SHA
$ git cherry-pick mislav@SHA
> git fetch mislav
> git cherry-pick SHA
am
$ git am https://github.com/github/hub/pull/55
[ downloads patch via API ]
> git am /tmp/55.patch
$ git am --ignore-whitespace https://github.com/davidbalbert/hub/commit/fdb9921
[ downloads patch via API ]
> git am --ignore-whitespace /tmp/fdb9921.patch
apply
$ git apply https://gist.github.com/8da7fb575debd88c54cf
[ downloads patch via API ]
> git apply /tmp/gist-8da7fb575debd88c54cf.txt
fork
$ git fork
[ repo forked on GitHub ]
> git remote add -f YOUR_USER git@github.com:YOUR_USER/CURRENT_REPO.git
pull-request
$ git pull-request
[ opens text editor to edit title & body for the request ]
[ opened pull request on GitHub for "YOUR_USER:feature" ]
checkout
$ git checkout https://github.com/github/hub/pull/73
> git remote add -f --no-tags -t feature mislav git://github.com/mislav/hub.git
> git checkout --track -B mislav-feature mislav/feature
merge
$ git merge https://github.com/github/hub/pull/73
> git fetch git://github.com/mislav/hub.git +refs/heads/feature:refs/remotes/mislav/feature
> git merge mislav/feature --no-ff -m 'Merge pull request #73 from mislav/feature...'
create
$ git create
[ repo created on GitHub ]
> git remote add origin git@github.com:YOUR_USER/CURRENT_REPO.git
init
$ git init -g
> git init
> git remote add origin git@github.com:YOUR_USER/REPO.git
push
$ git push origin,staging,qa bert_timeout
> git push origin bert_timeout
> git push staging bert_timeout
> git push qa bert_timeout
browse
$ git browse
> open https://github.com/YOUR_USER/CURRENT_REPO
compare
$ git compare refactor
> open https://github.com/CURRENT_REPO/compare/refactor
submodule
$ git submodule add wycats/bundler vendor/bundler
> git submodule add git://github.com/wycats/bundler.git vendor/bundler
ci-status
$ git ci-status
success
[git-imerge](https://github.com/mhagger/git-imerge)
imerge start
$ git imerge start --name=next --goal=merge --first-parent 4.0
Attempting automerge of 1-1...success.
Attempting automerge of 1-29...success.
Attempting automerge of 1-44...success.
Attempting automerge of 1-51...success.
imerge merge
$ git imerge merge 4.0
Attempting automerge of 1-1...success.
Attempting automerge of 1-6...success.
Attempting automerge of 1-9...success.
Attempting automerge of 1-10...success.
imerge rebase
$ git imerge rebase 4.0
The following commits on the to-be-merged branch are merge commits:
8e4931ae15971a14897cf347ac50b7d7fe125ac4
d7c772142ce663a20210db73d9ad17cc8d59e0d6
856df83c77b33029d2ddfb8eecd08efedeadc027
imerge continue
$ git add --all
$ git commit
[imerge/next e442618] imerge 'next': manual merge 10-26
$ git imerge continue
Merge has been recorded for merge 10-26.
Attempting automerge of 10-27...success.
Attempting automerge of 10-42...failure.
Attempting automerge of 10-34...failure.
Attempting automerge of 10-30...success.
Recording autofilled block MergeState('next', tip1='master', tip2='4.0', goal='merge')[18:20,34:58].
Merge is complete!
imerge finish
$ git imerge finish
Previous HEAD position was fcbe161... imerge 'next': automatic merge 19-57
Switched to branch 'next'
[next 23362e6] Merge 4.0 into master (using imerge)
Date: Wed Sep 2 10:59:56 2015 +1000
imerge diagram
$ git imerge diagram
********************
*????????.?????????|
*????????.?????????|
*????????.?????????|
*????????...-------+
*????????.*|#???????
imerge list
$ git imerge list
* next
imerge init
$ git imerge init --name=next --goal=merge --first-parent 4.0
imerge record
$ git imerge record
Merge has been recorded for merge 10-26.
Attempting automerge of 10-27...success.
Attempting automerge of 10-42...failure.
Attempting automerge of 10-34...failure.
imerge autofill
$ git imerge autofill
Attempting automerge of 1-1...success.
Attempting automerge of 1-29...success.
Attempting automerge of 1-44...success.
imerge simplify
$ git imerge simplify
Previous HEAD position was 4d19598... imerge 'next': automatic merge 20-57
Switched to branch 'next'
[next 6c308aa] Merge 4.0 into master (using imerge)
Date: Wed Sep 2 13:37:31 2015 +1000
imerge remove
$ git imerge remove
imerge reparent
$ git imerge reparent
67ebc0e6517ac791de6699453b71d2c7fd81ffcd
[git-issue](https://github.com/dspinellis/git-issue)
Initialize issue repository
$ git issue init
Initialized empty Issues repository in /home/dds/src/gi/.issues
$ git issue new -s 'New issue entered from the command line'
Added issue e6a95c9
Create a new issue (opens editor window)
$ git issue new
Added issue 7dfa5b7
List open issues
$ git issue list
7dfa5b7 An issue entered from the editor
e6a95c9 New issue entered from the command line
$ git issue comment e6a95c9
Added comment 8c0d5b3
Add tag to an issue
$ git issue tag e6a9 urgent
Added tag urgent
$ git issue tag e6a9 gui crash
Added tag gui
Added tag crash
Remove a tag
$ git issue tag -r e6a9 urgent
Removed tag urgent
Assign issue
$ git issue assign e6a9 joe@example.com
Assigned to joe@example.com
Add issue watcher
$ git issue watcher e6a9 jane@example.com
Added watcher jane@example.com
List issues tagged as gui
$ git issue list gui
e6a95c9 New issue entered from the command line
Push issues repository to a server
$ git issue git remote add origin git@github.com:dspinellis/gi-example.git
$ git issue git push -u origin master
Counting objects: 60, done.
Compressing objects: 100% (50/50), done.
Writing objects: 100% (60/60), 5.35 KiB | 0 bytes/s, done.
Total 60 (delta 8), reused 0 (delta 0)
To git@github.com:dspinellis/gi-example.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
Clone issues repository from server
$ git issue clone git@github.com:dspinellis/gi-example.git my-issues
Cloning into '.issues'...
remote: Counting objects: 60, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 60 (delta 8), reused 60 (delta 8), pack-reused 0
Receiving objects: 100% (60/60), 5.35 KiB | 0 bytes/s, done.
Resolving deltas: 100% (8/8), done.
Checking connectivity... done.
Cloned git@github.com:dspinellis/gi-example.git into my-issues
List open issues
$ git issue list
7dfa5b7 An issue entered from the editor
e6a95c9 New issue entered from the command line
Create new issue
$ git issue new -s 'Issue added on another host'
Added issue abc9adc
Push changes to server
$ git issue push
Counting objects: 7, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 767 bytes | 0 bytes/s, done.
Total 7 (delta 0), reused 0 (delta 0)
To git@github.com:dspinellis/gi-example.git
d6be890..740f9a0 master -> master
Show issue added on the other host
$ git issue show 7dfa5b7
issue 7dfa5b7f4591ecaa8323716f229b84ad40f5275b
Author: Diomidis Spinellis <dds@aueb.gr>
Date: Fri, 29 Jan 2016 01:03:24 +0200
Tags: open
An issue entered from the editor
Here is a longer description.
$ git issue show -c e6a95c9
issue e6a95c91b31ded8fc229a41cc4bd7d281ce6e0f1
Author: Diomidis Spinellis <dds@aueb.gr>
Date: Fri, 29 Jan 2016 01:03:20 +0200
Tags: open urgent gui crash
Watchers: jane@example.com
Assigned-to: joe@example.com
New issue entered from the command line
comment 8c0d5b3d77bf93b937cb11038b129f927d49e34a
Author: Diomidis Spinellis <dds@aueb.gr>
Date: Fri, 29 Jan 2016 01:03:57 +0200
First comment regarding the issue.
Pull in remote changes (on the original host)
$ git issue pull
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 0), reused 7 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), done.
From github.com:dspinellis/gi-example
d6be890..740f9a0 master -> origin/master
Updating d6be890..740f9a0
Fast-forward
issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/description | 1 +
issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/tags | 1 +
2 files changed, 2 insertions(+)
create mode 100644 issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/description
create mode 100644 issues/ab/c9adc61025a3cb73b0c67470b65cefc133a8d0/tags
List open issues
$ git issue list
7dfa5b7 An issue entered from the editor
abc9adc Issue added on another host
e6a95c9 New issue entered from the command line
Sub-command auto-completion
$ git issue [Tab]
assign clone comment git init log pull show watcher
attach close edit help list new push tag
Issue Sha auto-completion
$ git issue show [Tab]
7dfa5b7 - An issue entered from the editor
e6a95c9 - New issue entered from the command line