Git Slides

57
Intro Git Example Advices Using Git Matthieu Moy [email protected] 2009-2010 Matthieu Moy ([email protected]) Git 2009-2010 < 1 / 19 >

Transcript of Git Slides

Page 1: Git Slides

Intro Git Example Advices

Using Git

Matthieu Moy

[email protected]

2009-2010

Matthieu Moy ([email protected]) Git 2009-2010 < 1 / 19 >

Page 2: Git Slides

Intro Git Example Advices

Outline

1 Revision Control System

2 Git: Basic Principles

3 An Example Using Git

4 Advices Using Git

Matthieu Moy ([email protected]) Git 2009-2010 < 2 / 19 >

Page 3: Git Slides

Intro Git Example Advices

Backups: The Old Good TimeBasic problems:

I “Oh, my disk crashed.” / “Someone has stolen my laptop!”I “@#%!!, I’ve just deleted this important file!”I “Oops, I introduced a bug a long time ago in my code, how can I

see how it was before?”

Historical solutions:

I Replicate:$ cp -r ~/project/ ~/backup/

I Keep history:$ cp -r ~/project/ ~/backup/project-2006-10-4

I Keep a description of history:$ echo "Description of current state" > \

~/backup/project-2006-10-4/README.txt

Matthieu Moy ([email protected]) Git 2009-2010 < 3 / 19 >

Page 4: Git Slides

Intro Git Example Advices

Backups: The Old Good TimeBasic problems:

I “Oh, my disk crashed.” / “Someone has stolen my laptop!”I “@#%!!, I’ve just deleted this important file!”I “Oops, I introduced a bug a long time ago in my code, how can I

see how it was before?”Historical solutions:

I Replicate:$ cp -r ~/project/ ~/backup/

I Keep history:$ cp -r ~/project/ ~/backup/project-2006-10-4

I Keep a description of history:$ echo "Description of current state" > \

~/backup/project-2006-10-4/README.txt

Matthieu Moy ([email protected]) Git 2009-2010 < 3 / 19 >

Page 5: Git Slides

Intro Git Example Advices

Backups: The Old Good TimeBasic problems:

I “Oh, my disk crashed.” / “Someone has stolen my laptop!”I “@#%!!, I’ve just deleted this important file!”I “Oops, I introduced a bug a long time ago in my code, how can I

see how it was before?”Historical solutions:

I Replicate:$ cp -r ~/project/ ~/backup/

I Keep history:$ cp -r ~/project/ ~/backup/project-2006-10-4

I Keep a description of history:$ echo "Description of current state" > \

~/backup/project-2006-10-4/README.txt

Matthieu Moy ([email protected]) Git 2009-2010 < 3 / 19 >

Page 6: Git Slides

Intro Git Example Advices

Backups: The Old Good TimeBasic problems:

I “Oh, my disk crashed.” / “Someone has stolen my laptop!”I “@#%!!, I’ve just deleted this important file!”I “Oops, I introduced a bug a long time ago in my code, how can I

see how it was before?”Historical solutions:

I Replicate:$ cp -r ~/project/ ~/backup/

I Keep history:$ cp -r ~/project/ ~/backup/project-2006-10-4

I Keep a description of history:$ echo "Description of current state" > \

~/backup/project-2006-10-4/README.txt

Matthieu Moy ([email protected]) Git 2009-2010 < 3 / 19 >

Page 7: Git Slides

Intro Git Example Advices

Backups: The Old Good TimeBasic problems:

I “Oh, my disk crashed.” / “Someone has stolen my laptop!”I “@#%!!, I’ve just deleted this important file!”I “Oops, I introduced a bug a long time ago in my code, how can I

see how it was before?”Historical solutions:

I Replicate:$ cp -r ~/project/ ~/backup/

I Keep history:$ cp -r ~/project/ ~/backup/project-2006-10-4

I Keep a description of history:$ echo "Description of current state" > \

