A simple cheat sheet for Fedora developers new to Git.
Table of Contents |
---|
You can run git status
at any time to get a snapshot of your current state. You can also examine your differences with the master branch on github at any time by executing these two commands:
Code Block |
---|
git fetch origin master
git diff origin master |
Creating and working with a published branch
- Get the repository:
orCode Block git clone git@github.com:fcrepo/fcrepo.git cd fcrepo
Code Block git clone http://github.com/fcrepo/fcrepo.git cd fcrepo
- Create the branch where you'll do your work:
Code Block git branch fcrepo-780 git checkout fcrepo-780
Thecheckout
command makes whatever branch you specify the local active branch. Make your changes, test... - Add your edited/new files, then commit your branch:
Code Block git add myfile.java git commit myfile.java
- If you're working on a branch for some time, you may want to update your branch with the latest changes to master.
- Push the branch back up to github
Code Block git push origin fcrepo-780
- Merge the branch into Check out master (formerly known as 'trunk'):
Make sure it's current.Code Block git checkout master
- Merge the branch into master (formerly known as 'trunk')
Resolve any conflicts, and test again.Code Block git merge fcrepo-780
- Update master on github:
Code Block git push origin master
- Once you've received word that the build has completed correctly, delete the branch
Code Block git push origin :fcrepo-780
Creating and working with an unpublished branch (with git rebase)
- Get the repository:
Code Block git clone git@github.com:fcrepo/fcrepo.git cd fcrepo
- Create the branch where you'll do your work:
Code Block git branch fcrepo-780 git checkout fcrepo-780
Thecheckout
command makes whatever branch you specify the local active branch. Make your changes, test... - Add your edited/new files, then commit your branch:
Code Block git add myfile.java git commit myfile.java
- Graft your changes (and commit histories) onto the end of master:
You may need resolve conflicts, then re-add and re-commit the merged files. If this is the case, you can pick up where you left off with the commandCode Block git rebase master
git rebase --continue
.
The commandgit rebase -i master
allows you to interactively edit, suppress, combine the commits in your branch, to eliminate non-useful or trivial commit messages in the final result. - Switch to the master branch, update it to the latest version:
Code Block git checkout master git pull
- Merge in the changes from your unpublished, rebased branch:
Code Block git merge fcrepo-780
Merges are automatically committed locally. - Update master on github:
Code Block git push origin master
Anchor | ||||
---|---|---|---|---|
|
Examining and merging in upstream changes
If any time has passed since you
...
began working on your local branch, make sure that you also merge any upstream changes to master into your local copy before pushing your changes back up:
Code Block |
---|
git fetch origin master |
Examine the changes:
Code Block |
---|
git diff origin master |
then:
Code Block |
---|
git merge origin/master |
If there were no conflicts, the merge will be automatically committed. If there are conflicts you will need to resolve them and then commit.
(The command git pull
...
Code Block |
---|
git push origin master |
...
Code Block |
---|
git push origin :fcrepo-780 |
You can run git status
at any time to get a snapshot of your current state. You can also examine your differences with the master branch on github at any time by executing these two commands:
...
is a shortcut for doing a combined fetch-and-merge, but read this on why that's a bad idea.)
...