looks like Christan's are in there, Tom's is more recent and maybe that's what you are seeing? (you can use "git log" to view all the commits, their hashes (SHA-1) and their commit messages)
Pull vs Fetch:
Basic high level gist -- Pull is a shortcut for Fetch + Merge. It downloads the latest changes from the remote repo and syncs them into your local working copy automatically and without review. Fetch will get the latest changes, but it sort of "stages" them for you in a local copy of the remote branch, waiting for your review and merge into your working copy.
For your purposes, Pull is probably what you want.
One possible workflow (in git cmd line, I don't konw the netbeans equivilent, sorry!):
1) Clone repo (git clone https://github.com/IgniteRealtime/Spark.git)
2) Make a new local branch, from which you will apply your patches and test
(git checkout -b someCoolBranchName)
3) Apply your patch (there's a few ways, depending on the format of the patch, see below)
4) Build and test
Next step can happen a few ways:
5-1) Stash your changes (so they are saved for later) and switch back to the master branch and re-sync with the remote master
git add . (or, git add /path/to/the/file) (adds files to your changeset)
git stash
A) or you can commit your changes if you are happy and want to keep them
git add . (or, git add /path/to/the/file)
git commit -m "your message about this commit"
B) or you can stash your changes, change back to another branch, and delete this testing branch
git add . (or, git add /path/to/the/file)
git stash
git checkout master (or name of another branch)
git branch -D someCoolBranchName
OR
5-2) Reset your local branch back to the last commit (before you started making changes)
git reset --hard
6) Checkout (switch back) to your local master branch (git checkout master)
(Optional) Delete your testing branch:
git branch -D someCoolBranchName
(you can use "git branch -a" to see all branches, local and remote, this command will not accidentally delete a remote branch, you would have to push back to the repo to delete it)
7) Re-sync with the remote master, back down into your local master (git pull origin master)
8) Rinse - wash - and repeat
Few notes:
You can have as many local branches as you desire. They do not have to be present/created on the remote repo (github). They can "live" in your local repo forever if you wanted.
Any commit on github can be downloaded as a unified-diff/patch file by appending ".diff" or ".patch" to the end of the URL
https://github.com/igniterealtime/Openfire/commit/6e321fab6f7feac04606585cb3ceeb 6a8a46503e
to
https://github.com/igniterealtime/Openfire/commit/6e321fab6f7feac04606585cb3ceeb 6a8a46503e.patch
Depending on if it's a unified-diff/patch file, or a git-formatted patch, you can apply them like:
patch -p0 --ignore-whitespace < patchfile.patch (unified-diff/patch file)
git apply --ignore-whitespace --ignore-space-change patchfile.patch (unified-diff/patch file and git formatted patch)
-- "git apply" has a lot of cmd line flags that can be used with it to do lots of stuff, worth looking into.
Notes on Stashing:
http://gitready.com/beginner/2009/01/10/stashing-your-changes.html
http://git-scm.com/book/en/Git-Tools-Stashing
I just threw a bunch out there, tried not to be confusing! Again, I"m not familiar with the workflow while using netbeans, but most of this should have something similar. Maybe somebody else will share a workflow specific to working through an IDE for most of this.