~/backup/project-2006-10-4/README.txt

Matthieu Moy ([email protected]) Git 2009-2010 < 3 / 19 >

Page 8: Git Slides

Intro Git Example Advices

Collaborative Development: The Old Good TimeBasic problems: Several persons working on the same set of files

1 “Hey, you’ve modified the same file as me, how do we merge?”,2 “Your modifications are broken, your code doesn’t even compile. Fix

your changes before sending it to me!”,3 “Your bug fix here seems interesting, but I don’t want your other

changes”.

Historical solutions:

I Never two person work at the same time. When one person stopsworking, (s)he sends his/her work to the others.⇒ Doesn’t scale up! Unsafe.

I People work on the same directory (same machine, NFS, . . . )⇒ Painful because of (2) above.

I People lock the file when working on it.⇒ Hardly scales up!

I People work trying to avoid conflicts, and merge later.

Matthieu Moy ([email protected]) Git 2009-2010 < 4 / 19 >

Page 9: Git Slides

Intro Git Example Advices

Collaborative Development: The Old Good TimeBasic problems: Several persons working on the same set of files

1 “Hey, you’ve modified the same file as me, how do we merge?”,2 “Your modifications are broken, your code doesn’t even compile. Fix

your changes before sending it to me!”,3 “Your bug fix here seems interesting, but I don’t want your other

changes”.Historical solutions:

I Never two person work at the same time. When one person stopsworking, (s)he sends his/her work to the others.⇒ Doesn’t scale up! Unsafe.

I People work on the same directory (same machine, NFS, . . . )⇒ Painful because of (2) above.

I People lock the file when working on it.⇒ Hardly scales up!

I People work trying to avoid conflicts, and merge later.

Matthieu Moy ([email protected]) Git 2009-2010 < 4 / 19 >

Page 10: Git Slides

Intro Git Example Advices

Collaborative Development: The Old Good TimeBasic problems: Several persons working on the same set of files

1 “Hey, you’ve modified the same file as me, how do we merge?”,2 “Your modifications are broken, your code doesn’t even compile. Fix

your changes before sending it to me!”,3 “Your bug fix here seems interesting, but I don’t want your other

changes”.Historical solutions:

I Never two person work at the same time. When one person stopsworking, (s)he sends his/her work to the others.⇒ Doesn’t scale up! Unsafe.

I People work on the same directory (same machine, NFS, . . . )⇒ Painful because of (2) above.

I People lock the file when working on it.⇒ Hardly scales up!

I People work trying to avoid conflicts, and merge later.

Matthieu Moy ([email protected]) Git 2009-2010 < 4 / 19 >

Page 11: Git Slides

Intro Git Example Advices

Collaborative Development: The Old Good TimeBasic problems: Several persons working on the same set of files

1 “Hey, you’ve modified the same file as me, how do we merge?”,2 “Your modifications are broken, your code doesn’t even compile. Fix

your changes before sending it to me!”,3 “Your bug fix here seems interesting, but I don’t want your other

changes”.Historical solutions:

I Never two person work at the same time. When one person stopsworking, (s)he sends his/her work to the others.⇒ Doesn’t scale up! Unsafe.

I People work on the same directory (same machine, NFS, . . . )⇒ Painful because of (2) above.

I People lock the file when working on it.⇒ Hardly scales up!

I People work trying to avoid conflicts, and merge later.

Matthieu Moy ([email protected]) Git 2009-2010 < 4 / 19 >

Page 12: Git Slides

Intro Git Example Advices

Collaborative Development: The Old Good TimeBasic problems: Several persons working on the same set of files

1 “Hey, you’ve modified the same file as me, how do we merge?”,2 “Your modifications are broken, your code doesn’t even compile. Fix

your changes before sending it to me!”,3 “Your bug fix here seems interesting, but I don’t want your other

changes”.Historical solutions:

I Never two person work at the same time. When one person stopsworking, (s)he sends his/her work to the others.⇒ Doesn’t scale up! Unsafe.

