===Setup Client Environment===
git config --global user.name "Joe Bloggs" git config --global user.email [email protected] git config --global color.diff auto git config --global color.status auto git config --global color.branch auto
===GIT vs SVN cheat-sheet===
|git clone repo||svn co repo|
|git pull||svn up|
===Create new repo=== Cd to the dir where version tracking is required and create the repo:
Version track *.sh and *.pl files:
git add *.pl git add *.sh
Perform your first commit:
git commit -m "Initial commit"
Re-commit every time changes are made:
git commit -a -m "test1"
===Diffs=== ====Changes in working tree not yet staged for commit====
====Changes between staged changes and the working tree====
git diff --cached
====Changes in the working tree since your last commit====
git diff HEAD
===Reverting=== ====Reverting local changes==== Revert local changes to the version on the same branch of the most recent commit:http://stackoverflow.com/questions/692246/undo-working-copy-modifications-of-one-file-in-git
git checkout HEAD -- file
Revert local changes to the version on the same branch of the commit directly BEFORE the most recent commit:http://stackoverflow.com/questions/692246/undo-working-copy-modifications-of-one-file-in-git
git checkout HEAD^ -- file
====Reverting a commit==== Use git log to view the list of commits, note the long alpha-numeric after “commit”.
</pre> ===Setup remote repo=== Setup a bare remote repo:ssh remote-server mkdir -p /var/git/repo1 cd /var/git/repo1 git --bare init exitIn your new repo folder:git remote add origin ssh://remote-server/var/git/repo1The following command will now push your repo to remote-server:git push origin master===Clone an existing repo=== Note that the term 'check-out' is specifically not used here, as 'check out' in GIT is completely different to 'check-out' in CVS/SVN. A check-out in CVS/SVN is called 'clone' in GIT.git glone http://blah.com/repos/bgrepo.gitRepos can also be setup using GITs own protocol in the form of git clone git://... or over SSH as described above or with git clone [email protected]:repos/bgrepo.git ===Making stages=== GIT unlike CVS/SVN has a 'staging' principal. Changes that are made to files in your local repo are not automatically committed when git commit is run. All local changes must be set to be 'ready to commit' instead, which is is called 'staging' in SVN-speak. This is done from the git add which is also used to add files to the repo as in CVS/SVN. Local changes made since git add was run will NOT be committed! Instead the changes up to the last time git add was run on the file are committed. This is an important point as this is very different to the principals behind CVS/SVN and indeed other VCS. It is possible to force git to place all local changes into staging before the commit ala CVS/SVN with the -a argument. This will place into staging files which already tracked - git add is only required to add new tracked files to the repo. ===Renaming files=== GIT does not automatically track file renames, however if a file is removed and re-added to the repo the change history is still retained. *Both of these commands have the same result:git mv script.pl script2.plmv script.pl script2.pl git rm script.pl git add script2.pl===Branching and merging=== A branch is a separate snapshot of your primary or master branch that can be worked out with affecting the master branch.$ git branch * master $ git checkout -b fix-fallback Switched to a new branch 'fix-fallback' $ vim index.html $ git commit -a -m 'fixed fallback' [fix-fallback 3a0874c] fixed fallback 1 files changed, 1 deletion(-)Now they changes are committed in the fix-fallback branch. To merge this into master we switch to it and perform a merge command:$ git checkout master $ git merge fix-fallback Updating f42c576..3a0874c Fast-forward .... 1 file changedNow that the changes have been merged into master the fix-fallback branch can be deleted:$ git branch -d fix-fallback===Logs=== ====List changes in this branch====git cherry -vORgit log ..</pre> ====See changes in last commit====git log --name-status HEAD^..HEADhttp://stackoverflow.com/questions/2231546/git-see-my-last-commit ====See changes in a given commit id====git show </pre> ===References=== http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging [[Category:Git]]