Using Git
Contents
Setup
- Set your name with git
git config --global user.name "Ivan Ivanov" git config --global user.email "[email protected]"
- Go to https://github.com/settings/ssh and add your private SSH key.
- Clone the repository
git clone [email protected]:MariaDB/server.git cd server
- Run
git branch
to check that you're working on MariaDB 10.1:
server $ git branch * 10.1
Commit comments
In git commit messages are normally formatted as
subject body more body ...
That is, the first line is considered a *subject*, much like email subject. Many git commands and pages on github only show the commit subject, not the complete comment. After the subject goes an empty line, then the detailed description of the comment. Please, structure your commit comments this way, don't forget the empty line.
Branches
This is an important concept, and git branches do not have equivalents in bzr.
In Bazaar, we all used to have one shared repository, within which there were many branches. This seems to be impossible with git?
In Git, each repository has only one branch that is currently checked out.
git branch
Note: branches whose names start with bb-
are automatically put into the buildbot.
Equivalents for some bzr commands
CAVEAT EMPTOR. Check the manual before running!
bzr status
isgit status
bzr diff
isgit diff
bzr log
isgit log
bzr revert
isgit reset --hard
bzr revert filename
isgit checkout filename
bzr revert
isgit reset --hard
bzr parent
isgit remote -v
(but there are more detailed commands)bzr push
isgit push REMOTENAME BRANCHNAME
. REMOTENAME is typically "origin", for example:git push origin 10.1-new-feature
bzr clean-tree --ignored
isgit clean -Xdf
(note the capital X!)bzr root
isgit rev-parse --show-toplevel
bzr missing --mine-only
isgit cherry -v origin
(kind-of).
GUIs
bzr gcommit
isgit citool
bzr viz
isgitk
bzr gannotate
isgit gui blame
Commit emails
In MariaDB project, it is a good idea (and a long tradition since MySQL Ab) to have all your commits sent to a [email protected] mailing list. It allows others to follow the progress, comment, etc.
A script and instructions on how to setup commit triggers in Git are here: http://bazaar.launchpad.net/~maria-captains/mariadb-tools/trunk/files/head:/git_template/ . Jira task for commit trigger was MDEV-6278.
Examples
Applying new code from main tree to a branch
You are working on a branch (NEW_FEATURE
) and would like to have into that branch all changes from the main branch (10.1
).
git checkout 10.1 git pull git checkput NEW_FEATURE git rebase 10.1
Applying a bugfix in the main branch
You've just fix a bug in the main 10.1 branch and want to merge it with the latest 10.1. Often a rebase is better in this case. Assuming you current checked out branch is 10.1:
git fetch origin git rebase origin/10.1