Git¶
Git is software for Revision Control. It is used to keep track of changes to your software project, maintain backups, facilitate collaboration with colleagues or the global community. You can use git without depending on an external server, but to share your repository with a wider audience, a git service is often used. GitHub is such a service, a popular commercial platform that provides free hosting of (public) git repositories. We also have our own GitLab instance, which is more suitable if you want to keep your repositories private.
Using GitHub¶
By putting your repository on Github, you make your software available to the global community. Anyone can modify your software in their own copy. If you like their improvements, you can merge it back into your own version.
- Go to https://github.com and create an account.
- On the top, next to your username, click the icon "Create repo" to create a new repository.
- Give it a name
- On your local machine, go to a directory where the repository can be copied
Using our own Gitlab instance¶
- Go to https://gitlab.science.ru.nl and login with your science.ru.nl account.
- On the projects page, either create a "new project"
- Choose "create blank project" and give it a name
- On your local machine, go to a directory where the repository can be copied
Clone¶
Clone the initial repository from Github:
or from our own Gitlab instance:
You can clone on as many directories or computers as you like. If you give others access to your repository, by sharing it on github, they can clone it like this:
Configuration¶
It is strongly recommend to set your Name and Email address so commits are properly attributed to you, and show up properly on platforms like Github.
# You can omit --global to get repository specific settings
# Enter the same email address as your github-account
git config --global name "John Doe"
git config --global email "johndoe@example.com"
Modify your files¶
Have fun and create or copy your files into the newly created directory.
Status¶
Check which files were modified or created
Diff¶
Git can also show you exactly which lines were changed in each file.
Or, for a single file:
Add¶
Add your files to the commit-list. This way you can decide which files should be tracked and stored to the repository. Skip unnecessary files.
Add all files¶
Or: add all files in your directory. Both existing modified files and new files will be added.
Reset (Undo add)¶
To remove a file from the commit list, use reset.
Commit¶
Commit your changes to your local repository. This creates a backup.
Add and commit¶
If you want to commit all previously added files, you can automatically add them to the current commit. New files will not be added.
Push¶
Push all your commits to GitHub.com. Before you can push, your
repository must be up-to-date with respect to the repository on GitHub.
Use git pull
first if your repository is not updated.
Pull¶
Update your local repository from Github.
# Get all updates that were pushed from others
# (by friends who have access or from your other computers)
git pull
Your local edits will be automatically merged with edits on the remote repository (git calls this fastforward).
Merge conflict¶
After doing git pull
, git normally automatically merges your edits
with those on the remote repository.
If your edits conflict with the remote edits, then git cannot merge for you. Git will report which files had conflicts. Both your edits and remote edits will show up in the files. You need to reconcile these conflicting edits manually. Take a careful look and decide which lines should stay in the file and which shouldn't.
The file will contain a section similar to the following:
<<<<<<< HEAD:mergetest
This is my third line
=======
This is a fourth line I am adding
>>>>>>> 4e2b407f501b68f8588aa645acafffa0224b9b78:mergetest
HEAD
refers to the version on the remote server (GitHub). The section
below the ======
is the edits you have made. Delete or rewrite the
conflicting lines, remove the section indicators <<<< ... >>>>
,
======
and re-add the file to the commit: git add example.txt
. Use
git status
to see if git reports any other merge conflicts.