checkitmobile advanced git
Post on 16-Apr-2017
763 Views
Preview:
TRANSCRIPT
Advanced Git
02.2012
What've learned so far from Git
- Using Git as decentralized VersionControlSystem- Working with Git on Console or Netbeans (more or less)- Working with a Master and a Release branch (explained later)Advantages:- Less complexity on releases- Faster Hotfix-Process with a clear history (no email required)Disadvantages:- More to type / more complex commit process
Branching
Why branching is useful:We can develop features and play with experimental stuff in our own sandbox, and avoid that other team members having trouble with our codechanges.Localand remote branches:A branch is created on your local machine. While pushing your changes to remote, a new branch on remote is also being created, so that all team members can pull the branch and start working together on this branch.
Branching examples
Create a new local branch$ git branch new_branch.. or with checking out directly:$ git checkout -b branch_name.. or branching a specific version$ git branch specific_branch 99a0de8Create a remote branch from current$ git push origin branch_name
List all local and remote branches$ git branch -a (local and remote)$ git branch -r (ony remote)Delete a local Branch$ git branch -D branch_nameDelete a remote Branch$ git push origin :branch_name
Merging
When it's time to merge branches?1. If you've finished your work on a branch and want to merge it back to the master branch2. If the master branch contains important changes, that you need into your feature branchHow merging works?By default, git merge commits the merged changes if they can be successfully merged. You can short-circuit this with the --no-commit option. This is useful when you want to review, and edit, the changes from the merge before making a commit.
Merging examples
Merge a branch to the current branch$ git checkout master$ git merge new_branchKeep the feature Branch up2date$ git checkout new_branch$ git merge master
What happens on a conflict$ git checkout master// conflict happens$ git status// see conflicted files and fix them$ git add .$ git commit -m merge new_branch into master
A branching model
We have now two main branches: Master and ReleaseThe master branch reflects the state with the latest delivered changes for the next release.For every story (e.g. feature) we'll create a new branch for development. After the feature is finished, we can merge it back into the master branch, so that it is available for the next release.From time to time we merge the master branch into a feature branch, just to keep the status up to date.TTD: How to handle branches with pandora?
A branching model
The release branch reflects the production ready state and it's also our base for Hotfixes.After a Hotfix is committed, they're getting deployed onto production system and merged back into master, so that they're available for the current development process. If a hotfix was committed into the Master branch, we'll use cherry-pick to merge only this specific commit to release.
git checkout releasegit cherry-pick 423d021
A branching model
Git diff
changes between working and staging$ git diffchanges between staging and head$ git diff staged
changes between commits$ git diff 423d021..1e85ac3changes between branches$ git diff master new_branch
Powerful Git-Tools
Git-Smart-Pull delivers us a helper for pulling updates from Remote to local.It'll check how many commits we're behind, stash uncommited changes, rebase them if we have local commits and restore the changes from stash.
Git add Interactive Mode
# install Git-Smart with the following command:gem install smart-git
git add -p
Powerful Git-Tools
Git WebInterface
More Git aliases
git instaweb --httpd webrick
[alias] st = status ci = commit br = branch co = checkout df = diff lg = log -p
Git Log Graph
There is a useful Graph-Tool to get an overview about the current commit and branching process, try the following cmd:
And add it for later use to your ~/.gitconfig file
$ git log --graph --date-order -C -M --pretty=format:" %ad [%an] %Cgreen%d%Creset %s" --all --date=short
[alias]graph = log --graph --date-order -C -M --pretty=format:\" %ad [%an]%Cgreen%d%Creset %s\" --all --date=short
Git Log Graph
checkitmobile GmbHGerrit Wanderer
Ruby on Rails-DeveloperWaldemarstr. 37a
10999 BerlinTel: +49 30 921 228 61
Mail: wanderer@checkitmobile.com
Contact
powered by
Klicken Sie, um das Format des Titeltextes zu bearbeitenTitelmasterformat durch Klicken bearbeiten
Klicken Sie, um die Formate des Gliederungstextes zu bearbeitenZweite GliederungsebeneDritte GliederungsebeneVierte GliederungsebeneFnfte GliederungsebeneSechste GliederungsebeneSiebente GliederungsebeneAchte Gliederungsebene
Neunte GliederungsebeneTextmasterformate durch Klicken bearbeiten
Zweite Ebene
Dritte Ebene
Vierte Ebene
Fnfte Ebene
Klicken Sie, um das Format des Titeltextes zu
bearbeitenZweizeilige
Headline
21.02.12
Klicken Sie, um das Format des Titeltextes zu bearbeitenTitelmasterformat durch Klicken bearbeiten
top related