-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgit_intro.html
325 lines (221 loc) · 14.3 KB
/
git_intro.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
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Git — ClojureBridgeMN Documentation November 4-5, 2016 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="index" title="Index"
href="genindex.html"/>
<link rel="search" title="Search" href="search.html"/>
<link rel="top" title="ClojureBridgeMN Documentation November 4-5, 2016 documentation" href="index.html"/>
<link rel="up" title="Welcome to ClojureBridge" href="welcome.html"/>
<link rel="next" title="Track 1" href="track1.html"/>
<link rel="prev" title="What is programming?" href="why_clojure.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> ClojureBridgeMN Documentation
</a>
<div class="version">
Saturday Nov 5 2016 @ 15:59:08 futuro
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="setup.html">Installfest</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="welcome.html">Welcome to ClojureBridge</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="welcome.html#agenda">Agenda</a></li>
<li class="toctree-l2"><a class="reference internal" href="welcome.html#introductions">Introductions</a></li>
<li class="toctree-l2"><a class="reference internal" href="welcome.html#you-are-here">You are here!</a></li>
<li class="toctree-l2"><a class="reference internal" href="welcome.html#why-clojure">Why Clojure?</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="welcome.html#using-git-to-save-your-programs">Using git to save your programs</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">Using git to save your programs</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#what-is-version-control">What is version control?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#why-use-version-control-git">Why use version control/git?</a></li>
<li class="toctree-l4"><a class="reference internal" href="#github-vs-git">Github vs git</a></li>
<li class="toctree-l4"><a class="reference internal" href="#git-basics-commands-and-theory">Git basics - Commands and theory</a></li>
<li class="toctree-l4"><a class="reference internal" href="#more-resources">More Resources</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="track1.html">Track 1</a></li>
<li class="toctree-l1"><a class="reference internal" href="track2.html">Track 2</a></li>
<li class="toctree-l1"><a class="reference internal" href="resources.html">Clojure Resources</a></li>
<li class="toctree-l1"><a class="reference internal" href="community.html">Connect with the Clojure Community</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">ClojureBridgeMN Documentation</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li><a href="welcome.html">Welcome to ClojureBridge</a> »</li>
<li>Git</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/git_intro.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="git">
<h1>Git<a class="headerlink" href="#git" title="Permalink to this headline">¶</a></h1>
<div class="section" id="what-is-version-control">
<h2>What is version control?<a class="headerlink" href="#what-is-version-control" title="Permalink to this headline">¶</a></h2>
<p>One way to think about version control is in the context of some software tool you currently use. Every few months you get a new ‘version’ of the tool you are using. The code that was written to create the software tool is the same original files, but in this new version some of the files may have been changed to add a new feature or fix a bug (broken code). Git is one of the tools that developers use to be able to facilitate multiple versions of the same code.</p>
<div class="section" id="some-other-analogies">
<h3>Some other analogies:<a class="headerlink" href="#some-other-analogies" title="Permalink to this headline">¶</a></h3>
<ul class="simple">
<li>track changes or history in a word or google doc</li>
<li>a checkpoint in a video game</li>
</ul>
</div>
</div>
<div class="section" id="why-use-version-control-git">
<h2>Why use version control/git?<a class="headerlink" href="#why-use-version-control-git" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Various version of the same code. To maintain the history. You can go back and view what the code used to look like or even go back in time to fix something the broke.</li>
<li>As a collaboration tool. When many developers work on the same files it can be complicated and time consuming to combine all the changes. Version control helps developers make changes in parallel and handle conflicts.</li>
</ul>
<div class="section" id="why-git">
<h3>Why git?<a class="headerlink" href="#why-git" title="Permalink to this headline">¶</a></h3>
<p>The git documentation covers this topic very well <a class="reference external" href="https://git-scm.com/about">here</a> if you want to more in depth to why git.</p>
</div>
</div>
<div class="section" id="github-vs-git">
<h2>Github vs git<a class="headerlink" href="#github-vs-git" title="Permalink to this headline">¶</a></h2>
<div class="section" id="id1">
<h3>git<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
<p>git is a command line tool (in your terminal), that allows us to get all the benefits described above. You can do all you need locally (on your computer) without connecting to the internet. See the <a class="reference external" href="#why-git">Why git?</a> section for more detail, but it’s local capabilities are one of it’s main advantages.</p>
</div>
<div class="section" id="github">
<h3>Github<a class="headerlink" href="#github" title="Permalink to this headline">¶</a></h3>
<p>Github is a web application built on top of git. It adds some additional functionality and some nice UIs (user interfaces) to make things easier to read. The main benefit is it easily helps us collaborate with other developers. We can put our code up on Github and others can collaborate on the project, use our code as an example, or give us feedback on what we are writing.</p>
<p>You may hear people say “remote repository” this is what Github is. A place not on our computer where we can store our code.</p>
<p>There are other similar services. Github is just one that is popular and we will be using during the workshop.</p>
</div>
</div>
<div class="section" id="git-basics-commands-and-theory">
<h2>Git basics - Commands and theory<a class="headerlink" href="#git-basics-commands-and-theory" title="Permalink to this headline">¶</a></h2>
<p>We are going to learn five basic command that will get you started with git in your terminal. You will see references to these throughout the curriculum, but feel free to come back to these notes if you need a reminder.</p>
<div class="section" id="commits">
<h3>Commits<a class="headerlink" href="#commits" title="Permalink to this headline">¶</a></h3>
<p>Commits are sets of changes to the code that we can move through to see the history of all the files. They capture what the code looked like at the time of the commit.</p>
</div>
<div class="section" id="workflow-diagram">
<h3>Workflow Diagram<a class="headerlink" href="#workflow-diagram" title="Permalink to this headline">¶</a></h3>
<p>We will reference this diagram in the descriptions below.</p>
<p><img alt="git workflow diagram" src="_images/git-workflow.png" /></p>
</div>
<div class="section" id="git-init">
<h3>git init<a class="headerlink" href="#git-init" title="Permalink to this headline">¶</a></h3>
<p>This command turns the folder your code is in into a local git repository.</p>
<div class="highlight-none"><div class="highlight"><pre><span></span>$: cd project-folder
$: git init
</pre></div>
</div>
</div>
<div class="section" id="git-status">
<h3>git status<a class="headerlink" href="#git-status" title="Permalink to this headline">¶</a></h3>
<p>This command prints out the current state of your local repository. It will show you the files git is tracking or not, what changes have been made, and what changes are staged for commit. This is a command developers run frequently and inbetween different stages.</p>
<div class="highlight-none"><div class="highlight"><pre><span></span>$: git status
</pre></div>
</div>
</div>
<div class="section" id="git-add">
<h3>git add<a class="headerlink" href="#git-add" title="Permalink to this headline">¶</a></h3>
<p>When you are happy with a change (or changes) you need to move them to the staging area. Files in the staging are in green when you run the <code class="docutils literal"><span class="pre">git</span> <span class="pre">status</span></code> command. All staged changes will be included in your next commit.</p>
</div>
<div class="section" id="git-commit-m">
<h3>git commit -m<a class="headerlink" href="#git-commit-m" title="Permalink to this headline">¶</a></h3>
<p>Like mentioned earlier, a commit a snapshot of the code at that time. This command takes the staged changes and makes that snapshot. The command also takes a message that describes the changes being committed.</p>
<div class="highlight-none"><div class="highlight"><pre><span></span>$: git commit -m "useful message describing the change"
</pre></div>
</div>
</div>
<div class="section" id="create-a-remote-and-link-to-remote-repository">
<h3>create a remote and link to remote repository<a class="headerlink" href="#create-a-remote-and-link-to-remote-repository" title="Permalink to this headline">¶</a></h3>
<p>Instructions for how to do this can be found <a class="reference external" href="https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/">here</a>. Github will give us some additional commands to link the local with the remote repository. For now copy and paste these to set up tracking.</p>
</div>
<div class="section" id="git-push">
<h3>git push<a class="headerlink" href="#git-push" title="Permalink to this headline">¶</a></h3>
<p>Now the changes are in the local repository, it is time to put them on the remote repository to share the code you wrote (with a friend!). This command will do that!</p>
<div class="highlight-none"><div class="highlight"><pre><span></span>$: git push
</pre></div>
</div>
</div>
</div>
<div class="section" id="more-resources">
<h2>More Resources<a class="headerlink" href="#more-resources" title="Permalink to this headline">¶</a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference external" href="https://git-scm.com/doc">git documentation</a></li>
<li class="toctree-l1"><a class="reference external" href="https://services.github.com/kit/downloads/github-git-cheat-sheet.pdf">Github Cheat Sheet</a></li>
<li class="toctree-l1"><a class="reference external" href="http://ndpsoftware.com/git-cheatsheet.html">Visual Git Cheat Sheet</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="track1.html" class="btn btn-neutral float-right" title="Track 1" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="why_clojure.html" class="btn btn-neutral" title="What is programming?" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2016 ClojureBridgeMN volunteers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'November 4-5, 2016',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>