This page contains a basic tutorial for working with git. There aren't any advanced concepts here, just the basics. In this tutorial we'll be working with a testing git repo and fake files. Its always a good thing to remember that while working with Git is a decentralized VCS, even though you may choose to push changes all to one server, you don't have to. Each repo contains a full history and set of objects in the .git directory. You will also only see a .git directory in the top level unlike svn where you have .svn in each sub directory as well as the top level. Unlike svn, git uses hashes to identify commits instead of revision numbers. These are just some basic tasks, the man pages can go into a lot more detail. === Initializing a Git Repo === Create a empty working directory: {{{ mkdir git-tutorial cd git-tutorial }}} Initialize the local Git Repo: {{{ git init }}} === Committing files to the Repo === Lets create a test file: {{{ echo "Test Data" > testfile }}} Stage the file to be included into the next commit: {{{ git add testfile }}} Finally commit the file to the repo: {{{ git commit -m "Add a test file" }}} === Viewing changes to files before committing them === First lets make a change to our test file: {{{ echo "Different Test Data" > testfile }}} View the changes: {{{ git diff }}} You could also execute the following or something similar: {{{ git diff testfile }}} === Listing files with changes === You can use the following command to list the status of all files not ignored by Git: {{{ git status }}} You can also use the command on a path, the same as git diff. === Revert a file back to a specified commit === In this case we want to revert to the current working ref, so we wont specify one: {{{ git checkout testfile }}} === Reverting the entire working tree === You can use the following command to revert the entire working tree to the last commit in the branch you're working with: {{{ git reset --hard }}} === Creating a new branch from the current ref === Using git checkout you can start a new branch: {{{ git checkout -b testing }}} Lets change the test file in this branch so we can identify it in the future: {{{ echo "Testing Branch" > testfile git add testfile git commit -m "Change the test file for the Testing Branch" }}} === Switching between branches === Using git checkout you can switch between branches. Switch back to master and check the testfile: {{{ git checkout master cat testfile }}} Switch back to testing and check the test file {{{ git checkout testing cat testfile }}} === Listing Branches === The following will show you a list of branches: {{{ git branch }}} === Creating a tag from the current branch === Before we create a tag lets change the testfile: {{{ echo "Testing Tag testing-1.0" > testfile git add testfile git commit -m "Change the test file before tagging." }}} Finally create a testing-1.0 tag: {{{ git tag testing-1.0 }}} Its good to know that when you create a Tag, you stay in the current branch. It doesn't switch its current working ref to the tag. Its also good to know that when you checkout a tag, you can't commit changes to the tag. If you want to make changes you should change the branch the tag was created from or create a new branch from the tag using git checkout -b. === Listing Tags === The following will show you a list of tags: {{{ git tag }}}