git for programmers - 17. slon - sedemnajsti...

36
Git for Programmers Primož Gabrijelčič http://primoz.gabrijelcic.org

Upload: dangtuyen

Post on 10-Feb-2018

260 views

Category:

Documents


16 download

TRANSCRIPT

Page 1: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Git for Programmers

Primož Gabrijelčič

http://primoz.gabrijelcic.org

Page 2: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Kudos

Page 3: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Pro Git

• Scott Chacon and Ben Straub

• Pro Git

• https://git-scm.com/book/en/v2

• Creative Commons Attribution Non Commercial Share Alike 3.0

Page 4: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

A little bit of history

Page 5: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Version Control Systems

• File backups• __history

• Local VCS• database of changes

• RCS, SCCS

• Centralised VCS• developer checks out project

• CVS, Subversion, Perforce, Visual SourceSafe

• Distributed VCS• Developer mirrors the repository

• BitKeeper, Git, Mercurial, Darcs

Page 6: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Git

Page 7: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Git

• Mini filesystem

• Stream of snapshots• Only changed files are stored

• Almost all operations are local• Repository is mirrored locally

• Checksums• SHA-1

• File name = data hash

Page 8: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

File states

• Committed

• Modified

• Staged• Can be skipped

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 9: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Local configuration

• git config --list

• git config --global core.editor “'C:\Program Files (x86)\PSPadeditor\PSPad.exe'“

• git config --edit --global

• git help config

• c:\Users\gabr\.gitconfig

Page 10: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Whitespace and newlines

• git config --global core.autocrlf true• commit: CRLF -> LF

• checkout: LF -> CRLF

• for Windows-only projects• git config --global core.autocrlf false

• CRLF stays CRLF

• core.whitespace• LF-delimited

Page 11: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Repositories

Page 12: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Getting a repository

• Initializing new repository• cd project_folder

• git init

• git add files

• git commit –m “initial commit”

• Clone existing repository• git clone <url>

• http://, https://, ssh://, git://

Page 13: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Files

• git status

• git add <mask>

• git diff [--staged]

• git commit [-a] [-m “message”]

• git rm [--cached]

• git mv <from> <to>• git rm + git add

• git commit

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 14: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

.gitignore

• https://github.com/github/gitignore/blob/master/Delphi.gitignore

Page 15: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Changelog

• git log [-p] [--stat] [--graph]

Page 16: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Ooops!

• git commit --amend• AKA Ooops, I forgot that file!

• git reset HEAD <file>• AKA ‘unstage’

• git config --global alias.unstage “reset HEAD –”

Page 17: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

RemotesNo programmer is an island

Page 18: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Remotes

• git clone

• git remote [-v]• origin = name for the default remote repository

• perfectly valid: more than one remote• git remote add <remote_name> <url>

Page 19: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Pull & Push

• git fetch [<remote_name>]• Retrieves the data you don’t yet have

• New data goes to the repository, not to your working area

• git pull• fetch + merge

• git push [<remote_name>]

Page 20: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Branching

Page 21: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Branches

• A branch is a pointer into commit tree

• ‘git init’ creates ‘master’ branch

• git branch <branch_name>

• git log --oneline --decorate

• git checkout <branch_name>

• git checkout --b <new_branch>

• git branch [--merged]

• git branch --d <branch_name>

• branch = lightweight• A single file containing 40-char SHA-1 checksum of the commit

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 22: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Merging

• You always work on a branch that is checked out

• git merge <branch_name>

• Resolving merge conflicts• <<<<<<< HEADChanged in the master.=======This is a branch.>>>>>>> branch1

• git mergetool

• git commit

Page 23: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Types of branches

• Long-Running branches• master/develop

• feature

• git-flow

• Topic branches• Short-lived

• A fix for an issue = a branch

Page 24: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Remote branches

• origin/master

• git fetch <remote>

• git push <remote> <branch>

• git config push.default current

• git checkout --b <new_branch>

• git push --origin <new_branch>

• git push

Page 25: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Tracking branch

• git checkout --b <new_branch> <remote>/<remote_branch>

• git checkout --track <remote>/<remote_branch>

• git checkout <remote_branch>

• git branch –u <remote>/<remote_branch>

• git pull

Page 26: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Rebase

• Take changes committed on one branch …• … and reply them on another one.

• git checkout experimental

• git rebase master

• Do not rebase commits that exist outside your repository.

Page 27: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

3-branch rebase

• git rebase [--onto <branch>] <basebr> <topicbr>

• git rebase --onto master server client

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 28: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Workflows

Page 29: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

GitFlow

Source: https://raw.githubusercontent.com/Voronenko/gitflow-release/master/images/git-workflow-release-cycle-4maintenance.png

Page 30: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

GitHub Flow

Source: https://guides.github.com/introduction/flow/

Page 31: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Tools

Page 32: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Tools

• Git for Windows

• TortoiseGit

• GitHub Desktop

• GitKraken

Page 33: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Resources

Page 34: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Resources

• https://en.wikipedia.org/wiki/Version_control

• https://git-scm.com

• https://github.com

• https://bitbucket.org

• https://git-for-windows.github.io

• https://git-scm.com/downloads/guis

• https://desktop.github.com

• https://www.gitkraken.com

• https://tortoisegit.org

• https://git-scm.com/book/en/v2

• https://wiert.me/2016/07/14/git-cheat-sheet/

Page 35: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Workflows

• http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/

• https://yakiloo.com/getting-started-git-flow/

• https://github.com/nvie/gitflow

• https://www.git-tower.com/learn/git/ebook/en/command-line/advanced-topics/git-flow

• http://danielkummer.github.io/git-flow-cheatsheet/

• http://endoflineblog.com/gitflow-considered-harmful

• https://guides.github.com/introduction/flow/

Page 36: Git for Programmers - 17. slon - Sedemnajsti slon.com17slon.com/.../itdevcon2016/GitForProgrammers.pdf · Git for Programmers ... • • Questions? Title: Git for Programmers

Questions?