-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathindex.html
554 lines (545 loc) · 25.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>git 튜토리얼</title>
<script data-main="js/main" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.4/require.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.0/normalize.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/1140/2.0/1140.css">
<link rel="stylesheet" href="css/explaingit.css">
</head>
<body>
<a href="https://github.com/Violet-Bora-Lee/git-tutorial" target="_blank" id="fork-me">
<svg viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg>
</a>
<div class="container">
<div class="row intro">
<div class="twelvecol">
<br>
<h1>git 튜토리얼</h1>
<br>
<p>
git 튜토리얼은 git 명령어를 시각 자료를 사용해 이해할 수 있도록 만든 웹페이지 기반 튜토리얼입니다.
</p>
<p>
add, stash는 본 튜토리얼에서 다루지 않습니다. 명령어를 직접 입력해 볼 수 있는 샌드박스에서는 버전 관리하고자
하는 파일이 모두 staging 영역에 올라와 있다고 가정하고 진행됩니다. add나 staging 영역에 관한 개념을 알고 싶다면
<a href="https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0">링크</a>를 참고하시기 바랍니다.
</p>
<p>
학습할 수 있는 명령어는 다음과 같습니다.
</p>
</div>
</div>
<div class="row command-list">
<div class="twocol">
<h4>기본 명령어</h4>
<a id="open-commit" class="openswitch" href="#commit">git commit</a>
<a id="open-branch" class="openswitch" href="#branch">git branch</a>
</div>
<div class="twocol">
<h4> </h4>
<a id="open-checkout" class="openswitch" href="#checkout">git checkout</a>
<a id="open-checkout-b" class="openswitch" href="#checkout-b">git checkout -b</a>
</div>
<div class="twocol">
<h4>commit 되돌리기</h4>
<a id="open-reset" class="openswitch" href="#reset">git reset</a>
<a id="open-revert" class="openswitch" href="#revert">git revert</a>
</div>
<div class="twocol">
<h4>브랜치 병합하기</h4>
<a id="open-merge" class="openswitch" href="#merge">git merge</a>
<a id="open-rebase" class="openswitch" href="#rebase">git rebase</a>
</div>
<div class="twocol">
<h4>remote 리포지토리</h4>
<a id="open-fetch" class="openswitch" href="#fetch">git fetch</a>
<a id="open-pull" class="openswitch" href="#pull">git pull</a>
</div>
<div class="twocol last">
<h4> </h4>
<a id="open-push" class="openswitch" href="#push">git push</a>
<a id="open-tag" class="openswitch" href="#tag">git tag</a>
</div>
</div>
<div class="row concept-area">
<div id="ExplainGitCommit-Container" class="twelvecol concept-container">
<p>
commit 하고자 하는 파일들이 staging 영역에 올라와 있다고 가정합시다. 왼쪽 하단에 <span class="cmd">git commit</span>
을 입력하고 엔터를 누르면 커밋이 완료됩니다. 원하는 만큼 커밋을 자유롭게 만들어보세요.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitTag-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git tag name</span> will create a new tag named "name".
Creating tags just creates a new tag pointing to the currently checked out commit.
</p>
<p>
Tags can be deleted using the command <span class="cmd">git tag -d name</span> (coming soon).
</p>
<p>
Type <span class="cmd">git commit</span> and <span class="cmd">git tag</span> commands
to your hearts desire until you understand this concept.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitBranch-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git branch name</span>을 입력하면 'name'이라는 이름을 가진 브랜치가 만들어집니다.
브랜치를 만드는 것은 현재 체크아웃된 커밋을 가르키는 이름표를 만드는 것이라고 생각하시면 됩니다.
</p>
<p>
<span class="cmd">git branch -d name</span>을 입력하면 name 브랜치를 삭제할 수 있습니다.
</p>
<p>
브랜치 개념에 대해 잘 알 수 있을 때까지 <span class="cmd">git commit</span>과 <span class="cmd">git branch</span>를
자유롭게 입력해보세요.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitCheckout-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git checkout</span>은 다양한 상황에서 쓸 수 있는 명령어인데, 주로 브랜치 사이를 왔다 갔다 할 때
사용합니다.</br> <span class="cmd">git checkout dev</span>을 입력하면 master 브랜치에서 dev 브랜치로 이동할 수
있죠. 직접 명령어를 입력해 dev 브랜치로 이동한 후, commit을 하나 만들어 어떤 일이 일어나는지 살펴봅시다.
</p>
<p>
브랜치를 체크아웃 할 수도 있지만, 개별 커밋을 체크아웃하는 것도 가능합니다. 실제로 해봅시다.</br>
새로운 커밋을 몇 개 만든 후 <span class="cmd">git checkout bb92e0e</span>을 입력해 ID가 bb92e0e인 커밋을
체크아웃하고 무슨 일이 일어나는지 살펴봅시다.
</p>
<p>
<span class="cmd">git commit</span>, <span class="cmd">git branch</span>, <span class="cmd">git checkout</span>을
여러 번 번갈아 입력하면서 세 명령어가 익숙해질 때까지 자유롭게 실습해보세요.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitCheckout-b-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git checkout -b name</span>은 <span class="cmd">git branch name</span>과
<span class="cmd">git checkout name</span>을 하나로 합친 명령어입니다.
<span class="cmd">name</span>이라는 브랜치가 생성되어이있지 않다는 가정하에,
<span class="cmd">git checkout -b name</span>을 입력하면 <span class="cmd">name</span>이라는 브랜치가 만들어지면서
동시에 해당 브랜치를 체크아웃하게 됩니다.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitReset-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git reset</span>을 사용하면 현재 체크아웃한 브랜치의 원하는 과거 커밋으로 HEAD를 이동시키고,
그 이후의 커밋들은 모두 버릴 수 있습니다. 원치 않는 커밋을 되돌릴 때 유용한 명령어 입니다.
</p>
<p>
reset 명령어는 보통 <span class="cmd">--soft</span>, <span class="cmd">--mixed</span>, <span class="cmd">--hard</span>
플래그(flag) 중 하나를 붙여서 사용합니다. soft와 mixed 플래그는 reset으로 되돌린 커밋에 있는 내용을 가지고 무언가를
다시 하고 싶을 때 주로 사용합니다. 자세한 내용은
<a href="https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Reset-%EB%AA%85%ED%99%95%ED%9E%88-%EC%95%8C%EA%B3%A0-%EA%B0%80%EA%B8%B0#_git_reset">링크</a>
에서 확인해 보시기 바랍니다. 두 플래그는 시각적으로 표현할 수 없기 때문에 본 튜토리얼에선 hard 플래그만 사용하겠습니다.
</p>
<p>
reset은 <span class="cmd">HEAD^</span>와 함께 사용할 때가 많습니다. HEAD^는 'HEAD 바로 앞의 커밋'을 의미합니다.
<span class="cmd">HEAD^^</span>는 'HEAD 앞의 커밋 두 개'를 의미합니다. ^는 원하는 만큼 붙여서 사용할 수 있습니다.
</p>
<p>
remote 리포지토리에 이미 푸시했거나 머지된 커밋은 절대 <span class="cmd">git reset</span>을 사용해서 버리면 안 됩니다.
이렇게 하면 local 리포지토리와 remote 리포지토리의 싱크가 맞지 않기 때문입니다. reset, push 등에 대해 정확히 알기 전까지
reset을 함부로 사용하지 마세요!
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitRevert-Container" class="twelvecol concept-container">
<p>
이미 push되어서 팀원간에 공유되고 있는 커밋을 되돌릴 땐 <span class="cmd">git reset</span>을 사용할 수 없습니다.
대신 <span class="cmd">git revert</span>를 사용해야 합니다.
</p>
<p>
<span class="cmd">git revert</span>를 입력하면 되돌리려고 하는 커밋 안에 있는 작업을 삭제해주는 새로운 커밋이
만들어집니다.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitMerge-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git merge</span>를 사용하면 두 개의 부모 커밋을 가지는 새로운 커밋이 하나 만들어집니다.
이 커밋에는 두 브랜치에서 했던 작업의 스냅숏이 포함됩니다.
</p>
<p>
합치려는 두 개의 브랜치에 분기가 없었다면 'fast-forward' 전략을 사용해 머지합니다.</br>
ff 브랜치를 체크아웃하고 <span class="cmd">git merge dev</span>를 입력해 직접 확인해봅시다.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitRebase-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git rebase</span>를 사용하면 현재 체크아웃한 브랜치의 커밋들이 '베이스(기준)' 역할을 하는 브랜치
끝으로 '이동'합니다. <span class="cmd">dev</span> 브랜치를 체크아웃한 후, <span class="cmd">git rebase master</span>를
입력해 직접 확인해봅시다.
</p>
<p>
rebase를 사용할 때는 커밋 ID가 변한다는 점에 주의하셔야 합니다.
</p>
<p>
rebase를 하면 기존 커밋과 동일한 내용을 담은 '새로운 커밋'들이 '이동'하고, 기존 커밋들은
그 자리에 남아있습니다. 따라서 다른 사람에게 공유된 커밋이 들어있는 브랜치를 rebase하면 안됩니다.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitFetch-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git fetch</span> will update all of the "remote tracking branches" in your local repository.
Remote tracking branches are tagged in grey.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitPull-Container" class="twelvecol concept-container">
<p>
A <span class="cmd">git pull</span> is a two step process that first does a <span class="cmd">git fetch</span>,
and then does a <span class="cmd">git merge</span> of the remote tracking branch associated with your current branch.
If you have no current branch, the process will stop after fetching.
</p>
<p>
If the argument "--rebase" was given by typing <span class="cmd">git pull --rebase</span>, the second step of
pull process will be a rebase instead of a merge. This can be set to the default behavior by configuration by typing:
<span class="cmd">git config branch.BRANCHNAME.rebase true</span>.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitPush-Container" class="twelvecol concept-container">
<p>
A <span class="cmd">git push</span> will find the commits you have on your local branch that the corresponding branch
on the origin server does not have, and send them to the remote repository.
</p>
<p>
By default, all pushes must cause a fast-forward merge on the remote repository. If there is any divergence between
your local branch and the remote branch, your push will be rejected. In this scenario, you need to pull first and then
you will be able to push again.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitClean-Container" class="twelvecol concept-container">
<p>
One simple example of the use of <span class="cmd">git reset</span> is to completely restore your local repository
state to that of the origin.</br>
You can do so by typing <span class="cmd">git reset origin/master</span>.
</p>
<p>
Note that this won't delete untracked files, you will have to delete those separately with
the command <span class="cmd">git clean -df</span>.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitFetchRebase-Container" class="twelvecol concept-container">
<p>
Below is a situation in which you are working in a local branch that is all your own. You want to receive the latest code
from the origin server's master branch. To update your local branch, you can do it without having to switch branches!
</p>
<p>
First do a <span class="cmd">git fetch</span>, then type <span class="cmd">git rebase origin/master</span>!
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitDeleteBranches-Container" class="twelvecol concept-container">
<p>
<span class="cmd">git branch -d</span> is used to delete branches.
I have pre-created a bunch of branches for you to delete in the playground below.
Have at it.
</p>
<div class="playground-container"></div>
</div>
<div id="ExplainGitFree-Container" class="twelvecol concept-container">
<p>
Do whatever you want in this free playground.
</p>
<div class="playground-container"></div>
</div>
</div>
<!-- <div class="row">-->
<!-- <div class="twelvecol">-->
<!-- <h2>Specific Examples</h2>-->
<!-- <p>Below I have created some specific real-world scenarios that I feel are quite common and useful.</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="row example-list">-->
<!-- <div class="tencol">-->
<!-- <a id="open-clean" class="openswitch" href="#clean">Restore Local Branch to State on Origin Server</a>-->
<!-- <a id="open-fetchrebase" class="openswitch" href="#fetchrebase">Update Private Local Branch with Latest from Origin</a>-->
<!-- <a id="open-deletebranches" class="openswitch" href="#deletebranches">Deleting Local Branches</a>-->
<!-- </div>-->
<!-- <div class="twocol last">-->
<!-- <a id="open-freeplay" class="openswitch" href="#freeplay">Free Playground</a>-->
<!-- <a id="open-zen" class="openswitch" href="#zen">Zen Mode</a>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<div id="ExplainGitZen-Container" style="display:none">
<div class="playground-container"></div>
</div>
<svg version="1.1" baseProfile="full"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ev="http://www.w3.org/2001/xml-events"
width="0" height="0">
<marker id="triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#666"
markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="faded-triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#DDD"
markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
<marker id="brown-triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#663300"
markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
<path d="M 0 0 L 10 5 L 0 10 z"/>
</marker>
</svg>
<script type="text/javascript">
require(['explaingit'], function (explainGit) {
var examples = {
'commit': {
name: 'Commit',
height: 200,
baseLine: 0.4,
commitData: [
{id: 'e137e9b', tags: ['master']}
],
initialMessage: 'git commit을 여러 번 입력해보세요.'
},
'branch': {
name: 'Branch',
baseLine: 0.6,
commitData: [
{id: 'e137e9b', tags: ['master']}
]
},
'tag': {
name: 'Tag',
baseLine: 0.6,
commitData: [
{id: 'e137e9b', tags: ['master']}
]
},
'checkout': {
name: 'Checkout',
height: 500,
commitData: [
{id: 'e137e9b'},
{id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
{id: 'e088135', parent: 'e137e9b', tags: ['dev']}
],
initialMessage:
'git checkout, git branch, git commit을 자유롭게 입력해보세요.'
},
'checkout-b': {
name: 'Checkout-b',
height: 500,
commitData: [
{id: 'e137e9b'},
{id: 'f5b32c8', parent: 'e137e9b'},
{id: 'bb92e0e', parent: 'f5b32c8', tags: ['master']},
{id: 'e088135', parent: 'e137e9b', tags: ['dev']}
],
initialMessage:
'git checkout -b와 git commit을 자유롭게 입력해보세요.'
},
'reset': {
name: 'Reset',
height: 200,
baseLine: 0.5,
commitData: [
{id: 'e137e9b'},
{id: '0e70093', parent: 'e137e9b'},
{id: 'bb92e0e', parent: '0e70093'},
{id: 'e088135', parent: 'bb92e0e'},
{id: '3e33afd', parent: 'e088135', tags: ['master']}
],
initialMessage: 'git reset HEAD^를 입력해보세요.'
},
'revert': {
name: 'Revert',
height: 200,
baseLine: 0.5,
commitData: [
{id: 'e137e9b'},
{id: '0e70093', parent: 'e137e9b'},
{id: '3e33afd', parent: '0e70093'},
{id: 'e088135', parent: '3e33afd', tags: ['master']}
],
initialMessage: 'git revert 0e70093를 입력해보세요.'
},
'merge': {
name: 'Merge',
height: 500,
commitData: [
{id: 'e137e9b'},
{id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
{id: 'f5b32c8', parent: 'e137e9b', tags: ['ff']},
{id: 'e088135', parent: 'f5b32c8', tags: ['dev']}
],
initialMessage:
'git merge dev를 입력해보세요.'
},
'rebase': {
name: 'Rebase',
height: 500,
commitData: [
{id: 'e137e9b'},
{id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
{id: 'f5b32c8', parent: 'e137e9b'},
{id: 'e088135', parent: 'f5b32c8', tags: ['dev']}
],
initialMessage:
'git rebase master를 입력해보세요.'
},
'fetch': {
name: 'Fetch',
height: 500,
commitData: [
{id: 'e137e9b', tags: ['origin/master']},
{id: '6ce726f', parent: 'e137e9b'},
{id: 'bb92e0e', parent: '6ce726f', tags: ['master']},
{id: '0cff760', parent: 'e137e9b', tags: ['origin/dev']},
{id: '4ed301d', parent: '0cff760', tags: ['dev']}
],
originData: [
{id: 'e137e9b'},
{id: '7eb7654', parent: 'e137e9b'},
{id: '090e2b8', parent: '7eb7654'},
{id: 'ee5df4b', parent: '090e2b8', tags: ['master']},
{id: '0cff760', parent: 'e137e9b'},
{id: '2f8d946', parent: '0cff760'},
{id: '29235ca', parent: '2f8d946', tags: ['dev']}
],
initialMessage:
'Carefully compare the commit IDs between the origin and the local repository. ' +
'Then type "git fetch".'
},
'pull': {
name: 'Pull',
height: 500,
commitData: [
{id: 'e137e9b', tags: ['origin/master']},
{id: '46d095b', parent: 'e137e9b', tags: ['master']}
],
originData: [
{id: 'e137e9b'},
{id: '7eb7654', parent: 'e137e9b'},
{id: '090e2b8', parent: '7eb7654'},
{id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
],
initialMessage:
'Carefully compare the commit IDs between the origin and the local repository. ' +
'Then type "git pull".'
},
'push': {
name: 'Push',
height: 500,
commitData: [
{id: 'e137e9b', tags: ['origin/master']},
{id: '46d095b', parent: 'e137e9b', tags: ['master']}
],
originData: [
{id: 'e137e9b'},
{id: '7eb7654', parent: 'e137e9b', tags: ['master']}
],
initialMessage:
'Carefully compare the commit IDs between the origin and the local repository. ' +
'Then type "git push".'
},
'clean': {
name: 'Clean',
height: 200,
baseLine: 0.4,
commitData: [
{id: 'e137e9b', tags: ['origin/master']},
{id: '0e70093', parent: 'e137e9b'},
{id: '3e33afd', parent: '0e70093', tags: ['master']}
],
initialMessage: 'Type "git reset origin/master".'
},
'fetchrebase': {
name: 'FetchRebase',
height: 500,
commitData: [
{id: 'e137e9b', tags: ['origin/master', 'master']},
{id: '46d095b', parent: 'e137e9b'},
{id: 'dccdc4d', parent: '46d095b', tags: ['my-branch']}
],
currentBranch: 'my-branch',
originData: [
{id: 'e137e9b'},
{id: '7eb7654', parent: 'e137e9b'},
{id: '090e2b8', parent: '7eb7654'},
{id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
],
initialMessage:
'First type "git fetch". Then type "git rebase origin/master".'
},
'deletebranches': {
name: 'DeleteBranches',
height: 500,
baseLine: 0.6,
commitData: [
{id: 'e137e9b'},
{id: 'bb92e0e', parent: 'e137e9b'},
{id: 'd25ee9b', parent: 'bb92e0e', tags: ['master']},
{id: '071ff28', parent: 'e137e9b', tags: ['protoss']},
{id: 'f5b32c8', parent: 'bb92e0e'},
{id: 'e088135', parent: 'f5b32c8', tags: ['zerg']},
{id: '9e6c322', parent: 'bb92e0e'},
{id: '593ae02', parent: '9e6c322', tags: ['terran']}
],
currentBranch: 'terran',
initialMessage:
'Delete some branches.'
},
'freeplay': {
name: 'Free',
height: 500,
commitData: [
{id: 'e137e9b', tags: ['origin/master', 'master']}
],
originData: [
{id: 'e137e9b'},
{id: '7eb7654', parent: 'e137e9b'},
{id: '090e2b8', parent: '7eb7654'},
{id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
],
initialMessage:
'Have fun.'
}
};
window.addEventListener('hashchange', open, false);
window.addEventListener('load', open, false);
function open() {
var hash = window.location.hash.substr(1),
linkId = 'open-' + hash,
example = examples[hash];
if (example) {
explainGit.reset();
document.getElementById(linkId).classList.add('selected');
explainGit.open(example);
} else if (hash === 'zen') {
var elements = document.getElementsByClassName('row');
for(var i = 0; i != elements.length; ++i)
{
elements[i].style.display = 'none';
}
document.getElementById('fork-me').style.display = 'none';
explainGit.reset();
explainGit.open({
name: 'Zen',
height: '100%',
commitData: [
{id: 'e137e9b', tags: ['master'], message: 'first commit'}
],
initialMessage:
'Have fun.'
});
}
}
});
</script>
</body>
</html>