Changes for page Getting Started with Git

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

From version 202.1
edited by Kieran Kelleher
on 2012/01/03 10:24
Change comment: There is no comment for this version
To version 212.1
edited by Ray Kiddy
on 2012/09/13 01:19
Change comment: checking out of stash. very cool!

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.kieran
1 +XWiki.kiddyr
Content
... ... @@ -3,9 +3,6 @@
3 3  = Got Git? No? Get Git =
4 4  
5 5  * Official Download Site: [[http://git-scm.com/download]]
6 -* Direct Download Links:
7 -** MacOS X [[.dmg Binary Installers>>http://code.google.com/p/git-osx-installer/]]
8 -** Microsoft Windows [[.exe Binary Installers>>http://code.google.com/p/msysgit/]]
9 9  
10 10  {{info title="Git is included with XCode 4.x"}}
11 11  
... ... @@ -20,7 +20,7 @@
20 20  ** [[This>>http://www.eecs.harvard.edu/~~cduan/technical/git/]] is an excellent tutorial on the basic concepts behind Git
21 21  ** [[Git for Computer Scientists>>http://eagain.net/articles/git-for-computer-scientists/]] gives another good view on the underlying concepts
22 22  * Learn the basics.
23 -** [[Everyday GIT With 20 Commands Or So>>http://www.kernel.org/pub/software/scm/git/docs/everyday.html]]
20 +** [[Everyday GIT With 20 Commands Or So>>http://schacon.github.com/git/everyday.html]]
24 24  ** [[Free Online Pro Git book>>http://progit.org/book/]]
25 25  *** There is even a free epub version for your iPad/iPhone [[https://github.s3.amazonaws.com/media/progit.epub]]
26 26  
... ... @@ -32,7 +32,6 @@
32 32  
33 33  * Git Cheat Sheets
34 34  ** [[http://cheat.errtheblog.com/s/git/]]
35 -** [[http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png]]
36 36  
37 37  * [[Linus Torvalds talks about git>>http://www.youtube.com/watch?v=4XpnKHJAok8]]
38 38  Have a Good Laugh here as Linus Torvalds Evangelizes git. //NOTE: This isn't really learning, but it is way more fun and gives you insight into the motivation behind git.//
... ... @@ -109,9 +109,9 @@
109 109  
110 110  Some tips/gotchas to keep in mind when setting up gitolite
111 111  
112 -* Make sure you give the gitolite user ownership of the admin public ssh key after copying the key over!
108 +* Make sure you give the gitolite user ownership of the admin public ssh key after copying the key over
113 113  * Rename your public keyname to username.pub, where username is the name you want to use to identify yourself when configuring gitolite access control to repositories.
114 -* During setup, gitolite creates the file ,,/.ssh/authorized//keys in the gitolite user account. Ensure it has permissions of 600. If not change it!//,,
110 +* During setup, gitolite creates the file /.ssh/authorized//keys in the gitolite user account. Ensure it has permissions of 600. If not change it//
115 115  * If other system users such as apache, chiliproject or redmine need [[read access to the gitolite repositories to allow integration>>http://www.giocc.com/public-repositories-in-gitolite-with-umasks.html]], then you probably want to change the $REPO//MASK configuration value from 0077 to 0027 in the [[gitolite configuration file>>http://sitaramc.github.com/gitolite/rc.html]]//
116 116  
117 117  = Unique Git Concepts =
... ... @@ -175,3 +175,19 @@
175 175  git reset --hard
176 176  
177 177  {{/code}}
174 +
175 +=== Stash to Clean and Checkout from Stash to Work ===
176 +
177 +Say that you have several different things going on in your project at any one time. How can you seperate them to check something in? You know about the "git stash" command, which cleans up your project. But what if you want part of the dirtiness, but not all of it?
178 +
179 +Suppose you have file1.java, file2.java, file3.java, and file4.java. You have a single feature implemented in file1.java and file3.java and those edits stand on their own. If you are going to check in just file1.java and file3.java, you should test them on their own, without your other changes. First, do a "git stash". A "git status" will show you have no staged changes. Now do:
180 +
181 +{{code}}
182 +
183 +git checkout stash@{0} -- file1.java
184 +git checkout stash@{0} -- file3.java
185 +
186 +{{/code}}
187 +
188 +Now you have your two files and not the others and you can build and test them in a clear project before you check them in!
189 +One odd thing I noticed is this. The "git diff" you were doing before the stash will show your changes. Now you have to do "git diff HEAD". Not completely sure why, but there it is.