Top Banner
Git Magic: Versioning Files Like a Boss Tommy MacWilliam [email protected]
81

Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam [email protected]. Today ...

Jun 03, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Git Magic:Versioning Files

Like a Boss

Tommy [email protected]

Page 2: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Today

• setting up like a boss

• basic git like a boss

• using branches like a boss

• reverting changes like a boss

• collaborating like a boss

Page 3: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Git is...

• “Git is distributed version control system focused on speed, effectivity and real-world usability on large projects”

• “distributed development”

• “non-linear development”

• “efficient handling of large projects”

• “cryptographic authentication of history”

Page 4: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Git is...

Awesome.

Page 6: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Installing Git

root@appliance(~):  gitusage:  git  [-­‐-­‐version]  [-­‐-­‐exec-­‐path[=<path>]]  [-­‐-­‐html-­‐path]                      [-­‐p|-­‐-­‐paginate|-­‐-­‐no-­‐pager]  [-­‐-­‐no-­‐replace-­‐objects]                      [-­‐-­‐bare]  [-­‐-­‐git-­‐dir=<path>]  [-­‐-­‐work-­‐tree=<path>]                      [-­‐c  name=value]  [-­‐-­‐help]                      <command>  [<args>]

Page 7: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git config --globaluser.name “Tommy MacWilliam”

Page 9: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git init

Page 10: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Commits

• snapshots of your project

• what your files look like at a given point

• single event in project history

Page 11: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git status

Page 12: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git add index.php

Page 13: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git add --all

Page 14: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git add --all

git commit

Page 15: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Commit Messages

• short message describing what’s different in this commit

• add any new features?

• fix some bugs?

• break anything?

Page 16: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Commit Messages

Page 17: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Commit Messages

• http://www.commitlogsfromlastnight.com/

Page 18: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git commit -a -m “oh hi, mark!”

Page 19: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git log

Page 20: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeebab117b892fa42002146e4c62be676bc4621

b43b0ad1e8108e7ab870d7a54feac93ae8b8600e

461476587780aa9fa5611ea6dc3912c146a91760

Page 21: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeebab117b892fa42002146e4c62be676bc4621

b43b0ad1e8108e7ab870d7a54feac93ae8b8600e

461476587780aa9fa5611ea6dc3912c146a91760

CommitID

HEAD

Page 22: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git show

Page 23: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git show b43b0

Page 24: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git initgit statusgit add

git commitgit log

git show

Page 25: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Branches

• non-linear development process

• changes on one branch do not affect other branches

• crazy idea? make a branch

• didn’t work? delete the branch

• all done? merge the branch

Page 26: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git branch test

Page 27: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git checkout test

git branch test

Page 28: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147

master

Page 29: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147

f862f

36223

master test

git branch test

Page 30: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git merge

Page 31: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147

f862f

36223

master test

87aedgit merge

Page 32: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Like a boss.

Page 33: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git branch -D test

Page 34: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Merge vs. Rebase

• git merge: new commit, non-linear history

• git rebase: no new commit, linear history

Page 35: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147

f862f

36223

master test

git branch test

Page 36: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147 f862f 36223

master

git rebase

Page 37: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Conflicts

• change in one branch can be incompatible with another

• git tries to resolve, but sometimes cannot

Page 38: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Conflict Resolution

int  main(int  argc,  char**  argv)  {        printf(“you  invited  all  my  friends”);}

int  main(int  argc,  char**  argv)  {        printf(“good  thinking!”);}

Page 39: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Conflict Resolution

int  main(int  argc,  char**  argv)  {        <<<<<<<  HEAD:file.c        printf(“you  invited  all  my  friends”);        =======        printf(“good  thinking!”);        >>>>>>>  f862f:file.c}

Page 40: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git checkoutgit branch

git mergegit rebase

Page 41: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git commit -m “oops.”

Page 42: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git revert b43b0

Page 43: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147

Page 44: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

5aeeb

b43b0

46147

42bb4(b43b0)

git revert b43b0

Page 45: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

File-Specific Reverts

• git checkout -- index.php

• replace with version in index

• git checkout b43b0 index.php

• replace with version in commit b43b0

Page 46: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git reset --hard b43b0

Page 47: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git reflog

Page 48: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git bisect

Page 49: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Like a boss.

Page 50: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git revertgit reset

git checkoutgit bisect

Page 51: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

“distributed development”

Page 52: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

ssh-keygen

Page 53: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...
Page 56: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git push origin master

git remote add origin [email protected]:cs50/project

Page 58: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git pull origin master

Page 59: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git pull --rebase

Page 60: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  initgit  add  -­‐-­‐allgit  commit

Page 61: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  remote  add  origin  urlgit  push  origin  master

Page 62: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  remote  add  origin  urlgit  push  origin  master

Page 63: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  clone  url

Page 64: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  clone  url

Page 65: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  add  -­‐-­‐allgit  commit

Page 66: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  push  origin  master

Page 67: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  push  origin  master

Page 68: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  pull  origin  master

Page 69: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Alice Bob

git  pull  origin  master

Page 70: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git branch -a

Page 71: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git checkout -b origin/test

Page 72: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

scp ~/.ssh/id_rsa.pubhost:~/.ssh/authorized_keys

Page 73: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git init --bare

Page 75: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git push live master

git remote add [email protected]:~/project

Page 76: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Hooks• applypatch-msg

• commit-msg

• post-commit

• post-receive

• post-update

• post-applypatch

• pre-commit

• pre-commit-msg

• pre-rebase

• update

Page 77: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

#!/bin/shGIT_WORK_TREE=/home/tmacwill/public_html  \git  checkout  -­‐fchmod  -­‐R  644  /home/tmacwill/public_html/*.htmlchmod  -­‐R  600  /home/tmacwill/public_html/*.php

post-receive

Page 78: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

Like a boss.

Page 79: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git clonegit push

git remote git pull

Page 80: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

More Resources

• http://progit.org/book/

• http://book.git-scm.com/

• http://gitref.org/

• http://git-scm.com/documentation

Page 81: Git Magic: Versioning Files Like a Bossd2o9nyf4hwsci4.cloudfront.net/.../Git_magic.pdf · Git Magic: Versioning Files Like a Boss Tommy MacWilliam tmacwilliam@cs50.net. Today ...

git commit -a -m “thanks!”