{"thread":{"id":"3751","subject":"Git terminology","startedAt":"2006-03-29T10:21:13Z","lastAt":"2006-03-29T16:11:12Z","messageCount":4,"participants":["Sébastien Pierre","J. Bruce Fields","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"18124","messageId":"20060329052113.6a773480.sebastien@xprima.com","threadId":"3751","inReplyTo":null,"subject":"Git terminology","fromName":"Sébastien Pierre","fromEmail":"sebastien@xprima.com","sentAt":"2006-03-29T10:21:13Z","receivedAt":"2006-03-29T10:21:13Z","isPatch":false,"sender":{"key":"sebastien@xprima.com","avatar":null},"body":"Hi all,\n\nIn the process of learning git, and browsing the docs, I realized that many particular terms are used, but I had difficulties finding their definitions. \n\nAmong those I found a bit arcane, there are (in no particular order) \"refspec\", \"rebase\", \"rewound\", \"pickaxe\", \"refnames\", \"objectnames\" ,\"refnames\", \"fast-forward update\".\n\nAlso, doing a \"grep -rohE '<[a-z\\-]+>' * | sort | uniq\" in git source tree gave me the list of \"parameter types\" for git commands, where some would benefit from a formal definition : <base>, <blob>, <branch>, <branchname>, <comitish>, <tree>, <tree-ish>, <head>, <headsha>, <refspec>, and so on. Of course, some of these terms are already explained in the man pages, but it would be nice to have a \"git terminlogy reference\".\n\nIf some of you are willing to detail/explain/define those terms (and some others not mentioned here), I would be glad to collect the definitions and make a \"git terminology\" document.\n\n -- Sébastien\n"},{"id":"18125","messageId":"20060329153128.GB8280@fieldses.org","threadId":"3751","inReplyTo":"20060329052113.6a773480.sebastien@xprima.com","subject":"Re: Git terminology","fromName":"J. Bruce Fields","fromEmail":"bfields@fieldses.org","sentAt":"2006-03-29T15:31:28Z","receivedAt":"2006-03-29T15:31:28Z","isPatch":false,"sender":{"key":"bfields@citi.umich.edu","avatar":null},"body":"On Wed, Mar 29, 2006 at 05:21:13AM -0500, Sébastien Pierre wrote:\n> If some of you are willing to detail/explain/define those terms (and\n> some others not mentioned here), I would be glad to collect the\n> definitions and make a \"git terminology\" document.\n\nSee Documentation/glossary.txt.  It's missing some of the terms your\nlooking for, but I'm sure patches would be accepted.\n\n--b.\n"},{"id":"18126","messageId":"7vodzp9r8r.fsf@assigned-by-dhcp.cox.net","threadId":"3751","inReplyTo":"20060329052113.6a773480.sebastien@xprima.com","subject":"Re: Git terminology","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-03-29T15:59:16Z","receivedAt":"2006-03-29T15:59:16Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Sébastien Pierre <sebastien@xprima.com> writes:\n\n> In the process of learning git, and browsing the docs, I\n> realized that many particular terms are used, but I had\n> difficulties finding their definitions.\n\nI had difficulties reading your message.  Please fold your lines.\n\n> Among those I found a bit arcane, there are (in no particular\n> order) \"refspec\", \"rebase\", \"rewound\", \"pickaxe\", \"refnames\",\n> \"objectnames\" ,\"refnames\", \"fast-forward update\".\n\nI see some are missing from our glossary but some others are\nfound there.\n\nrefspec is used by fetch and push to describe the mapping\nbetween remote ref and local ref.  E.g.  \"git fetch $URL\nrefs/heads/master:refs/heads/origin\" means \"grab the master\nbranch head from there and store it as my origin branch head\".\n\"git push $URL refs/heads/master:refs/heads/to-upstream\" for\n\"publish my master branch head as to-upstream master head at\n$URL\".\n\nProbably we can just say \"ref\" where we say \"refname\".\n\nProbably we can just say \"ref\" where we say \"refname\".\n\nA fast-forward is where you have a revision and you are\n\"merging\" other's change that happen to be a descendant what you\nhave.  In such a case, you do not make a new merge commit but\njust update to his revision.  That is:\n\n          o---o---o---o his               o---o---o---o his\n         /                      ->       /             \\\n    o---o---o---o yours             o---o---o---o-------* yours\n\nupdating to his needs a merge like above, but in this case:\n\n          o---o---o---o his               o---o---o---o his = yours\n         /                      ->       /\n    o---o yours                     o---o\n\nyou just update to his.\n\nA related concept is \"being already up-to-date\".  In the latter\npicture, if he attempts to \"merge\" your changes and notices he\nis simply ahead of you (i.e. his revision is a descendant of\nyours), nothing happens.\n\n> If some of you are willing to detail/explain/define those\n> terms (and some others not mentioned here), I would be glad to\n> collect the definitions and make a \"git terminology\" document.\n\nThanks, and what J Bruce Fields already said.\n"},{"id":"18127","messageId":"20060329111112.55bb8d44.sebastien@xprima.com","threadId":"3751","inReplyTo":"7vodzp9r8r.fsf@assigned-by-dhcp.cox.net","subject":"Re: Git terminology","fromName":"Sébastien Pierre","fromEmail":"sebastien@xprima.com","sentAt":"2006-03-29T16:11:12Z","receivedAt":"2006-03-29T16:11:12Z","isPatch":false,"sender":{"key":"sebastien@xprima.com","avatar":null},"body":"On Wed, 29 Mar 2006 07:59:16 -0800\nJunio C Hamano <junkio@cox.net> wrote:\n \n> Probably we can just say \"ref\" where we say \"refname\".\n> \n> A fast-forward is where you have a revision and you are\n> \"merging\" other's change that happen to be a descendant what you\n> have.  In such a case, you do not make a new merge commit but\n> just update to his revision.  That is:\n> \n>           o---o---o---o his               o---o---o---o his\n>          /                      ->       /             \\\n>     o---o---o---o yours             o---o---o---o-------* yours\n> \n> updating to his needs a merge like above, but in this case:\n> \n>           o---o---o---o his               o---o---o---o his = yours\n>          /                      ->       /\n>     o---o yours                     o---o\n> \n> you just update to his.\n\nAh, ok. The diagrams are really helpful to get what \"fast forward\" is.\n\nThanks !\n\n -- Sébastien\n"}]}