Collaborative development with Git
Anuchit Chalothorn
anuchit@redlinesoft.net
Git Workshop
●
●
●
●
●
●
●

Overview
Git Basics
Undo Git Changes
Git Branches
Rewriting Git History
Git Remote Repository
...
Overview
Version control is a system that records changes to a file or set of files
over time so that you can recall speci...
Local
Centralized
Distributed
History of Git
Linux Kernel was use DVCS call BitKeeper, proprietary
software but in 2005 the company behind BitKeeper bro...
Goal of Git
● Speed
● Simple design
● Strong support for non-linear development (1000+ for
parallel branches)
● Fully dist...
Git Basic
Git basic tutorial provide the important commands to work
with Git
Get Git
Download git at http://git-scm.com/downloads choose your
os version :)
Workshop 1
Download Git and install to your machine, after install try to
use git command.
Git config
The git config command lets you configure your Git
installation (or an individual repository) from the command
...
Git config user.name
Define the author name to be used for all commits in the
current repository. Typically, you’ll want t...
Git config user.email
Define the author email to be used for all commits by the
current user.
git config --global user.ema...
Git config core.editor
Define the text editor used by commands like git commit for
all users on the current machine. eg; v...
Git config core.autocrlf
Config the line ending for your operating system
git config --global core.autocrlf true
git confi...
Git config color.ui
Config the line color for git message
git config --global color.ui auto
Workshop 2
Setup Git config to your profile; name, email, line break, ui
auto color and choose your favorite text editor.
Git init
The git init command creates a new Git repository.
git init
git init <directory>
Git init --bare
Shared repositories should always be created with the -bare flag

Bare

Non
Bare

Non
Bare

Non
Bare
Example
cd /repo
git init --bare my-project.git

my-project.git
Workshop 3
Create git repositories call myrepo as working repository
and master-proj as shared repository, see what is
dif...
Git clone
The git clone command copies an existing Git repository.
git clone <repo>
git clone <repo> <directory>

Origin

...
Collaboration
Central Repo to Working Copy
Collaboration

Repo to Repo Collaboration

SVN
Repo

Git
Repo

Git
Repo

Git
Re...
Example
git clone ssh://username@example.com/repo/my-project.git
cd my-project

example.com/repo/my-project.git

local rep...
Workshop 4
create local git repo call master-proj and clone
master-proj to myproj and create a blank file called
README
Git add
The git add command adds a change in the working
directory to the staging area.
git add <file>
git add <directory>
Example
git add .
git commit

Add

Commit

git add hello.php
git commit
Working
Directory

Staged
Snapshot

Committed
Hist...
Workshop 5
Add README to your repository
Git commit
The git commit command commits the staged snapshot to
the project history.
git commit -m "<message>"
Example
git add hello.php
git commit

hello.php

hello.php

hello.php
Workshop 6
Commit all change to your repository, create snapshot to
project history.
Git status
The git status command displays the state of the working
directory and the staging area.
git status
Workshop 7
Use git status after add, edit file or commit file.
Git log
The git log command displays committed snapshots. It lets
you list the project history, filter it, and search for ...
Example
Git Status

git log

Git Log

git log -n <limit>
git log --oneline
git log --stat
git log --author="<pattern>"
git...
Workshop 8
Use git log to see the committed history of your repository.
Undo Git Changes
Working with previous revisions of your software project.
Git checkout
The git checkout command serves three distinct functions:
checking out files, checking out commits, and check...
Example
git log --oneline
git checkout a1e8fb5

a1e8fb5

Master
Example
git checkout master
git checkout a1e8fb5 hello.py

Add

Working
Directory

Commit

Staged
Snapshot

Committed
Hist...
Workshop 9
Add 2 lines in in readme.txt and commit change to your
repository, check revision form git log and try to chang...
Git revert
The git revert command undoes a committed snapshot. it
the ‘safe’ way to undo.
git revert <commit>
Example
git commit -am “update readme”
git revert 15df9b6

