Exploring code and its history
For my own repositories, I like to use gitx on my Mac to explore the commit history.
But, of course, you can also just poke around github itself.
And you can do a lot of things from the command line, say to look at
the combined changes to a file that were made over the last year.
See the
github page about git diff.
Tags
Each commit is assigned a “hash tag” which is a unique
sequence of letters and numbers, like
4d9fe11e56652bd19e19e28eac3906f09d5a3074.
When you refer to these hash tags, you can just use an initial substring,
like 4d9fe, that is unique to your repository.
For my R/qtl package, I like to tag particular commits by the version number of the package. Then I can use my assigned tag in place of the less memorable hash tag.
To assign a tag, use something like
git tag -a -m "Tagging version 1.28-5" 1.28-5
To push the tags to github, you need to use
git push --tags
To delete a tag, use
git tag -d 1.28-5
and then you need to remove the tag from github
git push origin :refs/tags/1.28-5
Uses of diff
To see all of the changes since the last commit, type
git diff
To see all of the changes since a given commit, type
git diff [commit]
Where in place of [commit] you use the initial part of a hash tag,
like 5fb8045, or a tag you’ve created, like 1.22-21.
For example:
git diff 5fb8045
git diff 1.22-21
To see all of the changes to a given file since a given commit, type
git diff [commit] [file]
For example,
git diff 1.22-21 R/scanone.R
To see all of the changes between two revisions, type something like
git diff 1.22-21 1.23-16
And again you can use this for a particular file:
git diff 1.22-21 1.23-16 inst/STATUS.txt
git diff has a ton of options; see the manual page:
git diff --help
For example, you can get a brief summary of which files were changed with --stat:
git diff 1.22-21 1.23-16 --stat
If you use gitx, you can use it to view the differences; use a pipe:
git diff 1.22-21 1.23-16 | gitx
Next: Branching and merging