Unable to show a Git tree in terminal
GitTerminalTreeConsoleRevision HistoryGit Problem Overview
Killswitchcollective.com's old article, 30 June 2009, has the following inputs and outputs
git co master
git merge [your_branch]
git push
upstream A-B-C-D-E A-B-C-D-E-F-G
\ ----> \
your branch C-D-E G
I am interested how you get the tree like-view of commits in your terminal without using Gitk or Gitx in OS/X.
How can you get the tree-like view of commits in terminal?
Git Solutions
Solution 1 - Git
How can you get the tree-like view of commits in terminal?
git log --graph --oneline --all
is a good start.
You may get some strange letters. They are ASCII codes for colors and structure. To solve this problem add the following to your .bashrc
:
export LESS="-R"
such that you do not need use Tig's ASCII filter by
git log --graph --pretty=oneline --abbrev-commit | tig // Masi needed this
The article text-based graph from Git-ready contains other options:
git log --graph --pretty=oneline --abbrev-commit
Regarding the article you mention, I would go with Pod's answer: ad-hoc hand-made output.
Jakub Narębski mentions in the comments tig, a ncurses-based text-mode interface for git. See their releases.
It added a --graph
option back in 2007.
Solution 2 - Git
A solution is to create an Alias in your .gitconfig
and call it easily:
[alias]
tree = log --graph --decorate --pretty=oneline --abbrev-commit
And when you call it next time, you'll use:
git tree
To put it in your ~/.gitconfig without having to edit it, you can do:
git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"
(If you don't use the --global it will put it in the .git/config of your current repo.)
Solution 3 - Git
git log --oneline --decorate --all --graph
A visual tree with branch names included.
Use this to add it as an alias
git config --global alias.tree "log --oneline --decorate --all --graph"
You call it with
git tree
![Git Tree][1] [1]: http://i.stack.imgur.com/FPUQ4.jpg
Solution 4 - Git
tig
If you want a interactive tree, you can use tig
. It can be installed by brew
on OSX and apt-get
in Linux.
brew install tig
tig
This is what you get:
Solution 5 - Git
I would suggest anyone to write down the full command
git log --all --decorate --oneline --graph
rather than create an alias.
It's good to get the commands into your head, so you know it by heart i.e. do not depend on aliases when you change machines.
Solution 6 - Git
Keeping your commands short will make them easier to remember:
git log --graph --oneline