15df9b6
Workshop 10
Add 1 lines in in readme.txt and commit change to your
repository, check revision form git log and try to reve...
Git reset
The git reset command undo changes in dangerous
method — it is a permanent undo.
git reset <file>
git reset <com...
Example
git commit -am “update readme”
git reset --hard 15df9b6
Workshop 11
Add 1 lines in in readme.txt and commit change to your
repository, check revision form git log and try to reve...
Git clean
The git clean command removes untracked files from your
working directory.
git clean
git clean -f
git clean -df
...
Example
touch somefile.txt
git reset --hard
git clean -df
Workshop 12
Create new file call index.php and try to use git clean
to delete untracked file.
Git Branches
First, we'll take a look at creating branches, which is like
requesting a new project history.
Git branch
The git branch command lets you create, list, rename, and
delete branches.
git branch
git branch <branch>
Example
git branch experiment
Master

Experiment
Workshop 12
Create new branch call issue123 for your current revision.
use git branch to show branches.
Git checkout
The git checkout command lets you navigate between the
branches created by git branch.
git checkout <existing...
Example
git branch experiment
git checkout experiment

Experiment

Master
Workshop 13
Change to branch issue123 add some file and commit to
this branch then change to master to compare.
Git merge
The git merge command lets you take the independent
lines of development created by git branch and
integrate the...
Example
git merge experiment
git branch -d experiment
Experiment

Experiment

Master

Master
Workshop 14
Change to branch issue123 edit some file and commit
then change to master branch and merge issue123 to
master ...
Rewriting Git History
Git also designed to give you total control over your
development workflow, letting you define exact...
Git rebase
Rebasing is the process of moving a branch to a new base
commit.
git rebase <base>
Example
feature
feature
feature

