Changes for page Getting Started with Git

Last modified by Bastian Triller on 2013/05/21 17:24

From version 94.1
edited by Ray Kiddy
on 2011/08/07 02:05
Change comment: add info on testing pull-requests
To version 95.1
edited by Kieran Kelleher
on 2011/08/10 22:12
Change comment: This paragraph is actually fairly inaccurate and the concepts are not accurate. Sorry Ray :-)

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.kiddyr
1 +XWiki.kieran
Content
... ... @@ -21,6 +21,7 @@
21 21  * Learn the basics.
22 22  ** [[Everyday GIT With 20 Commands Or So>>http://www.kernel.org/pub/software/scm/git/docs/everyday.html]]
23 23  ** [[Free Online Pro Git book>>http://progit.org/book/]]
24 +*** There is even a free epub version for your iPad/iPhone [[https://github.s3.amazonaws.com/media/progit.epub]]
24 24  
25 25  * Get familiar with the reference materials available online
26 26  ** Official [[Git Documentation>>http://git-scm.com/documentation]] Site
... ... @@ -113,17 +113,9 @@
113 113  
114 114  What if one wants to generate a pull request the origin and also push to a fork? You would do this if you were not a Wonder committer but wanted to share code. You organize your changes in your local repository/branch and, from the clean repository or branch, generate the pull request and, separately, push the changes to your fork.
115 115  
116 -=== Versions? or Diffs? ===
117 -
118 -One satori that I had is this. Subversion is all about versions. CVS was all about versions. We have been working with these a long time and the ideas are sticky. Git is //not// about versions. It is about diffs. Diffs are the main thing. If you think about it, this makes sense. You have thoughts and make changes and those diffs are the product of your work. If you get those diffs into something, that is good, but the work product was the diffs.
119 -
120 -All this rebasing and such may seem odd. But the main thing is the diffs. I have edits from a two-week old repository. What do I do? I move the diffs so that they are diffs from the latest code. That is a rebase. When we make edits, we are used to being over-concerned about merge conflicts. But they do not happen all that often and are actually easy to deal with when they do, if the tools are oriented to making them easy to deal with. If we are worrying about the versions and not the diffs, we are paying attention to the paper we write on and not to the words we are putting down.
121 -
122 -Internally, git keeps track of text fragments and not files. Why is this? Because the versions are not the point. The diffs are. I can imagine how Linus Torvalds had this idea. He was looking at all the versions of all the files in Linux and all the e-mails of all the diffs. These are two separate worlds. It is conceptually painful to look at every diff, find its source and see how it maps to what now exists. At some point, he must have realized that all he needed was the e-mails. If he had no files any longer, but all the e-mails, he could always reconstruct the files. He would not have to make the conceptual switch from the diffs to the versions and back. Collectively, those e-mails with the diffs defined everything that needed to be said. Quod erat demonstrandum.
123 -
124 124  === Testing a Pull-Request ===
125 125  
126 -It may not be obvious how to do this. If one is a committer, there is a button one can push to automatically accept a pull-request. But is this really a safe thing to do? But how can you get the diffs being suggested? It seems more complicated than it needs to be to merge the branch the pull-request was made from. One can actually use a URL that specifies just the diff. If the pull-request is at https:~/~/github.com/projectwonder/wonder/pull/43, one can do:
119 +It may not be obvious how to do this. If one is a committer, there is a button one can push to automatically accept a pull-request. But is this really a safe thing to do? But how can you get the diffs being suggested? It seems more complicated than it needs to be to merge the branch the pull-request was made from. One can actually use a URL that specifies just the diff. If the pull-request is at [[https://github.com/projectwonder/wonder/pull/43]], one can do:
127 127  
128 128  {{code}}
129 129  curl 'https://github.com/projectwonder/wonder/pull/43.patch' | git am