Git manual (2015)
Contents
Main commands you will need
git clone https://git.ttu.ee/ained/iag0581/your-uni-id git add . git commit -am "comment" git push git pull
Downloading Git
When installing Git on Windows operating system, installation settings can be set as default. (Use Git from Git Bash only; Checkout Windows-style, commit Unix-stile line endings; Use MinTTY)
Getting started
Assuming that Git is successfully installed, in Windows open start menu and search for Git Bash and open it. In Linux or Mac simply open terminal.
Note: Under Windows's Git Bash Ctrl+C and Ctrl+V do not work. If you wish to paste something into Git Bash window, use Insert.
Each student has already a repository generated beforehand with URL looking like this: https://git.ttu.ee/ained/iag0581/<UNI-ID> (Note: This link is not meant to be used through web browser as there is no web interface for the git repositories. Use it only with git software.)
For authentication your Uni-ID will be used. (The same username and password that you use for logging in to the lab computers).
There is also a short video showing how to clone your repository: Video link
Cloning
Let's say that we want to clone the repository to our local directory at C:\workspace. First we have to change the current directory by typing to terminal:
cd /c/workspace
For example if your Uni-ID is john.doe ( NB! all lowercase letters ) then for cloning your existing repository from https://git.ttu.ee/ained/iag0581/john.doe, type in:
git clone https://git.ttu.ee/ained/iag0581/john.doe iag0581
Next you will be asked username and password. Username is your Uni-ID, which is the same as the one you use for logging into lab computers. If you do not know your Uni-ID and password, you can get one from ICT-410 or by logging in with ID-card or residence permit at https://pass.ttu.ee . As you are typing in password, you will not see the input as asterisk (*) symbols like you might be used to. However, the password input will still work as long as it is the correct password. After that you should be seeing message like:
warning: You appear to have clone and empty repository. Checking connectivity.. done.
Do not be alarmed by the warning, it is normal to see that as you are first starting off with an empty repository
After you authenticate yourself succesfully, the repository is cloned into the local directory C:\workspace\iag0581 and we can change also our current directory to it by typing:
cd iag0581
Common problems when cloning
- Username should be in lowercase letters
- Do not forget https:// from the beginning of URL
- The URL should be only used through git software. Through web browser it does not work.
Staging area
Next we can start adding files for version control. Let's say that we already have some files in another directory (C:\workspace\lab1) that we wish to add to version control. Use file manager to copy the files into the repository or for copying files from the terminal there is a command cp.
cp /c/workspace/lab1 /c/workspace/iag0581 -rf
Note: Git bash on Windows OS uses Unix notation for directory paths. So instead of 'C:\example', you would have to use '/c/example'.
To make sure that the files copied over successfully we can see the contents of the current directory by entering command ls. Next we have to notify git that we have files that we wish to add to version control. Git has so called staging area, which is used to temporarily hold, prepare and review changes to be made. To add files into the staging area, command git add <filename> is used. So if we wish to add the previously copied folder, type:
git add lab1
Or if we simply want to add all the files, we can insert:
git add *
To see all the files in the staging area for making sure we are ready to commit the changes, there is a command git status which lists all the new and modified files to be committed.
Committing
Before committing it is required to set up your name and e-mail with git. To do that there are following commands that should be inserted:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Next we can commit the changes with the command:
git commit -am "your comment about the commit"
Pushing
Now that the changes are stored locally we may want to push the changes back to remote repository also. To do that there is the command git push
git push origin master
Origin and master specify to which remote repository and branch the commit will be pushed into. Next your username and password will be asked. (The same username and password that you use for logging in to the lab computers). If you want to make sure that the push was successfully made, you can simply clone your repository in another folder and see if the contents have been updated.
Pulling
For the next scenario, let's say that we have repositories cloned locally to both lab computer and computer at home. Now when we have made changes to repository while working from lab and we want to update the local repository from home, git pull is used. Git pull incorporates changes from a remote repository into the current local branch.
git pull
Other useful commands
See graphical revision history.
gitk
Checkout earlier version. Hash can be found out using gitk or git log for the corresponding version (Looks something like b22756ed3s...). It is not required to supply the whole hash, first unique characters are enough.
git checkout <hash>
git checkout b22
Undo last commit. (source: http://stackoverflow.com/questions/927358/how-do-you-undo-the-last-commit)
git reset --soft HEAD~1
Branching
Using branching can make managing and organizing your repository easier. It can be used for example, if you want to try out new feature without making edits to your master branch. To create a new branch, insert
git branch <branch name>
To check out newly created branch
git checkout <branch name>
For switching back to master branch
git checkout master
To see existing branches:
git branch
For deleting:
git branch -D <branch name>
Documentation
For more advanced usage it is recommended to read documentations on the internet. Good places to start are
Git official documentation - https://git-scm.com/doc
GitHub cheatsheet - https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf