Introduction
|
Git is a version control tool; one of many.
GitHub is a repository hosting service; one of many.
Use version control to store versions neatly, restore previous versions, understand what happened (and why), and always know which is the current version.
|
Tracking changes with a local repository
|
git init initializes a new repository
git status shows the status of a repository
Files can be stored in a project’s working directory (which users see), the staging area (where the next commit is being built up) and the local repository (where commits are permanently recorded)
git add puts files in the staging area
git commit saves the staged content as a new commit in the local repository
Always write a log message when committing changes
|
Looking at history and differences
|
git log shows the commit history
git diff displays differences between commits
git checkout recovers old versions of files
HEAD points to the commit you have checked out
master points to the tip of the master branch
|
Commit advice
|
Commit messages explain why changes were made, so make them clear and concise
Follow conventions to give a history that is both useful, and easy to read
Only commit files which can’t be automatically recreated
|
Branching
|
git branch creates a new branch
Use feature branches for new ideas and fixes, before merging into master
merging does not delete any branches
|
Undoing changes
|
git checkout <file> discards unstaged changes
git commit --amend allows you to edit the last commit
git revert undoes a commit, preserving history
git reset undoes a commit by deleting history
|
Working from multiple locations with a remote repository
|
Git is the version control system: GitHub is a remote repositories provider.
git clone to make a local copy of a remote repository
git push to send local changes to remote repository
|
Collaborating with a remote repository
|
|
Rebasing
|
|
Pull Requests
|
|
Git hints and tips
|
List files to ignore by committing a .gitignore file
Selectively stage changes to files using git add --patch
Configure a visual diff tool and use git difftool to view changes
|
Conclusions and further information
|
|