I People work on the same directory (same machine, NFS, . . . )⇒ Painful because of (2) above.

I People lock the file when working on it.⇒ Hardly scales up!

I People work trying to avoid conflicts, and merge later.

Matthieu Moy ([email protected]) Git 2009-2010 < 4 / 19 >

Page 13: Git Slides

Intro Git Example Advices

Collaborative Development: The Old Good TimeBasic problems: Several persons working on the same set of files

1 “Hey, you’ve modified the same file as me, how do we merge?”,2 “Your modifications are broken, your code doesn’t even compile. Fix

your changes before sending it to me!”,3 “Your bug fix here seems interesting, but I don’t want your other

changes”.Historical solutions:

I Never two person work at the same time. When one person stopsworking, (s)he sends his/her work to the others.⇒ Doesn’t scale up! Unsafe.

I People work on the same directory (same machine, NFS, . . . )⇒ Painful because of (2) above.

I People lock the file when working on it.⇒ Hardly scales up!

I People work trying to avoid conflicts, and merge later.

Matthieu Moy ([email protected]) Git 2009-2010 < 4 / 19 >

Page 14: Git Slides

Intro Git Example Advices

Merging: Problem and Solution

My version

#include <stdio.h>

int main () {printf("Hello");

return EXIT_SUCCESS;}

Your version

#include <stdio.h>

int main () {printf("Hello!\n");

return 0;}

Common ancestor

#include <stdio.h>

int main () {printf("Hello");

return 0;}

Tools like diff3 or diff + patch can solve this

Merging relies on history!

Collaborative development linked to backups

Matthieu Moy ([email protected]) Git 2009-2010 < 5 / 19 >

Page 15: Git Slides

Intro Git Example Advices

Merging: Problem and Solution

My version

#include <stdio.h>

int main () {printf("Hello");

return EXIT_SUCCESS;}

Your version

#include <stdio.h>

int main () {printf("Hello!\n");

return 0;}

Common ancestor

#include <stdio.h>

int main () {printf("Hello");

return 0;}

Tools like diff3 or diff + patch can solve this

Merging relies on history!

Collaborative development linked to backups

Matthieu Moy ([email protected]) Git 2009-2010 < 5 / 19 >

Page 16: Git Slides

Intro Git Example Advices

Merging: Problem and Solution

My version

#include <stdio.h>

int main () {printf("Hello");

return EXIT_SUCCESS;}

Your version

#include <stdio.h>

int main () {printf("Hello!\n");

return 0;}

Common ancestor

#include <stdio.h>

int main () {printf("Hello");

return 0;}

Tools like diff3 or diff + patch can solve this

Merging relies on history!

Collaborative development linked to backups

Matthieu Moy ([email protected]) Git 2009-2010 < 5 / 19 >

Page 17: Git Slides

Intro Git Example Advices

Merging: Problem and Solution

My version

#include <stdio.h>

int main () {printf("Hello");

return EXIT_SUCCESS;}

Your version

#include <stdio.h>

int main () {printf("Hello!\n");

return 0;}

Common ancestor

#include <stdio.h>

int main () {printf("Hello");

return 0;}

Tools like diff3 or diff + patch can solve this

Merging relies on history!

Collaborative development linked to backups

Matthieu Moy ([email protected]) Git 2009-2010 < 5 / 19 >

Page 18: Git Slides

Intro Git Example Advices

Merging

Space of possible revisions

(arbitrarily represented in 2D)

Matthieu Moy ([email protected]) Git 2009-2010 < 6 / 19 >

Page 19: Git Slides

Intro Git Example Advices

Merging

Space of possible revisions

(arbitrarily represented in 2D)

Mine

Yours

Matthieu Moy ([email protected]) Git 2009-2010 < 6 / 19 >

Page 20: Git Slides

Intro Git Example Advices

Merging

Space of possible revisions

