Copyright 2010 by Jim Weirich
Git ImmersionRails Conf 2010 Tutorial
Jim WeirichChief Scientist / EdgeCase
[email protected]@jimweirich
Copyright 2010 by Jim Weirich
1
Copyright 2010 by Jim Weirich
git config --global user.name "Jim Weirich"
git config --global user.email "[email protected]"
Setup
git config --global core.autocrlf true (Windows)
git config --global core.autocrlf input (Unix/Mac)
git config --global core.safecrlf true
also
2
Copyright 2010 by Jim Weirich
Creating a Git Repo
$ mkdir demo
$ (edit files)
$ git init
3
Copyright 2010 by Jim Weirich
Checking In
$ git status
$ git add .
$ git commit -m "message"
4
Copyright 2010 by Jim Weirich
Labs Can be found at ...
http://onestepback.org/download/git_tutorial.zip
5
Copyright 2010 by Jim Weirich
Source ControlMade Easy
6
Copyright 2010 by Jim Weirich
Why?
7
Copyright 2010 by Jim Weirich
What we are not going to talk about ...
8
Copyright 2010 by Jim Weirich
Your Mission
9
Copyright 2010 by Jim Weirich
Your Mission
Design and BuildA Source Code
Control System
10
Copyright 2010 by Jim Weirich
CustomSourceControl
11
Copyright 2010 by Jim Weirich
CustomSourceControl
12
Copyright 2010 by Jim Weirich
In the Old Days ...
13
Copyright 2010 by Jim Weirich
WorkingDirectory
v1 v1
file1 file2
14
Copyright 2010 by Jim Weirich
001.tar
WorkingDirectory
v1 v1
file1 file2
Project Archive
15
Copyright 2010 by Jim Weirich
001.tar
WorkingDirectory
v1 v1
Manifest
file1 file2
Project Archive
16
Copyright 2010 by Jim Weirich
001.tar
WorkingDirectory
v1 v1
file1
Manifest
file1 file2
file2
Project Archive
17
Copyright 2010 by Jim Weirich
001.tar
WorkingDirectory
v1 v1
$ csc snap
file1 file2
Project Archive
18
Copyright 2010 by Jim Weirich
001.tar
002.tar
WorkingDirectory
v1v2
$ csc snap
file1 file2
Project Archive
19
Copyright 2010 by Jim Weirich
001.tar
002.tar
003.tar
WorkingDirectory
Project Archive
v2v2
$ csc snap
file1 file2
20
Copyright 2010 by Jim Weirich
001.tar
002.tar
003.tar
WorkingDirectory
Project Archive
v1v2
$ csc checkout 002
file1 file2
21
Copyright 2010 by Jim Weirich
Two Basic Commands
•Snap
•Checkout
22
Copyright 2010 by Jim Weirich
Very Easy / Very Simple
23
Copyright 2010 by Jim Weirich
Rather Wasteful
24
Copyright 2010 by Jim Weirich
001.tar
002.tar
003.tar
v1 v1
v2 v1
v2 v2
SameContent
file1 file2manifest
25
Copyright 2010 by Jim Weirich
001.tar
002.tar
003.tar
v1 v1
v2
v2
file1 file2manifest
26
Copyright 2010 by Jim Weirich
001.tar
002.tar
003.tar
v1 v1
v2
v2
file1 file2manifest
27
Copyright 2010 by Jim Weirich
v1 v1
v2
v2
Note: Each snapshot is totally defined by the manifest file for that snapshot.
file1 file2manifest
28
Copyright 2010 by Jim Weirich
manifest / (001) file1 file1 (V1) file2 file2 (V1) manifest / manifest / file1 file1 (V2) file2 file2 (V2)
FileName Contents
CONFLICT!
29
Copyright 2010 by Jim Weirich
? / (001) ? file1 (V1) ? file2 (V1) ? / ? / ? file1 (V2) ? file2 (V2)
FileName Contents
30
Copyright 2010 by Jim Weirich
FileName Contents
aaaa / (001) aaab file1 (V1) aaac file2 (V1) aaad / aaae / aaaf file1 (V2) aaag file2 (V2)
Note: The Project Archive is just a directory with files in it.
31
Copyright 2010 by Jim Weirich
FileName Contents
aaaa / (001) aaab file1 (V1) aaac file2 (V1) aaad / aaae / aaaf file1 (V2) aaag file2 (V2)
$ ls
aaaa aaab aaac aaad aaae aaaf aaag
32
Copyright 2010 by Jim Weirich
Project Archive
• Is just a directory with files in it
• The archive files have arbitrary names.
• The file names can be anything as long as they are unique
• We track the real file names in the manifest files.
33
Copyright 2010 by Jim Weirich
aaaa / (001)aaab file1 (V1)aaac file2 (V1)aaad / (002)aaae / (003)aaaf file1 (V2)aaag file2 (v2)
FileName Contents
aaaa -- / (001)
file1 aaab
file2 aaac
Note: A manifest file is just a text file listing all the files it contains and their IDs.
34
Copyright 2010 by Jim Weirich
aaaa / (001)aaab file1 (V1)aaac file2 (V1)aaad / (002)aaae / (003)aaaf file1 (V2)aaag file2 (v2)
FileName Contents
file1 aaaf
file2 aaac
aaad -- / (002)
35
Copyright 2010 by Jim Weirich
aaaa / (001)aaab file1 (V1)aaac file2 (V1)aaad / (002)aaae / (003)aaaf file1 (V2)aaag file2 (v2)
FileName Contents
file1 aaaf
file2 aaag
aaae -- / (003)
36
Copyright 2010 by Jim Weirich
aaaa / (001)aaab file1 (V1)aaac file2 (V1)aaad / (002)aaae / (003)aaaf file1 (V2)aaag file2 (v2)
file1 aaab
file2 aaac
aaaa -- / (001)
FileName Contents
file1 aaaf
file2 aaac
aaac -- / (002)
file1 aaaf
file2 aaag
aaae -- / (003)
37
Copyright 2010 by Jim Weirich
Rakefile
stuff.rb more.rb stuff_test.rb more_test.rb
lib test
/ Project Archive
38
Copyright 2010 by Jim Weirich
Metadata would be nice
39
Copyright 2010 by Jim Weirich
What Metadata?
• The Root manifest of the snapshot
• Name/EMail of the person commiting the snapshot
• Date/Time of the snapshot
• Some comments describing the snapshot
40
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
41
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
Root Manifestfor Snapshot
42
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
Author & EMail
43
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
Date/Time(seconds since 1970)
Time Zone
44
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
Comment
45
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
46
Copyright 2010 by Jim Weirich
v1 v1
v2
v2
aaaj
aaah
aaai
47
Copyright 2010 by Jim Weirich
tree aaaeauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
48
Copyright 2010 by Jim Weirich
tree aaaeparent aaaiauthor Jim <[email protected]> 1246996320 -0400
Comments describing this snapshot.
previous snapshot
49
Copyright 2010 by Jim Weirich
v1 v1
v2
v2
aaaj
aaah
aaai
Project Archive
50
Copyright 2010 by Jim Weirich
v1 v1
v2
v2
aaaj
aaah
aaai
Project Archive
51
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2
aaaj
aaah
aaai
aaaj
Project Archive
52
Copyright 2010 by Jim Weirich
Summary So Far ...
53
Copyright 2010 by Jim Weirich
001.tar
002.tar
003.tar
WorkingDirectory
Project Archive
54
Copyright 2010 by Jim Weirich
head
WorkingDirectory
Project Archive
55
Copyright 2010 by Jim Weirich
How do we create a snapshot now?
56
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
head
(1) Copy changed files to archive
57
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
(1) Copy changed files to archive(2) Create new manifest
head
58
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
(1) Copy changed files to archive(2) Create new manifest(3) Create new snapshot record
head
59
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
(1) Copy changed files to archive(2) Create new manifest(3) Create new snapshot record(4) Readjust HEAD
head
60
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
(1) Copy changed files to archive(2) Create new manifest(3) Create new snapshot record(4) Readjust HEAD
Note: The Project Archive is always additive. Information is never destroyed.
head
61
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
(1) Copy changed files to archive(2) Create new manifest(3) Create new snapshot record(4) Readjust HEAD
head
62
Copyright 2010 by Jim Weirich
WorkingDirectory Project Archive
head
(1) Copy changed files to archive(2) Create new directory(3) Create new Commit Record(4) Readjust HEAD
Question: How do we detect changes?
head
63
Copyright 2010 by Jim Weirich
head
WorkingDirectory Project Archive
head
(1) Copy changed files to archive(2) Create new directory(3) Create new Commit Record(4) Readjust HEAD
COMPARECOMPARE
64
Copyright 2010 by Jim Weirich
head
WorkingDirectory Project Archive
(1) Copy changed files to archive(2) Create new directory(3) Create new Commit Record(4) Readjust HEAD
COMPARECOMPARECOMPARE
COMPARECOMPARE
COMPARECOMPARE
65
Copyright 2010 by Jim Weirich
Detecting Duplication
66
Copyright 2010 by Jim Weirich
Hi, my name is Bob.
file.txt
"55dc96ede241511e35f1973957bbd51f37f3762b"
SHA1
67
Copyright 2010 by Jim Weirich
Hi, my name is Joe.
file.txt
"55dc96ede241511e35f1973957bbd51f37f3762b"
"53f2509e877de3cad85c547a0c2a22b43c5d81eb"
SHA1
68
Copyright 2010 by Jim Weirich
file1.txt
SHA1
"55dc96ede241511e35f1973957bbd51f37f3762b"
file2.txt
Hi, my name is Bob. Hi, my name is Bob.
Identical ContentProduces
Identical Hashes
69
Copyright 2010 by Jim Weirich
File Names in the Archive
• Arbitrary
• Unique
aaaa / (001) aaab file1 (V1) aaac file2 (V1) aaad / aaae / aaaf file1 (V2) aaag file2 (V2)
70
Copyright 2010 by Jim Weirich
Use the SHA1 Hashfor the File Name
Idea:
71
Copyright 2010 by Jim Weirich
aaaa aaab aaac aaad aaae aaafaaag aaah aaai
Project Archive
72
Copyright 2010 by Jim Weirich
75e3dee3503e7ad5... 1586ad8975e3dee3...f6da34481586ad89...f99b89d6f6da3448...503d6749f99b89d6...2b436957503d6749...944ff522944ff522...6c024e25944ff522...503e7ad56c024e25...
Project Archive
73
Copyright 2010 by Jim Weirich
HEAD
75e3dee3503e7ad5... 1586ad8975e3dee3...f6da34481586ad89...f99b89d6f6da3448...503d6749f99b89d6...2b436957503d6749...944ff522944ff522...6c024e25944ff522...503e7ad56c024e25...
75e3dee3503e7ad5...
Project Archive
74
Copyright 2010 by Jim Weirich
75e3dee3503e7ad5... 1586ad8975e3dee3...f6da34481586ad89...f99b89d6f6da3448...503d6749f99b89d6...2b436957503d6749...944ff522944ff522...6c024e25944ff522...503e7ad56c024e25...
2b436957503d6749 ...
Match!
Project Archive
SHA1
75
Copyright 2010 by Jim Weirich
75e3dee3503e7ad5... 1586ad8975e3dee3...f6da34481586ad89...f99b89d6f6da3448...503d6749f99b89d6...2b436957503d6749...944ff522944ff522...6c024e25944ff522...503e7ad56c024e25...
9d6f503d24e2d56c ...
NoMatch!
Project Archive
SHA1
76
Copyright 2010 by Jim Weirich
75e3dee3503e7ad5... 1586ad8975e3dee3...f6da34481586ad89...f99b89d6f6da3448...503d6749f99b89d6...2b436957503d6749...944ff522944ff522...6c024e25944ff522...503e7ad56c024e25...
9d6f503d24e2d56c ...
Copy File
9d6f503d24e2d56c...
Project Archive
SHA1
77
Copyright 2010 by Jim Weirich
Project Archive
Integrity
78
Copyright 2010 by Jim Weirich
v1 v1
v2
v2
8ee9
Project Archive
HEAD(8ee9...)
79
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
Project Archive
80
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
1e3d
1dda a3f8
89ba 157c 9231 64aa
Project Archive
81
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
1e3d
1dda a3f8
89ba 157c 9231 64aa
X
File iscorrupted
82
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
1e3d
1dda a3f8
89ba 157c 9231 64aa
X
File iscorrupted
Hash doesn’t match
Project Archive
83
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
4fd2
1dda a3f8
89ba 157c 9231 64aa
XHackerUpdatesHash
X
Project Archive
84
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
4fd2
1dda a3f8
89ba 157c 9231 64aa
XHackerUpdatesDirectory
Project Archive
85
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
8ee9 57af
2ade
4fd2
1dda a3f8
89ba 157c 9231 64aa
XHackerFixesHash
X
Project Archive
86
Copyright 2010 by Jim Weirich
HEAD
v1 v1
v2
v2(8ee9...)
3e87 57af
2ade
4fd2
1dda a3f8
89ba 157c 9231 64aa
XHackerTriesAgain
X
Project Archive
87
Copyright 2010 by Jim Weirich
Tracking Snapshots
88
Copyright 2010 by Jim Weirich
89
Copyright 2010 by Jim Weirich
Need to keep track of versions by name.
90
Copyright 2010 by Jim Weirich
HEAD
Project Archive(snapshots only)
91
Copyright 2010 by Jim Weirich
HEAD
Project Archive
92
Copyright 2010 by Jim Weirich
HEAD
Project Archive(snapshots only)
93
Copyright 2010 by Jim Weirich
HEAD
V2
V1
Project Archive(snapshots only)
94
Copyright 2010 by Jim Weirich
HEAD
V2
V1Tags
Note: Tags do not move.They always point to the same snapshot.
Project Archive(snapshots only)
95
Copyright 2010 by Jim Weirich
HEAD
V2
V1
Project Archive(snapshots only)
96
Copyright 2010 by Jim Weirich
Need to handle changes to older versions while
allowing development on
the latest version.
97
Copyright 2010 by Jim Weirich
HEAD
V2
V1
Project Archive(snapshots only)
98
Copyright 2010 by Jim Weirich
HEAD
V2
V1
Project Archive(snapshots only)
master
Branch
99
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
Branch
Project Archive(snapshots only)
100
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
$
Project Archive(snapshots only)
101
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
$ csc snap
Project Archive(snapshots only)
Note: Branches keep track of the last snapshot on that branch.
Note: HEAD tracks the current branch.
102
Copyright 2010 by Jim Weirich
Oops! We found a bug
103
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
Project Archive
Bug found here
104
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
$ csc checkout V2
Project Archive
105
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
$ csc checkout V2$ edit files
Project Archive
106
Copyright 2010 by Jim Weirich
master
V2
V1
HEADfix
$ csc checkout V2$ edit files$ csc branch fix
Project Archive
107
Copyright 2010 by Jim Weirich
master
V2
V1
HEAD
fix
$ csc checkout V2$ edit files$ csc branch fix$ csc snap
Project Archive
108
Copyright 2010 by Jim Weirich
master
V1
HEAD
$ csc checkout V2$ edit files$ csc branch fix$ csc snap$ csc tag V2.1
fix
V2
V2.1
Project Archive
109
Copyright 2010 by Jim Weirich
master
V1
HEAD
$ csc checkout V2$ edit files$ csc branch fix$ csc snap$ csc tag V2.fix$ csc checkout master
fix
V2
V2.1
Note: We didn’t create a branch until after we edited files.
Project Archive
110
Copyright 2010 by Jim Weirich
Merge Bug Fixes to Master
111
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
$
Project Archive
112
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
$ csc merge fix
Project Archive
113
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
$ csc merge fix(resolve conflict)
Project Archive
114
Copyright 2010 by Jim Weirich
master
V1
HEAD
$ csc merge fix(resolve conflict)$ csc snapfix
V2
V2.1
115
Copyright 2010 by Jim Weirich
master
V1
HEAD
$ csc merge fix(resolve conflict)$ csc snapfix
V2
V2.1
Note: This snapshot has two parents. The changes from both parents have been merged together.
116
Copyright 2010 by Jim Weirich
Sharing Code
117
Copyright 2010 by Jim Weirich
My Archive
118
Copyright 2010 by Jim Weirich
My Archive Your Archive
clone
you$ csc clone url_for_my_repo
119
Copyright 2010 by Jim Weirich
clone
My Archive Your Archive
you$ csc clone url_for_my_repo
120
Copyright 2010 by Jim Weirich
My Archive Your Archive
You make changes
121
Copyright 2010 by Jim Weirich
My Archive Your Archive
pull
me$ csc pull url_for_my_repo
122
Copyright 2010 by Jim Weirich
My Archive Your Archive
you$ csc pull url_for_my_repo
pull
123
Copyright 2010 by Jim Weirich
Common Remote Uses
124
Copyright 2010 by Jim Weirich
My Archive
125
Copyright 2010 by Jim Weirich
pushpull
My Archive
Remote Archive
126
Copyright 2010 by Jim Weirich
My Archive Your Archivepushpull
pushpull
Shared Remote Archive
127
Copyright 2010 by Jim Weirich
My Archive Your Archivepushpull
pushpull
Shared Remote Archive
128
Copyright 2010 by Jim Weirich
pushpull
pushpull
pushpull
My Archive Your Archive
Shared Remote Archive
129
Copyright 2010 by Jim Weirich
130
Copyright 2010 by Jim Weirich
131
Copyright 2010 by Jim Weirich
MyLocal
Archive
Master(Remote)Archive
Push
132
Copyright 2010 by Jim Weirich
MyLocal
Archive
YourLocal
Archive
Master(Remote)Archive
Push Pull
133
Copyright 2010 by Jim Weirich
MyLocal
Archive
YourLocal
Archive
Master(Remote)Archive
Push Pull
I Own These Repos
134
Copyright 2010 by Jim Weirich
MyLocal
Archive
YourLocal
Archive
YourRemoteArchive
Master(Remote)Archive
Push PushPull
135
Copyright 2010 by Jim Weirich
PullPush Push
MyLocal
Archive
YourLocal
Archive
YourRemoteArchive
Master(Remote)Archive
Pull
136
Copyright 2010 by Jim Weirich
PullPush Push
MyLocal
Archive
YourLocal
Archive
YourRemoteArchive
Master(Remote)Archive
Pull
137
Copyright 2010 by Jim Weirich
owned by Benevolent Dictator
MasterProjectArchive
138
Copyright 2010 by Jim Weirich
Lieutenants
PullPull
MasterProjectArchive
owned by Benevolent Dictator
139
Copyright 2010 by Jim Weirich
Lieutenants
Grunts
PullPull Pull
Pull
Pull
Pull
owned by Benevolent Dictator
MasterProjectArchive
Grunts
140
Copyright 2010 by Jim Weirich
Lieutenants
Grunts
PullPull Pull
Pull
Pull
Pull
owned by Benevolent Dictator
MasterProjectArchive
Grunts
141
Copyright 2010 by Jim Weirich
Lieutenants
Grunts
PullPull Pull
Pull
Pull
Pull
owned by Benevolent Dictator
MasterProjectArchive
Grunts
142
Copyright 2010 by Jim Weirich
Wrap Up
143
Copyright 2010 by Jim Weirich
CSC Features
• Complete revision history
• Efficient Storage
• very lightweight project archives
• Guaranteed integrity
• Flexible Sharing
• Cheap Branching
• Easy Tagging
144
Copyright 2010 by Jim Weirich
CSC Features
• Complete revision history
• Efficient Storage
• very lightweight project archives
• Guaranteed integrity
• Flexible Sharing
• Cheap Branching
• Easy Tagging
145
Copyright 2010 by Jim Weirich
Sounds Like ...
146
Copyright 2010 by Jim Weirich
CSC
147
Copyright 2010 by Jim Weirich
GIT
148
Copyright 2010 by Jim Weirich
cscsnapshot
project archivemanifest
gitcommitrepositorytree (or directory)
========
149
Copyright 2010 by Jim Weirich
csc snapcsc checkout name
csc branch namecsc tag tagname
git commit -agit checkout namegit checkout -b namegit tag tagname
========
150
Copyright 2010 by Jim Weirich
Differences from Git
151
Copyright 2010 by Jim Weirich
Differences
• We have only:
• Working Directory
• Repository (project archive)
• Git Uses
• Working Directory
• Staging Area
• Repository
Csc Git
152
Copyright 2010 by Jim Weirich
Differences
• We have only:
• Working Directory
• Repository (project archive)
• File Based
• Git Uses
• Working Directory
• Staging Area
• Repository
• Content Based
Csc Git
153
Copyright 2010 by Jim Weirich
Differences
• One level object file storage
• Files stored in .git/objects
• Uses a 2-level directory
• SHA1 hash is the directory/file name
Csc Git
154
Copyright 2010 by Jim Weirich
Differences
• One level object file storage
• Plain Files
• Files stored in .git/objects
• Uses a 2-level directory
• SHA1 hash is the directory/file name
• Encoded/Compressed files
Csc Git
155
Copyright 2010 by Jim Weirich
Differences
• Just the basic features
• init/log/status/diff
• reset/rebase
• cherry-pick
• bisect
• ... lots of others
Csc Git
156
Copyright 2010 by Jim Weirich
References
• Git from the Bottom Up (John Wiegley)
• http://ftp.newartisans.com/pub/git.from.bottom.up.pdf
• Git Internals -- PeepCode PDF (Scott Chacon)
• http://peepcode.com/products/git-internals-pdf
• Any presentation by Scott Chacon
• http://github.com/schacon/git-presentations
157
Copyright 2010 by Jim Weirich
Pragmatic Bookselft Screen Cast
http://pragprog.com/screencasts/v-jwsceasy/source-control-made-easy
Available at:
158
Copyright 2010 by Jim Weirich
Questions?
159
Copyright 2010 by Jim Weirich
Labs
160
Copyright 2010 by Jim Weirich
Labs Can be found at ...
http://onestepback.org/download/git_tutorial.zip
161
Copyright 2010 by Jim Weirich
Appendix A -- Reset
162
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
Project Archive
$
WorkingDirectory
163
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
Project Archive
$ csc reset master$
WorkingDirectory
164
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
Project Archive
$ csc reset master$
WorkingDirectory
Unchanged
165
Copyright 2010 by Jim Weirich
Now the --hard way
166
Copyright 2010 by Jim Weirich
master
V1
HEAD
fix
V2
V2.1
Project Archive
$
WorkingDirectory
167
Copyright 2010 by Jim Weirich
master
V1
HEAD
$ csc reset --hard master$
fix
V2
V2.1
Project Archive WorkingDirectory
168
Copyright 2010 by Jim Weirich
master
V1
HEAD
$ csc reset --hard master$
fix
V2
V2.1
Project Archive WorkingDirectory
Checkout
WARNING: Pending changes lost
169
Copyright 2010 by Jim Weirich
Appendix B -- Rebase
170
Copyright 2010 by Jim Weirich
master
Rebase (setup)
171
Copyright 2010 by Jim Weirich
exp
master
Rebase (setup)
172
Copyright 2010 by Jim Weirich
exp master
Rebase (setup)
173
Copyright 2010 by Jim Weirich
exp master
Rebase (setup)
174
Copyright 2010 by Jim Weirich
Merge changes on master to exp
exp
master
Rebase (merging option)
175
Copyright 2010 by Jim Weirich
Merge from master again
exp
master
Rebase (merging option)
176
Copyright 2010 by Jim Weirich
Merge exp changesonto master
expmaster
Rebase (merging option)
177
Copyright 2010 by Jim Weirich
Rewind !
178
Copyright 2010 by Jim Weirich
exp master
Rebase
179
Copyright 2010 by Jim Weirich
exp master
Rebase
Rewrites Snapshots to include changes
from master
$ csc rebase master$
180
Copyright 2010 by Jim Weirich
exp master
Rebase
$
181
Copyright 2010 by Jim Weirich
master
Rebase
$ csc rebase master
exp
Rewrites Snapshots to include changes
from master
182
Copyright 2010 by Jim Weirich
master
Rebase
$
exp
183
Copyright 2010 by Jim Weirich
master
Rebase
$ csc checkout master$ csc merge exp
exp
184
Copyright 2010 by Jim Weirich
WARNING:
Conflicts may occur during rebase
185
Copyright 2010 by Jim Weirich
WAIT!
Rebase rewrites history?Isn’t that dangerous?
186
Copyright 2010 by Jim Weirich
Yes and No
187
Copyright 2010 by Jim Weirich
exp master
Rebase
188
Copyright 2010 by Jim Weirich
exp
master
Rebase
These snapshots are rewritten from scratch
189
Copyright 2010 by Jim Weirich
exp
master
Rebase
The original snapshots still exist, but are
unreferenced190
Copyright 2010 by Jim Weirich
exp
master
Rebase
Eventually they will be garbage collected
191
Copyright 2010 by Jim Weirich
WARNING:
Do not rebase shared branches!
192