{"thread":{"id":"28951","subject":"Git Gems","startedAt":"2011-11-16T23:18:15Z","lastAt":"2011-11-18T04:38:45Z","messageCount":3,"participants":["Hilco Wijbenga","Neal Kreitzinger","Ramkumar Ramachandra"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"179601","messageId":"CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA+EnGKz8tuFrCpkxg@mail.gmail.com","threadId":"28951","inReplyTo":null,"subject":"Git Gems","fromName":"Hilco Wijbenga","fromEmail":"hilco.wijbenga@gmail.com","sentAt":"2011-11-16T23:18:15Z","receivedAt":"2011-11-16T23:18:15Z","isPatch":false,"sender":{"key":"hilco.wijbenga@gmail.com","avatar":null},"body":"Hi all,\n\nJust today, I found out about 'git add -p'. I had never even thought\nof this but, now that I know, I can't imagine life without it. :-)\nActually, it's a bit scary to note that the Git devs apparently aren't\njust telepathic but they can read my thoughts even before I think\nthem. ;-)\n\nAll kidding aside, I'm starting to wonder which other Git Gems I don't\nknow about. For me, the list of Git Gems would include Git's Bash\ncommand line prompt, 'git add -p', 'git rebase', 'git commit --amend',\nand 'git-new-workdir'. I realize there are plenty of books and such\nout there but I'm really just looking for a list of Git commands\nand/or options that are worth looking into. Finding out more about a\nparticular command/script/option is easy, realizing that a particular\none is the one you need is not. Especially, if you don't even know you\nhave a problem.\n\nAs an example, 'git rebase' didn't really seem useful until I\nunderstood (well, more or less) what it did. Until then, I just\nnaively assumed that merge commits and non-linear history were\nsomething you simply had to live with. I'm guessing that, like me, a\nlot of people come to Git with quite a few assumptions and\npreconceived notions due to their exposure to other SCM tools. :-(\n\nCheers,\nHilco\n"},{"id":"179654","messageId":"4EC5ABB7.5010907@gmail.com","threadId":"28951","inReplyTo":"CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA+EnGKz8tuFrCpkxg@mail.gmail.com","subject":"Re: Git Gems","fromName":"Neal Kreitzinger","fromEmail":"nkreitzinger@gmail.com","sentAt":"2011-11-18T00:49:59Z","receivedAt":"2011-11-18T00:49:59Z","isPatch":false,"sender":{"key":"nkreitzinger@gmail.com","avatar":null},"body":"On 11/16/2011 5:18 PM, Hilco Wijbenga wrote:\n> Hi all,\n>\n> Just today, I found out about 'git add -p'. I had never even thought\n> of this but, now that I know, I can't imagine life without it. :-)\n> Actually, it's a bit scary to note that the Git devs apparently aren't\n> just telepathic but they can read my thoughts even before I think\n> them. ;-)\n>\n> All kidding aside, I'm starting to wonder which other Git Gems I don't\n> know about. For me, the list of Git Gems would include Git's Bash\n> command line prompt, 'git add -p', 'git rebase', 'git commit --amend',\n> and 'git-new-workdir'. I realize there are plenty of books and such\n> out there but I'm really just looking for a list of Git commands\n> and/or options that are worth looking into. Finding out more about a\n> particular command/script/option is easy, realizing that a particular\n> one is the one you need is not. Especially, if you don't even know you\n> have a problem.\n>\n> As an example, 'git rebase' didn't really seem useful until I\n> understood (well, more or less) what it did. Until then, I just\n> naively assumed that merge commits and non-linear history were\n> something you simply had to live with. I'm guessing that, like me, a\n> lot of people come to Git with quite a few assumptions and\n> preconceived notions due to their exposure to other SCM tools. :-(\n>\nThis book:  http://progit.org/ will show you many gems if you take the \ntime to peruse it.\n\nv/r,\nneal\n"},{"id":"179669","messageId":"CALkWK0n6msuDSLP-rjAw93E_fsi3pdPk8S2W+fjfQr2rFMrhdQ@mail.gmail.com","threadId":"28951","inReplyTo":"CAE1pOi1gyshz_502NQvLNAByfwiYXW2fzA+EnGKz8tuFrCpkxg@mail.gmail.com","subject":"Re: Git Gems","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2011-11-18T04:38:45Z","receivedAt":"2011-11-18T04:38:45Z","isPatch":false,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi Hilco,\n\nHilco Wijbenga wrote:\n> [CC: Git Users <git@vger.kernel.org>]\n\nFor the record, this is the official Git list: both \"developers\" and\n\"users\" hang out here.\n\n> [...]\n> As an example, 'git rebase' didn't really seem useful until I\n> understood (well, more or less) what it did. Until then, I just\n> naively assumed that merge commits and non-linear history were\n> something you simply had to live with. I'm guessing that, like me, a\n> lot of people come to Git with quite a few assumptions and\n> preconceived notions due to their exposure to other SCM tools. :-(\n\nI'm not sure how a listing is going to help; nevertheless, here are a\nfew of the lesser-known features of the top of my head (in no\nparticular order): rerere, attributes, replace refs, filter-branch,\nblame's -C and -M switches, log's -S switch, custom diff drivers,\nbundle, submodule, stash, notes, and reflog.\n[You can find more by digging through the sources]\n\nWhich brings us to an interesting aside: unlike many other SCMs which\nhave a definite and finite set of features, git is really just a\ntoolkit that grows everyday- various people use various subsets and\nwrite up their own custom scripts to help them automate tasks.  The\n\"git rev-list/ git rev-parse/ git cat-file\" is an awesome trio to\nstart writing shell scripts with :)\n\nCheers.\n\n-- Ram\n"}]}