# Git Gems

3 messages from 2011-11-16 to 2011-11-18. Participants: Hilco Wijbenga, Neal Kreitzinger, Ramkumar Ramachandra.
Thread: https://gitlist.dev/t/28951

## Hilco Wijbenga, 2011-11-16 23:18

Subject: Git Gems
Message-ID: <CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA+EnGKz8tuFrCpkxg@mail.gmail.com>
URL: https://gitlist.dev/e/CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA%2BEnGKz8tuFrCpkxg%40mail.gmail.com

```
Hi all,

Just today, I found out about 'git add -p'. I had never even thought
of this but, now that I know, I can't imagine life without it. :-)
Actually, it's a bit scary to note that the Git devs apparently aren't
just telepathic but they can read my thoughts even before I think
them. ;-)

All kidding aside, I'm starting to wonder which other Git Gems I don't
know about. For me, the list of Git Gems would include Git's Bash
command line prompt, 'git add -p', 'git rebase', 'git commit --amend',
and 'git-new-workdir'. I realize there are plenty of books and such
out there but I'm really just looking for a list of Git commands
and/or options that are worth looking into. Finding out more about a
particular command/script/option is easy, realizing that a particular
one is the one you need is not. Especially, if you don't even know you
have a problem.

As an example, 'git rebase' didn't really seem useful until I
understood (well, more or less) what it did. Until then, I just
naively assumed that merge commits and non-linear history were
something you simply had to live with. I'm guessing that, like me, a
lot of people come to Git with quite a few assumptions and
preconceived notions due to their exposure to other SCM tools. :-(

Cheers,
Hilco

```

## Neal Kreitzinger, 2011-11-18 00:49

Subject: Re: Git Gems
Message-ID: <4EC5ABB7.5010907@gmail.com>
URL: https://gitlist.dev/e/4EC5ABB7.5010907%40gmail.com
In-Reply-To: <CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA+EnGKz8tuFrCpkxg@mail.gmail.com>

```
On 11/16/2011 5:18 PM, Hilco Wijbenga wrote:
> Hi all,
>
> Just today, I found out about 'git add -p'. I had never even thought
> of this but, now that I know, I can't imagine life without it. :-)
> Actually, it's a bit scary to note that the Git devs apparently aren't
> just telepathic but they can read my thoughts even before I think
> them. ;-)
>
> All kidding aside, I'm starting to wonder which other Git Gems I don't
> know about. For me, the list of Git Gems would include Git's Bash
> command line prompt, 'git add -p', 'git rebase', 'git commit --amend',
> and 'git-new-workdir'. I realize there are plenty of books and such
> out there but I'm really just looking for a list of Git commands
> and/or options that are worth looking into. Finding out more about a
> particular command/script/option is easy, realizing that a particular
> one is the one you need is not. Especially, if you don't even know you
> have a problem.
>
> As an example, 'git rebase' didn't really seem useful until I
> understood (well, more or less) what it did. Until then, I just
> naively assumed that merge commits and non-linear history were
> something you simply had to live with. I'm guessing that, like me, a
> lot of people come to Git with quite a few assumptions and
> preconceived notions due to their exposure to other SCM tools. :-(
>
This book:  http://progit.org/ will show you many gems if you take the 
time to peruse it.

v/r,
neal

```

## Ramkumar Ramachandra, 2011-11-18 04:38

Subject: Re: Git Gems
Message-ID: <CALkWK0n6msuDSLP-rjAw93E_fsi3pdPk8S2W+fjfQr2rFMrhdQ@mail.gmail.com>
URL: https://gitlist.dev/e/CALkWK0n6msuDSLP-rjAw93E_fsi3pdPk8S2W%2BfjfQr2rFMrhdQ%40mail.gmail.com
In-Reply-To: <CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA+EnGKz8tuFrCpkxg@mail.gmail.com>

```
Hi Hilco,

Hilco Wijbenga wrote:
> [CC: Git Users <git@vger.kernel.org>]

For the record, this is the official Git list: both "developers" and
"users" hang out here.

> [...]
> As an example, 'git rebase' didn't really seem useful until I
> understood (well, more or less) what it did. Until then, I just
> naively assumed that merge commits and non-linear history were
> something you simply had to live with. I'm guessing that, like me, a
> lot of people come to Git with quite a few assumptions and
> preconceived notions due to their exposure to other SCM tools. :-(

I'm not sure how a listing is going to help; nevertheless, here are a
few of the lesser-known features of the top of my head (in no
particular order): rerere, attributes, replace refs, filter-branch,
blame's -C and -M switches, log's -S switch, custom diff drivers,
bundle, submodule, stash, notes, and reflog.
[You can find more by digging through the sources]

Which brings us to an interesting aside: unlike many other SCMs which
have a definite and finite set of features, git is really just a
toolkit that grows everyday- various people use various subsets and
write up their own custom scripts to help them automate tasks.  The
"git rev-list/ git rev-parse/ git cat-file" is an awesome trio to
start writing shell scripts with :)

Cheers.

-- Ram

```
