16. Branching
If we have a new feature request,
which implementation concerns much
of the source code, it would be safer
to work on the feature in a separate
branch.
$git branch Feature1022 –m “Comment”
$git checkout Feature1022
$git branch
Create a branch
Switch to the branch
Show available branches
18. Merging
As we finished the requested
feature development, we can
merge the feature branch with
the master branch
$git checkout master
$git merge Feature1022
$git branch -d Feature1022
Master branch
Feature1022
Switch to the master branch
Get rid of the feature branch
19. Tagging
We can tag specific points in
history as being important. E.g.
tag every stable version of the
product before deploying.
$git tag v1.1 –m “Comment”
$git checkout tags/v1.1
$git tag
$git tag –d v.1.1
$git push remote :refs/tags/v.1.1
Create a tag
Switch to the tag
Show available tags
Remote tag in local repo
Remote tag in remote repo
20. Log
We can see our commit
history
$git log --graph
.. and much fancier
$gitk --all
21. Working with a remote
repo
Let’s associate our local repo to
the new created remote repo
$cd /repos/example-remote
$git init --bare
$cd /l/vhosts/os.htdocs/example
$git remote add origin /repos/example-remote
22. Push changes to a remote
repo
We can push our changes
collected in the local repository
to the remote one to share
them with the team
$cd /l/vhosts/os.htdocs/example
$git push origin master
Associated remote repo
Branch
23. Pull changes from a remote
repo
Pull allows us to get the latest
changes from the remote
repository.
$cd /l/vhosts/os.htdocs/example
$git pull origin master
24. Creating patches
Patch is a text file that contains
changes to the source code. This file
can be sent to someone else and this
person can use this file to apply the
changes to his/her local
$git checkout mybranch
$git commit -am "First commit in the branch“
$git format-patch origin/master
$git checkout master
$git apply 0001-First-commit-in-the-branch.patch
Creates 0001-First-commit-in-the-
branch.patch
25. Git command aliases
Put into .gitconfig anywhere in
parent directory with following
content:
[alias]
cd = checkout
dir = branch
ci = commit -a -m
lg = log -p
undo = reset –hard
up = !git push origin master && git push
origin --tags
26. Git command aliases
Now you can use shortcuts:
$git cd SomeBranch
$git dir
$git ci “my comment“
$git up # this one pushes local commits and tags
to the remote repo