(arbitrarily represented in 2D)

Mine

YoursAncestor

Matthieu Moy ([email protected]) Git 2009-2010 < 6 / 19 >

Page 21: Git Slides

Intro Git Example Advices

Merging

Space of possible revisions

(arbitrarily represented in 2D)

Mine

YoursAncestor

Merged revision

Matthieu Moy ([email protected]) Git 2009-2010 < 6 / 19 >

Page 22: Git Slides

Intro Git Example Advices

Revision Control System: Basic Idea

Keep track of history:I User makes modification and use commit to keep a snapshot of

the current state,I Meta-data (user’s name, date, descriptive message,. . . ) recorded

together with the state of the project.Use it for merging/collaborative development.

I Each user works on its own copy,I User explicitly “takes” modifications from others when (s)he wants.

(Efficient storage/compression)

Matthieu Moy ([email protected]) Git 2009-2010 < 7 / 19 >

Page 23: Git Slides

Intro Git Example Advices

Revision Control System: Basic Idea

Keep track of history:I User makes modification and use commit to keep a snapshot of

the current state,I Meta-data (user’s name, date, descriptive message,. . . ) recorded

together with the state of the project.Use it for merging/collaborative development.

I Each user works on its own copy,I User explicitly “takes” modifications from others when (s)he wants.

(Efficient storage/compression)

Matthieu Moy ([email protected]) Git 2009-2010 < 7 / 19 >

Page 24: Git Slides

Intro Git Example Advices

Outline

1 Revision Control System

2 Git: Basic Principles

3 An Example Using Git

4 Advices Using Git

Matthieu Moy ([email protected]) Git 2009-2010 < 8 / 19 >

Page 25: Git Slides

Intro Git Example Advices

Git: Basic concepts

Each working directory contains:I The files you work on (as usual)I The history, or “repository” (in the directory .git/)

Basic operations:I git clone: get a copy of an existing repositoryI git commit: create a new revision in a repositoryI git pull: get revisions from a repositoryI git push: send revisions to a repository

For us:I Each team has a shared repository, already initialized

Matthieu Moy ([email protected]) Git 2009-2010 < 9 / 19 >

Page 26: Git Slides

Intro Git Example Advices

Outline

1 Revision Control System

2 Git: Basic Principles

3 An Example Using Git

4 Advices Using Git

Matthieu Moy ([email protected]) Git 2009-2010 < 10 / 19 >

Page 27: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 28: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 29: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 30: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 31: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 32: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

D

Push

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 33: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

D

Push DPull

M

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 34: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

D

Push DPull

M

Commit

F

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 35: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

D

Push DPull

M

Commit

F

E

M

F

Push

Matthieu Moy ([email protected]) Git 2009-2010 < 11 / 19 >

Page 36: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Alice$ git clone ssh://[email protected]/~/git ipsimInitialized empty Git repository in /perms/Alice/ipsim/.git/remote: Counting objects: 960, done.remote: Compressing objects: 100% (555/555), done.remote: Total 960 (delta 341), reused 949 (delta 330)Receiving objects: 100% (960/960), 1.51 MiB, done.Resolving deltas: 100% (341/341), done.

Matthieu Moy ([email protected]) Git 2009-2010 < 12 / 19 >

Page 37: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Alice$ git clone ssh://[email protected]/~/git ipsimAlice$ cd ipsim/sandboxAlice$ vi hello.c

Matthieu Moy ([email protected]) Git 2009-2010 < 12 / 19 >

Page 38: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Alice$ git clone ssh://[email protected]/~/git ipsimAlice$ cd ipsim/sandboxAlice$ vi hello.cAlice$ git status# On branch master# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: hello.c#

Matthieu Moy ([email protected]) Git 2009-2010 < 12 / 19 >

