Git Protocol
A guide for programming within version control.
Maintain a Repo
- Avoid including files in source control that are specific to your development machine or process. Use a correct .gitignore.
- Delete local and remote feature branches after merging.
- Perform work in a feature branch.
- Rebase frequently to incorporate upstream changes.
- Use a pull request for code reviews github / bitbuket.
Write a Feature
Create a local feature branch based off develop.
git checkout develop
git pull
git checkout -b <branch-name>
Rebase frequently to incorporate upstream changes.
git fetch origin
git rebase origin/develop
Resolve conflicts. When feature is complete and tests pass, stage the changes.
git add --all
When you've staged the changes, commit them.
git status
git commit --verbose
Write a good commit message. Example format:
Present-tense summary under 50 characters
* More information about commit (under 72 characters).
* More information about commit (under 72 characters).
http://project.management-system.com/ticket/123
If you've created more than one commit, usegit rebase
interactively to squash them into cohesive commits with good messages:
git rebase -i origin/develop
Push your branch.
git push origin <branch-name>
Submit a pull request github / bitbuket.
Ask for a code review in the project's chat room.
Review Code
A team member other than the author reviews the pull request. They follow Code Review guidelines to avoid miscommunication.
They make comments and ask questions directly on lines of code in the GitHub web interface or in the project's chat room.
When satisfied, they approve the pull request, if is the second approve, then merge it.
Merge
Rebase interactively. Squash commits like "Fix whitespace" into one or a small number of valuable commit(s). Edit commit messages to reveal intent. Run tests.
git fetch origin
git rebase -i origin/develop
Force push your branch. This allows GitHub / Bitbucket to automatically close your pull request and mark it as merged when your commit(s) are pushed to master. It also makes it possible to find the pull request that brought in your changes.
git push --force-with-lease origin <branch-name>
View a list of new commits. View changed files. Merge branch into develop.
git log origin/develop..<branch-name>
git diff --stat origin/develop
git checkout develop
git merge <branch-name> --ff-only
git push
Delete your remote feature branch.
git push origin --delete
<branch-name>
Delete your local feature branch.
git branch --delete
<branch-name>