Changes for page Getting Started with Git
Last modified by Bastian Triller on 2013/05/21 17:24
From version 76.1
edited by Bastian Triller
on 2013/05/21 17:24
on 2013/05/21 17:24
Change comment:
There is no comment for this version
To version 77.1
edited by David Avendasora
on 2011/11/02 22:53
on 2011/11/02 22:53
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. btriller1 +XWiki.avendasora - Content
-
... ... @@ -3,6 +3,9 @@ 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/]] 6 6 7 7 {{info title="Git is included with XCode 4.x"}} 8 8 ... ... @@ -16,9 +16,8 @@ 16 16 ** Scott Chacon (of GitHub) Video Intro [[http://www.youtube.com/watch?v=ZDR433b0HJY]] 17 17 ** [[This>>http://www.eecs.harvard.edu/~~cduan/technical/git/]] is an excellent tutorial on the basic concepts behind Git 18 18 ** [[Git for Computer Scientists>>http://eagain.net/articles/git-for-computer-scientists/]] gives another good view on the underlying concepts 19 -** [[Git For Ages 4 And Up>>https://lca2013.linux.org.au/wiki/Tutorials/Git_For_Ages_4_And_Up]]: video tutorial ([[mp4>>http://mirror.internode.on.net/pub/linux.conf.au/2013/mp4/Git_For_Ages_4_And_Up.mp4]], [[YouTube>>http://www.youtube.com/watch?v=1ffBJ4sVUb4]]) 20 20 * Learn the basics. 21 -** [[Everyday GIT With 20 Commands Or So>>http:// schacon.github.com/git/everyday.html]]23 +** [[Everyday GIT With 20 Commands Or So>>http://www.kernel.org/pub/software/scm/git/docs/everyday.html]] 22 22 ** [[Free Online Pro Git book>>http://progit.org/book/]] 23 23 *** There is even a free epub version for your iPad/iPhone [[https://github.s3.amazonaws.com/media/progit.epub]] 24 24 ... ... @@ -30,6 +30,7 @@ 30 30 31 31 * Git Cheat Sheets 32 32 ** [[http://cheat.errtheblog.com/s/git/]] 35 +** [[http://ktown.kde.org/%7Ezrusin/git/git-cheat-sheet-medium.png]] 33 33 34 34 * [[Linus Torvalds talks about git>>http://www.youtube.com/watch?v=4XpnKHJAok8]] 35 35 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.// ... ... @@ -44,11 +44,8 @@ 44 44 45 45 OK, so you want to use Git but you are working on a team project that is hosted in a subversion repository ... and it is making you depressed :-( . Well, you can still use Git to manage your local SVN working copy and be almost happy again (Either way, you won't be 100% happy unless the repository is a git one.) 46 46 47 - Thereareacouplewaysofdoingthis.Twohem:50 +I recommend you just use the [[git+svn protocol>>http://www.lostechies.com/blogs/derickbailey/archive/2010/02/03/branch-per-feature-how-i-manage-subversion-with-git-branches.aspx]]. 48 48 49 -* Follow these [[Instructions>>http://www.lostechies.com/blogs/derickbailey/archive/2010/02/03/branch-per-feature-how-i-manage-subversion-with-git-branches.aspx]] to manually set up the integration. 50 -* Use [[SourceTree>>http://itunes.apple.com/us/app/sourcetree-git-hg/id411678673?mt=12]] which can clone your SVN repository locally as a full Git repository including all historical SVN commits and their metadata. 51 - 52 52 = Git Goodies for WebObjects Developers = 53 53 54 54 This is a list of tools that other WebObjects developers have found to be helpful. It's not a comprehensive list, and if you find things not listed here please add them ... ... @@ -75,17 +75,14 @@ 75 75 === SourceTree by Atlassian === 76 76 77 77 SourceTree is a free Git/Mercurial GUI for OS X. A key feature is that it can use git-svn to "Clone" a SVN repository into a standard Git repository with your full SVN commit history and maintains a link back to the SVN repository. This allows you to easily use Git locally for development but still do your final commits to SVN. 78 +**[[SourceTree on AppStore>>http://itunes.apple.com/us/app/sourcetree-git-hg/id411678673?mt=12]] 79 +**[[SourceTree Home Page>>http://www.sourcetreeapp.com/]] 78 78 79 -* [[SourceTree on AppStore>>http://itunes.apple.com/us/app/sourcetree-git-hg/id411678673?mt=12]] 80 -* [[SourceTree Home Page>>http://www.sourcetreeapp.com/]] 81 +=== GitX git GUI === 81 81 82 -=== GitX (L) git GUI === 83 +GitX is an awesome FREE history viewer made for OS X. It is a better way to visualize your branch and commit history of your git repository. However, power users (aka "cool kids") will probably only use it for history viewing while they continue to use the terminal command line for checkouts, branching, staging, rebasing and committing. 84 +[[GitX Home Page>>http://gitx.frim.nl/]] 83 83 84 -While most (if not all) Git GUI apps will never be able to emulate all the intricate functionality of Git, one advantage of a GUI app is more convenient and faster browsing/visualization of history and inter-relationships of branches. While development on the original open source GitX.app has waned, this fork of the original has continued to mature into a nice Git client, and is useful for common every day Git operations. However, power users (aka "cool kids") will probably only use it for history viewing while they continue to use the terminal command line for checkouts, branching, staging, rebasing and committing. 85 -[[GitX (L) Home Page>>http://gitx.laullon.com/]] 86 - 87 -Note this app replaces the original [[GitX>>http://gitx.frim.nl/]] by Pieter de Bie. 88 - 89 89 === Open in GitX === 90 90 91 91 [[Open In GitX Finder Droplet>>http://code.google.com/p/git-osx-installer/wiki/OpenInGitX]] ... ... @@ -97,28 +97,6 @@ 97 97 I use Tower (bought it), but only for committing and fixing merge conflicts. I think Tower misses quite a bit of the flagship feature of GIT: branches. You can't see a branch tree graphically, like you can with gitX or even the command line (git log -graph -color, IIRC). But it's cool for committing. For everything else I use command line. 98 98 Miguel Arroz 99 99 100 -=== Gitolite - A Git Repository Server === 101 - 102 -Need a way to host a few dozen or hundred repositories with dead simple administration? Look no further than the free and open-source [[gitolite>>http://sitaramc.github.com/gitolite/]]. You just need a single dedicated user account on some unix based OS. Once installed and configured, you can perform administration tasks such as adding users, adding repositories and setting fine-grained user access privileges all from your own desktop. 103 - 104 -The best place to start is probably the ProGit chapter on gitolite, which is maintained by the author of gitolite, and is right here: 105 -[[Pro Got Gitolite Chapter>>https://github.com/sitaramc/gitolite/blob/pu/doc/progit-article.mkd]] 106 - 107 -Some tips/gotchas to keep in mind when setting up gitolite 108 - 109 -* Make sure you give the gitolite user ownership of the admin public ssh key after copying the key over 110 -* 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. 111 -* During setup, gitolite creates the file /.ssh/authorized//keys in the gitolite user account. Ensure it has permissions of 600. If not change it// 112 -* 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]]// 113 - 114 -=== Gitlab - Self hosted Git management software === 115 - 116 -From the [[Gitlab>>http://gitlab.org/]] homepage: 117 - 118 -GitLab is a fast, secure and stable solution to manage your projects. 119 -It is based on Ruby on Rails and has a free and open-source license (MIT). 120 -GitLab is the most installed git management application in the world. 121 - 122 122 = Unique Git Concepts = 123 123 124 124 === Rebasing === ... ... @@ -149,10 +149,10 @@ 149 149 150 150 === Testing a Pull-Request === 151 151 152 -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/ wocommunity/wonder/pull/43]], one can do:127 +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: 153 153 154 154 {{code}} 155 -curl 'https://github.com/ wocommunity/wonder/pull/43.patch' | git am130 +curl 'https://github.com/projectwonder/wonder/pull/43.patch' | git am 156 156 {{/code}} 157 157 158 158 The curl fetches the diff. Take off the "git am" to just see the diffs. The "git am" merges the diffs. Then you may build and test the pull-request. A normal push will push the code into the repository. ... ... @@ -180,19 +180,3 @@ 180 180 git reset --hard 181 181 182 182 {{/code}} 183 - 184 -=== Stash to Clean and Checkout from Stash to Work === 185 - 186 -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? 187 - 188 -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: 189 - 190 -{{code}} 191 - 192 -git checkout stash@{0} -- file1.java 193 -git checkout stash@{0} -- file3.java 194 - 195 -{{/code}} 196 - 197 -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 198 -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.