====== Git Tips == ===== Getting Help == git help git help cat .git/config https://www.kernel.org/pub/software/scm/git/docs/ ===== Mercurial Command Comparison == See [[hg>wiki/GitConcepts|Mercurial <=> Git Command comparison]] ^ hg ^ git ^ comment ^ | hg backout | git revert | options my differ | | hg branches | git branch [-a] | | | hg commit -m 'msg' | git commit -a -m 'msg' | from trial / alternative: ''git add ...; git commit'' | | hg diff -c -1 | ''git diff @{0}^!'' or ''git show @{0}'' | See diffs of last commit (tip) | | hg diff -c -2 | ''git diff @{1}^!'' or ''git show @{1}'' | See diffs of penultimate commit | | hg glog | git log --graph | | | hg glog -v | git log --name-only | | | hg init | git init | from trial | | hg pull -u | git pull [url] | URL may be specified, otherwise remot tracking thing is used? | | hg push | git push | See below | | hg status; hg outgoing | git status | | | hg uptdate ... | git checkout ... | | ===== Push == In order to push from repo S to reop T, T must not be on the branch you want to push to (typically master). Therefore create a dummy branch ''git checkout -b dummy'' on T. Now you can push to T/master from S Alternatively you can turn T into a "bare" repo. See also http://stackoverflow.com/questions/2816369 ===== Clone == Example: Using SSH from within the remote home dir git clone ssh://[user@]host/~user/tmp/igit igitigit See ''git help clone'' (also for valid URL formats) The result of ''git clone '' without specifying a branch name is dependent on which branch the source repo currently is! ===== Branches == ''git branch'' shows existing local branches, while ''git branch -r'' causes the "remote-tracking" branches to be listed, and option -a shows both. See [[http://www.kernel.org/pub/software/scm/git/docs/git-branch.html|git-branch]] With Git it is not possible to directly swich to a different branch on a cloned repository like in Mercurial. Instead first you have to create a new (local) branch wich "tracks" the specified remote brach, eg. (''origin/stable'') and then checkout (=update) this branch to your working directory. The following command does both steps at once: git checkout -b stable origin/stable Now you can pull all needed updates whenever a new release is made: git pull [[http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/|See also]] ===== General Links == * [[http://nfarina.com/post/9868516270/git-is-simpler|Probably good intro]] * [[Mercurial Tips]] --- [[SVN Tips]] --- [[CVS Tips]] * [[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html|man gittutorial]] * [[http://www.kernel.org/pub/software/scm/git/docs/user-manual.html|Git User's Manual]] * [[http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/|10 things I hate about Git]] * [[http://think-like-a-git.net/|Think Like (a) Git]]