Page 39: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Alice$ git clone ssh://[email protected]/~/git ipsimAlice$ cd ipsim/sandboxAlice$ vi hello.cAlice$ git statusAlice$ git diff HEAD--- a/projet/sandbox/hello.c+++ b/projet/sandbox/hello.c@@ -1,5 +1,5 @@/* Chacun ajoute son nom ici */-/* Auteurs : ... et ... */+/* Auteurs : Alice et ... */

#include <stdio.h>

Matthieu Moy ([email protected]) Git 2009-2010 < 12 / 19 >

Page 40: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Alice$ git clone ssh://[email protected]/~/git ipsimAlice$ cd ipsim/sandboxAlice$ vi hello.cAlice$ git statusAlice$ git diff HEADAlice$ git commit -a[master d943af5] Added my name.1 files changed, 1 insertions(+), 1 deletions(-)

Matthieu Moy ([email protected]) Git 2009-2010 < 12 / 19 >

Page 41: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Alice$ git clone ssh://[email protected]/~/git ipsimAlice$ cd ipsim/sandboxAlice$ vi hello.cAlice$ git statusAlice$ git diff HEADAlice$ git commit -aAlice$ git logcommit d943af53ec13b43eac31d4cca3b11f51746a90ccAuthor: Alice <[email protected]>

Added my name.

commit 96e1dead6dc0f8e23308726d22bbf42d0e99352fAuthor: Equipe ldb42 <[email protected]>

Personalisation du dépôt pour ldb42

Matthieu Moy ([email protected]) Git 2009-2010 < 12 / 19 >

Page 42: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Matthieu Moy ([email protected]) Git 2009-2010 < 13 / 19 >

Page 43: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git clone ssh://[email protected]/~/git ipsimInitialized empty Git repository in /perms/Bob/ipsim/.git/remote: Counting objects: 960, done.remote: Compressing objects: 100% (555/555), done.remote: Total 960 (delta 341), reused 949 (delta 330)Receiving objects: 100% (960/960), 1.51 MiB, done.Resolving deltas: 100% (341/341), done.

Matthieu Moy ([email protected]) Git 2009-2010 < 14 / 19 >

Page 44: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git clone ssh://[email protected]/~/git ipsimBob$ cd ipsim/sandboxBob$ vi hello.c

Matthieu Moy ([email protected]) Git 2009-2010 < 14 / 19 >

Page 45: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git clone ssh://[email protected]/~/git ipsimBob$ cd ipsim/sandboxBob$ vi hello.cBob$ git commit -a[master ae00028] Removed a piece of code.1 files changed, 0 insertions(+), 10 deletions(-)

Matthieu Moy ([email protected]) Git 2009-2010 < 14 / 19 >

Page 46: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git clone ssh://[email protected]/~/git ipsimBob$ cd ipsim/sandboxBob$ vi hello.cBob$ git commit -aBob$ git logcommit ae000285167885b286401ea3eb3379a7a3946260Author: Bob <[email protected]>Date: Thu Nov 19 16:52:53 2009 +0100

Removed a piece of code.

commit 96e1dead6dc0f8e23308726d22bbf42d0e99352fAuthor: Equipe ldb42 <[email protected]>Date: Thu Nov 19 16:30:54 2009 +0100

Personalisation du dépôt pour ldb42

Matthieu Moy ([email protected]) Git 2009-2010 < 14 / 19 >

Page 47: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

Matthieu Moy ([email protected]) Git 2009-2010 < 15 / 19 >

Page 48: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git pushCounting objects: 9, done.Delta compression using up to 16 threads.Compressing objects: 100% (4/4), done.Writing objects: 100% (5/5), 432 bytes, done.Total 5 (delta 2), reused 0 (delta 0)To ssh://[email protected]/~/git

96e1dea..ae00028 master -> master

Matthieu Moy ([email protected]) Git 2009-2010 < 16 / 19 >

Page 49: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git push

# back to AliceAlice$ git pushTo ssh://[email protected]/~/git! [rejected] master -> master (non-fast forward)error: failed to push some refs to ’ssh://[email protected]/~/git’To prevent you from losing history, non-fast-forward updates were rejectedMerge the remote changes before pushing again. See the ’non-fast forward’section of ’git push --help’ for details.