master
master
Example
# Start a new feature
git checkout -b feature master
# Edit files
git commit -a -m "Start developing a feature"
gi...
Example
# Merge back into master
git checkout feature
git rebase master
# Merge back into master
git checkout master
git m...
Git rebase -i
Running git rebase with the -i flag begins an interactive
rebasing session.
git rebase -i <base>
Example
# Start a new feature
git checkout -b feature master
# Edit files
git commit -a -m "Start developing a feature"
gi...
Example
# Merge back into master
git checkout feature
git rebase -i master
# Config merge method in change log
# Merge bac...
Workshop 15
● Initial git repo
○ add blank readme.txt and index.php
● Branch new feature from master call feature then
○ u...
Git reflog
Git keeps track of updates to the tip of branches using a
mechanism called reflog.
git reflog
git reflog --rela...
Example
git reflog
12aeb71 HEAD@{0}: merge feature: Fast-forward
df6c71f HEAD@{1}: reset: moving to df6c71f
12aeb71 HEAD@{...
Example
git reflog --relative-date
12aeb71 HEAD@{9 minutes ago}: merge feature: Fast-forward
df6c71f HEAD@{11 minutes ago}...
Workshop 16
Use git reflog to see changes and reset to any commit
revision.
Remote Repositories
Git’s collaboration model, which gives every developer their
own copy of the repository, complete with...
Quick Git Server (1)
# install ssh server and git
sudo apt-get install openssh-server
sudo apt-get install git
# add git u...
Quick Git Server (2)
# Make git repo dir at /git for easy access
sudo mkdir /git
sudo chown git:git /git
# Make share repo...
Workshop 17
● Setup git server add following users (or your team)
○ John
○ Jessie
○ Jessica
● Create share project called ...
Git remote
The git remote command lets you create, view, and delete
connections to other repositories.
git remote
git remo...
Example
# on John’s computer
cd myproject
git init
git add .
git commit -m 'initial commit'
git remote add origin git@gits...
Example
# on John’s computer
git clone git@gitserver:/git/project.git myproject
cd myproject
touch README
git add README
g...
Workshop 18
● Lets John first commit following files to repository
○ README
○ LICENSE
○ CONTRIBUTOR
● Another users clone ...
Git fetch
The git fetch command imports commits from a remote
repository into your local repo.
git fetch <remote>
git fetc...
Example
cd myproject
git init
git remote add origin git@gitserver:/git/project.git
git fetch origin
git checkout master
gi...
Workshop 19
● Lets Jessica create feature branch and commit to
repository
● Another users fetch feature branch from reposi...
Git pull
The git pull command merge upstream changes into your
local repository, it’s combined git fetch and git merge in
...
Example
cd myproject
git init
git remote add origin git@gitserver:/git/project.git
git checkout master
git pull --rebase o...
Workshop 20
Create working repository in machine and add remote
repository and use git pull to merge remote repository to
...
Git push
The git pull command merge upstream changes into your
local repository, it’s combined git fetch and git merge in
...
Example
echo “this is a readme” > README
git commit -am “update readme”
git push origin master

origin

John’s
Repo

Centr...
Workshop 21
Create working repository in machine and add remote
repository and use git pull to merge remote repository to
...
Git Workflows
The possible workflows can make it hard to know where to
begin when implementing Git in the workplace. These...
Centralized Workflow
The Centralized Workflow uses a
central repository to serve as the
single point-of-entry for all chan...
Example
# Initialized central repository on server
git init --bare /part/to/repo.git
Example
# developer clone from repository
git clone ssh://user@host/path/to/repo.git
Example
# John done his feature
git status
git add
git commit
git push origin master
Example
# Jessie try to push her feature
git push origin master
# Git will refuse the request with a rather
verbose error ...
Example
# Jessie rebase on top of John’s commit
git pull --rebase origin master
Example
# Jessie and John working on relate feature
rebasing process will generate conflicts
git status
git add <somefile>...
Example
# Jessie successfully push her feature
git push origin master
Workshop 22
●
●
●
●

Group 2-3 people
Setup your team git repository server.
Use centralized workflow to fix code in sampl...
Feature Branch Workflow
the Centralized Workflow, adding feature branches to your
development process is an easy way to en...
Feature

Master

Issue #123
Example
# clone from repository
git clone ssh://user@host/path/to/repo.git
Example
# Jessie branch new feature
git checkout -b jessie-feature master

git status
git add <some-file>
git commit
Example
# Jessie push her feature
git push -u origin jessie-feature
Example
# Jessie push her feature to remote repository
git push
Example
# John is ready to accept the pull request,
someone needs to merge the feature into the
stable project (this can b...
Workshop 23
●
●
●
●

Group 2-3 people
Setup your team git repository server.
Use feature branch workflow to fix code in sa...
Git Flow Workflow
The Gitflow Workflow defines a strict branching model
designed around the project release. While somewha...
v0.1

Master

Developer

Feature

v0.2

v0.3

v0.4
v0.1

Master

Developer

Feature

Release

v0.2

v0.3

v1.0
Example
# Jessie create development branch from master
git checkout -b develop master
git push -u origin developer
Example
# John add new feature
git checkout -b feature developer
git status
git add <file>
git commit
Example
# John ready to merge feature to development
git pull origin developer
git checkout developer
git merge feature
gi...
Example
# Jessie prepare release
git checkout -b release-1.0 develop
git checkout master
git merge release-1.0
git tag -a ...
Example
# Discover some bugs
git checkout -b issue-123 master
# Fix some bugs
git checkout master
git merge issue-123
git ...
Workshop 24
●
●
●
●

Group 2-3 people
Setup your team git repository server.
Use git flow workflow to fix code in sample a...
Forking Workflow
The Forking Workflow is fundamentally different than the other
workflows Instead of using a single server...
Example
Project maintainer initialized official repository
git init --bare /part/to/repo.git

Official
Example
Another developers clone (fork) official repository.
git clone user@gitserver/user/repo.git

John

Official

Jessi...
Example
Developer clone their own repository
git remote add upstream user@gitserver/user/repo.git
Example
Developer work their features
git checkout -b feature
# Edit some code
git commit -am “add feature”
Example
Developer publish their features
git push origin feature
Example
Project maintainer integrate their feature
1. Inspect the code
2. Pull code in local repository and
manually merge...
Example
Developers synchronized with official
repository, the main codebase has moved
forward, other developers should
syn...
Workshop 25
●
●
●
●

Group 2-3 people
Setup your own git repository servers.
Use forking workflow to fix code in sample ap...
Workshop 26
Discussion in your developer team, choose workflow or mix and match
your developer team. Present your idea, wo...
Future study
●
●
●
●
●

Git GUI Client
Git & GitHub Foundations Training
Git Documentation
Git Tutorial
Pro Git Book
Collaborative development with Git | Workshop
Collaborative development with Git | Workshop
Upcoming SlideShare
Loading in …5
×

Collaborative development with Git | Workshop

1,285 views

Published on

Collaborative development with Git Workshop

Published in: Technology
  • Be the first to comment

Collaborative development with Git | Workshop

  1. 1. Collaborative development with Git Anuchit Chalothorn anuchit@redlinesoft.net
  2. 2. Git Workshop ● ● ● ● ● ● ● Overview Git Basics Undo Git Changes Git Branches Rewriting Git History Git Remote Repository Git Workflow
  3. 3. Overview Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. A VCS allows you to: ● ● ● ● revert files back to a previous state revert the entire project back to a previous state review changes made over time see who last modified something
  4. 4. Local
  5. 5. Centralized
  6. 6. Distributed
  7. 7. History of Git Linux Kernel was use DVCS call BitKeeper, proprietary software but in 2005 the company behind BitKeeper brokedown and tool’s free-of-charge was revoked. The Linux development community develop their own tool.
  8. 8. Goal of Git ● Speed ● Simple design ● Strong support for non-linear development (1000+ for parallel branches) ● Fully distributed ● Able handle a large project (data and size)
  9. 9. Git Basic Git basic tutorial provide the important commands to work with Git
  10. 10. Get Git Download git at http://git-scm.com/downloads choose your os version :)
  11. 11. Workshop 1 Download Git and install to your machine, after install try to use git command.
  12. 12. Git config The git config command lets you configure your Git installation (or an individual repository) from the command line.
  13. 13. Git config user.name Define the author name to be used for all commits in the current repository. Typically, you’ll want to use the -global flag to set configuration options for the current user. git config --global user.name <name>
  14. 14. Git config user.email Define the author email to be used for all commits by the current user. git config --global user.email <email>
  15. 15. Git config core.editor Define the text editor used by commands like git commit for all users on the current machine. eg; vi git config --system core.editor <editor>
  16. 16. Git config core.autocrlf Config the line ending for your operating system git config --global core.autocrlf true git config --global core.autocrlf input
  17. 17. Git config color.ui Config the line color for git message git config --global color.ui auto
  18. 18. Workshop 2 Setup Git config to your profile; name, email, line break, ui auto color and choose your favorite text editor.
  19. 19. Git init The git init command creates a new Git repository. git init git init <directory>
  20. 20. Git init --bare Shared repositories should always be created with the -bare flag Bare Non Bare Non Bare Non Bare
  21. 21. Example cd /repo git init --bare my-project.git my-project.git
  22. 22. Workshop 3 Create git repositories call myrepo as working repository and master-proj as shared repository, see what is difference of two repository.
  23. 23. Git clone The git clone command copies an existing Git repository. git clone <repo> git clone <repo> <directory> Origin Working Copy
  24. 24. Collaboration Central Repo to Working Copy Collaboration Repo to Repo Collaboration SVN Repo Git Repo Git Repo Git Repo
  25. 25. Example git clone ssh://username@example.com/repo/my-project.git cd my-project example.com/repo/my-project.git local repo
  26. 26. Workshop 4 create local git repo call master-proj and clone master-proj to myproj and create a blank file called README
  27. 27. Git add The git add command adds a change in the working directory to the staging area. git add <file> git add <directory>
  28. 28. Example git add . git commit Add Commit git add hello.php git commit Working Directory Staged Snapshot Committed History
  29. 29. Workshop 5 Add README to your repository
  30. 30. Git commit The git commit command commits the staged snapshot to the project history. git commit -m "<message>"
  31. 31. Example git add hello.php git commit hello.php hello.php hello.php
  32. 32. Workshop 6 Commit all change to your repository, create snapshot to project history.
  33. 33. Git status The git status command displays the state of the working directory and the staging area. git status
  34. 34. Workshop 7 Use git status after add, edit file or commit file.
  35. 35. Git log The git log command displays committed snapshots. It lets you list the project history, filter it, and search for specific changes.
  36. 36. Example Git Status git log Git Log git log -n <limit> git log --oneline git log --stat git log --author="<pattern>" git log --grep="<pattern>" git log <since>..<until> Working Directory Staged Snapshot Committed History
  37. 37. Workshop 8 Use git log to see the committed history of your repository.
  38. 38. Undo Git Changes Working with previous revisions of your software project.
  39. 39. Git checkout The git checkout command serves three distinct functions: checking out files, checking out commits, and checking out branches. git checkout master git checkout <commit> <file> git checkout <commit>
  40. 40. Example git log --oneline git checkout a1e8fb5 a1e8fb5 Master
  41. 41. Example git checkout master git checkout a1e8fb5 hello.py Add Working Directory Commit Staged Snapshot Committed History
  42. 42. Workshop 9 Add 2 lines in in readme.txt and commit change to your repository, check revision form git log and try to change to the first state and try to change state back to the latest revision (master)
  43. 43. Git revert The git revert command undoes a committed snapshot. it the ‘safe’ way to undo. git revert <commit>
  44. 44. Example git commit -am “update readme” git revert 15df9b6 15df9b6
  45. 45. Workshop 10 Add 1 lines in in readme.txt and commit change to your repository, check revision form git log and try to revert to previous version by using git revert
  46. 46. Git reset The git reset command undo changes in dangerous method — it is a permanent undo. git reset <file> git reset <commit> git reset --hard git reset --hard <commit>
  47. 47. Example git commit -am “update readme” git reset --hard 15df9b6
  48. 48. Workshop 11 Add 1 lines in in readme.txt and commit change to your repository, check revision form git log and try to revert to previous version by using git reset
  49. 49. Git clean The git clean command removes untracked files from your working directory. git clean git clean -f git clean -df git clean -xf
  50. 50. Example touch somefile.txt git reset --hard git clean -df
  51. 51. Workshop 12 Create new file call index.php and try to use git clean to delete untracked file.
  52. 52. Git Branches First, we'll take a look at creating branches, which is like requesting a new project history.
  53. 53. Git branch The git branch command lets you create, list, rename, and delete branches. git branch git branch <branch>
  54. 54. Example git branch experiment Master Experiment
  55. 55. Workshop 12 Create new branch call issue123 for your current revision. use git branch to show branches.
  56. 56. Git checkout The git checkout command lets you navigate between the branches created by git branch. git checkout <existing-branch> git checkout -b <new-branch>
  57. 57. Example git branch experiment git checkout experiment Experiment Master
  58. 58. Workshop 13 Change to branch issue123 add some file and commit to this branch then change to master to compare.
  59. 59. Git merge The git merge command lets you take the independent lines of development created by git branch and integrate them into a single branch.
  60. 60. Example git merge experiment git branch -d experiment Experiment Experiment Master Master
  61. 61. Workshop 14 Change to branch issue123 edit some file and commit then change to master branch and merge issue123 to master branch then delete issue123 branch.
  62. 62. Rewriting Git History Git also designed to give you total control over your development workflow, letting you define exactly what your project history looks like; however, it also creates the potential to lose commits.
  63. 63. Git rebase Rebasing is the process of moving a branch to a new base commit. git rebase <base>
  64. 64. Example feature feature feature master master
  65. 65. Example # Start a new feature git checkout -b feature master # Edit files git commit -a -m "Start developing a feature" git checkout master # Edit files git commit -a -m "Fix security hole"
  66. 66. Example # Merge back into master git checkout feature git rebase master # Merge back into master git checkout master git merge feature
  67. 67. Git rebase -i Running git rebase with the -i flag begins an interactive rebasing session. git rebase -i <base>
  68. 68. Example # Start a new feature git checkout -b feature master # Edit files git commit -a -m "Start developing a feature" git checkout master # Edit files git commit -a -m "Fix security hole"
  69. 69. Example # Merge back into master git checkout feature git rebase -i master # Config merge method in change log # Merge back into master git checkout master git merge feature
  70. 70. Workshop 15 ● Initial git repo ○ add blank readme.txt and index.php ● Branch new feature from master call feature then ○ update index.php with some function ● Change branch to master ○ update readme.txt ● Change branch to feature ○ merge changes from base ● Change branch to master ○ merge feature to master
  71. 71. Git reflog Git keeps track of updates to the tip of branches using a mechanism called reflog. git reflog git reflog --relative-date
  72. 72. Example git reflog 12aeb71 HEAD@{0}: merge feature: Fast-forward df6c71f HEAD@{1}: reset: moving to df6c71f 12aeb71 HEAD@{2}: merge feature: Fast-forward df6c71f HEAD@{3}: checkout: moving from feature to master
  73. 73. Example git reflog --relative-date 12aeb71 HEAD@{9 minutes ago}: merge feature: Fast-forward df6c71f HEAD@{11 minutes ago}: reset: moving to df6c71f 12aeb71 HEAD@{13 minutes ago}: merge feature: Fast-forward df6c71f HEAD@{14 minutes ago}: checkout: moving from feature to master
  74. 74. Workshop 16 Use git reflog to see changes and reset to any commit revision.
  75. 75. Remote Repositories Git’s collaboration model, which gives every developer their own copy of the repository, complete with its own local history and branch structure. Instead of committing a changeset from a working copy to the central repository, Git lets you share entire branches between repositories.
  76. 76. Quick Git Server (1) # install ssh server and git sudo apt-get install openssh-server sudo apt-get install git # add git user for all users access sudo adduser --group sudo git # then import user’s public key to .ssh/authorized_keys sudo su git cd mkdir .ssh cat id_rsa.john.pub >> .ssh/authorized_keys
  77. 77. Quick Git Server (2) # Make git repo dir at /git for easy access sudo mkdir /git sudo chown git:git /git # Make share repo called project.git sudo su git cd /git git init --bare project.git # Disable git user to ssh to server sudo usermod -s /usr/bin/git-shell git
  78. 78. Workshop 17 ● Setup git server add following users (or your team) ○ John ○ Jessie ○ Jessica ● Create share project called webapps
  79. 79. Git remote The git remote command lets you create, view, and delete connections to other repositories. git remote git remote add <name> <url> origin Central Repo git remote rm <name> John’s Repo Jess’s Repo
  80. 80. Example # on John’s computer cd myproject git init git add . git commit -m 'initial commit' git remote add origin git@gitserver:/git/project.git git push origin master
  81. 81. Example # on John’s computer git clone git@gitserver:/git/project.git myproject cd myproject touch README git add README git commit -am “add readme” git push origin master
  82. 82. Workshop 18 ● Lets John first commit following files to repository ○ README ○ LICENSE ○ CONTRIBUTOR ● Another users clone repository to their machine
  83. 83. Git fetch The git fetch command imports commits from a remote repository into your local repo. git fetch <remote> git fetch <remote> <branch>
  84. 84. Example cd myproject git init git remote add origin git@gitserver:/git/project.git git fetch origin git checkout master git merge origin/master
  85. 85. Workshop 19 ● Lets Jessica create feature branch and commit to repository ● Another users fetch feature branch from repository to their machine
  86. 86. Git pull The git pull command merge upstream changes into your local repository, it’s combined git fetch and git merge in single command. git pull <remote> git pull --rebase <remote>
  87. 87. Example cd myproject git init git remote add origin git@gitserver:/git/project.git git checkout master git pull --rebase origin
  88. 88. Workshop 20 Create working repository in machine and add remote repository and use git pull to merge remote repository to working repository.
  89. 89. Git push The git pull command merge upstream changes into your local repository, it’s combined git fetch and git merge in single command. git push git push <remote>
  90. 90. Example echo “this is a readme” > README git commit -am “update readme” git push origin master origin John’s Repo Central Repo Jess’s Repo
  91. 91. Workshop 21 Create working repository in machine and add remote repository and use git pull to merge remote repository to working repository. Edit some file and push to remote repository
  92. 92. Git Workflows The possible workflows can make it hard to know where to begin when implementing Git in the workplace. These workflows are designed to be guidelines rather than concrete rules.
  93. 93. Centralized Workflow The Centralized Workflow uses a central repository to serve as the single point-of-entry for all changes to the project. Instead of trunk, the default development branch is called master and all changes are committed into this branch.
  94. 94. Example # Initialized central repository on server git init --bare /part/to/repo.git
  95. 95. Example # developer clone from repository git clone ssh://user@host/path/to/repo.git
  96. 96. Example # John done his feature git status git add git commit git push origin master
  97. 97. Example # Jessie try to push her feature git push origin master # Git will refuse the request with a rather verbose error message. She needs to pull John’s updates into her repository, integrate them with her local changes, and then try again.
  98. 98. Example # Jessie rebase on top of John’s commit git pull --rebase origin master
  99. 99. Example # Jessie and John working on relate feature rebasing process will generate conflicts git status git add <somefile> git rebase --continue # If you get to this point and you have no idea what’ s going on, don’t panic. Just execute following command and you’ll be right back. git rebase --abort
  100. 100. Example # Jessie successfully push her feature git push origin master
  101. 101. Workshop 22 ● ● ● ● Group 2-3 people Setup your team git repository server. Use centralized workflow to fix code in sample application. Sample application can pull from https://github. com/anoochit/git-workshop.git
  102. 102. Feature Branch Workflow the Centralized Workflow, adding feature branches to your development process is an easy way to encourage collaboration and streamline communication between developers.
  103. 103. Feature Master Issue #123
  104. 104. Example # clone from repository git clone ssh://user@host/path/to/repo.git
  105. 105. Example # Jessie branch new feature git checkout -b jessie-feature master git status git add <some-file> git commit
  106. 106. Example # Jessie push her feature git push -u origin jessie-feature
  107. 107. Example # Jessie push her feature to remote repository git push
  108. 108. Example # John is ready to accept the pull request, someone needs to merge the feature into the stable project (this can be done by either John or Jessie): git checkout master git pull git pull origin jessie-feature git push
  109. 109. Workshop 23 ● ● ● ● Group 2-3 people Setup your team git repository server. Use feature branch workflow to fix code in sample application. Sample application can pull from https://github. com/anoochit/git-workshop.git
  110. 110. Git Flow Workflow The Gitflow Workflow defines a strict branching model designed around the project release. While somewhat more complicated than the Feature Branch Workflow, this provides a robust framework for managing larger projects.
  111. 111. v0.1 Master Developer Feature v0.2 v0.3 v0.4
  112. 112. v0.1 Master Developer Feature Release v0.2 v0.3 v1.0
  113. 113. Example # Jessie create development branch from master git checkout -b develop master git push -u origin developer
  114. 114. Example # John add new feature git checkout -b feature developer git status git add <file> git commit
  115. 115. Example # John ready to merge feature to development git pull origin developer git checkout developer git merge feature git push git branch -d feature
  116. 116. Example # Jessie prepare release git checkout -b release-1.0 develop git checkout master git merge release-1.0 git tag -a 0.1 -m "Initial public release" master git push --tags git branch -d release-1.0
  117. 117. Example # Discover some bugs git checkout -b issue-123 master # Fix some bugs git checkout master git merge issue-123 git push git branch -d issue-123
  118. 118. Workshop 24 ● ● ● ● Group 2-3 people Setup your team git repository server. Use git flow workflow to fix code in sample application. Sample application can pull from https://github. com/anoochit/git-workshop.git
  119. 119. Forking Workflow The Forking Workflow is fundamentally different than the other workflows Instead of using a single server-side repository to act as the “central” codebase, it gives every developer a server-side repository. Each contributor has not one, but two Git repositories: a private local and a public server-side.
  120. 120. Example Project maintainer initialized official repository git init --bare /part/to/repo.git Official
  121. 121. Example Another developers clone (fork) official repository. git clone user@gitserver/user/repo.git John Official Jessie
  122. 122. Example Developer clone their own repository git remote add upstream user@gitserver/user/repo.git
  123. 123. Example Developer work their features git checkout -b feature # Edit some code git commit -am “add feature”
  124. 124. Example Developer publish their features git push origin feature
  125. 125. Example Project maintainer integrate their feature 1. Inspect the code 2. Pull code in local repository and manually merge git fetch user@gitserver/user/repo.git feature # Inspect code git checkout master git merge FETCH_HEAD
  126. 126. Example Developers synchronized with official repository, the main codebase has moved forward, other developers should synchronize with the official repository git pull upstream master
  127. 127. Workshop 25 ● ● ● ● Group 2-3 people Setup your own git repository servers. Use forking workflow to fix code in sample application. Sample application can pull from https://github. com/anoochit/git-workshop.git
  128. 128. Workshop 26 Discussion in your developer team, choose workflow or mix and match your developer team. Present your idea, workflow to another groups
  129. 129. Future study ● ● ● ● ● Git GUI Client Git & GitHub Foundations Training Git Documentation Git Tutorial Pro Git Book

×