Matthieu Moy ([email protected]) Git 2009-2010 < 16 / 19 >

Page 50: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git push

# back to AliceAlice$ git pushAlice$ git pullUnpacking objects: 100% (5/5), done.From ssh://telesun.imag.fr/~/git

96e1dea..ae00028 master -> origin/masterAuto-merging sandbox/hello.cMerge made by recursive.sandbox/hello.c | 10 -------1 files changed, 0 insertions(+), 10 deletions(-)

Matthieu Moy ([email protected]) Git 2009-2010 < 16 / 19 >

Page 51: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git push

# back to AliceAlice$ git pushAlice$ git pullAlice$ vi hello.cAlice$ git commit -a[master ee9f864] Test1 files changed, 1 insertions(+), 0 deletions(-)

Matthieu Moy ([email protected]) Git 2009-2010 < 16 / 19 >

Page 52: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git push

# back to AliceAlice$ git pushAlice$ git pullAlice$ vi hello.cAlice$ git commit -aAlice$ git log --graph --oneline

* ee9f864 Test

* 830a084 Merge branch ’master’ of ...|\| * ae00028 Removed a piece of code.

* | d943af5 Added my name.|/

* 96e1dea Personalisation du dépôt pour ldb42

Matthieu Moy ([email protected]) Git 2009-2010 < 16 / 19 >

Page 53: Git Slides

Intro Git Example Advices

Starting the project with Git: in Practice

Bob$ git push

# back to AliceAlice$ git pushAlice$ git pullAlice$ vi hello.cAlice$ git commit -aAlice$ git log --graph --onelineAlice$ git pushCounting objects: 23, done.Delta compression using up to 16 threads.Compressing objects: 100% (12/12), done.Writing objects: 100% (15/15), 1.20 KiB, done.Total 15 (delta 6), reused 0 (delta 0)To ssh://[email protected]/~/git

ae00028..ee9f864 master -> master

Matthieu Moy ([email protected]) Git 2009-2010 < 16 / 19 >

Page 54: Git Slides

Intro Git Example Advices

Starting the project with Git

Shared Repository

A

B

ldb42

Student 1

CloneA

B

D

Commit

Clone

Student 2

B

A

CommitE

D

Push DPull

M

Commit

F

E

M

F

Push

Matthieu Moy ([email protected]) Git 2009-2010 < 17 / 19 >

Page 55: Git Slides

Intro Git Example Advices

Outline

1 Revision Control System

2 Git: Basic Principles

3 An Example Using Git

4 Advices Using Git

Matthieu Moy ([email protected]) Git 2009-2010 < 18 / 19 >

Page 56: Git Slides

Intro Git Example Advices

Advices Using Git

Never exchange files outside Git’s control (email, scp, usb key),except if you really know what you’re doing;

Always use git commit with -a;Make a git push after each git commit -a, except to keepyour modifications private. It can be necessary to make a gitpull before a git push if new revisions are available in theshared archive;Do git pull regularly, to remain synchronized with yourteammates. You need to make a git commit -a before you canmake a git pull (this is to avoid mixing manual changes withmerges).

Matthieu Moy ([email protected]) Git 2009-2010 < 19 / 19 >

Page 57: Git Slides

Intro Git Example Advices

Advices Using Git

Never exchange files outside Git’s control (email, scp, usb key),except if you really know what you’re doing;Always use git commit with -a;Make a git push after each git commit -a, except to keepyour modifications private. It can be necessary to make a gitpull before a git push if new revisions are available in theshared archive;Do git pull regularly, to remain synchronized with yourteammates. You need to make a git commit -a before you canmake a git pull (this is to avoid mixing manual changes withmerges).

Matthieu Moy ([email protected]) Git 2009-2010 < 19 / 19 >