-
Notifications
You must be signed in to change notification settings - Fork 1
/
outline.txt
205 lines (189 loc) · 6.27 KB
/
outline.txt
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
Introduction to Git | Glenn Ansley | @glennansley | iThemes.com <http://ithemes.com>
-------------------
===========
= Outline =
===========
* Introduction Outline of the presentation
* What is Git? Version Control, Collaboration
* How does git control versioning? Distributed v. Central and DELTA storage v. DAG storage
* Pros and cons to Git Advantages and drawbacks compared to other systems
* How do you get Git? A couple common methods to install git
* Basic Concepts: Your Repo The internal organization of a git repository
* Basic Concepts: Your Branches What is a branch? What is its purpose?
* Basic Concepts: Your Workflow Some common workflows for individuals and teams
* How to: Collaboarte with others Github.com
* How to: Setup your environment Common tools for working with Git
* How to: Create a new repo Git commands and examples
* How to: Get repo information Status, Diffs, Logs
* How to: Add data to your repo Adding files, Committing files, Pushing / Pulling files
* How to: Utilize Git Branches List, create, modify, merge, rebase, delete
* Online Resources Several online resources for using git
* Questions Q & A
=================
= Introduction =
=================
* Glenn Ansley, iThemes
* Experience with Git
* Overview of Outline
=================
= What is Git? =
=================
* How many people have used Git in the past?
* How many people have used a different VCS?
* Can someone tell us what Git is in a couple of sentances?
* It's a tool used to track file revisions - versioning and history
* Especially powerful in instance involving multiple contributors to the files
* Git's creator, origin, and popularity - Linus Torvalds for Linux kernel development
=====================================
= How does git control versioning? =
=====================================
* There are two types of versioning
* DELTA - Each new version is a diff of the previous version
* DAG storage - Directed Acyclic Graph - stores a new version of the file with every commit
* There are different ways to manage these revisions
* Local - Stored locally on your machine
* Central - Think client / server
* Distributed - Peer to Peer rather than client / server
* Examples of different combinations
* DELTA/Local - RCS
* DELTA/Central - CVS, SVN
* DELTA/Distrib - Mercurial
* DAG/Local - cp -r
* DAG/Central - Git
========================
= Pros and Cons to Git =
========================
* Pros
* Fast
* Local Commits
* Branching (or rather remerging)
* One .git rather than multiple .SVN folders
* Multiple repositories
* Easy to start new repositories
* Flexible workflow
* Cons
* No built-in access control
* Learning curve is a bit steeper
* Weaker windows / GUI tools and documentation
* Large command base
* Must checkout complete repo
=======================
= How do you get Git? =
=======================
* Official - http://git-scm.com/download
* Linux - yum or aptitude install git-core
* Mac OSX - DMG package. Lion and Snow Leopard didn't ship with git
* Windows - Git installers
* http://book.git-scm.com/2_installing_git.html
=============================
= BASIC CONCEPTS: Your Repo =
=============================
* .git/
* .gitignore
* .git/config
* .git/description * .git/hooks/
* .git/exclude
* .git/objects/
* blob - files
* tree - directories
* commit - pointer to root tree
* tags - pointers to specfic commits (most of the time)
===================================
== BASIC CONCEPTS: Your Branches ==
===================================
* Powerful use
* Use them locally or publically
* Test features or bug fixes
=================================
= BASIC CONCEPTS: Your Workflow =
=================================
* Example One: Simple
* Create a new repo or clone one from elsewhere
* Add or modify files
* Commit them and possibly push to a remote locaiton
* Example Two: New feature
* Create a new repo or clone one from elsewhere
* Create a new branch for your new feature
* Make changes / test, commit
* Merge back into your master branch and possibly push
* Example Three: Collaborative Work
* Clone someone's repo or create your own and push it to a remote location
* Make changes on a branch
* Test and commit
* Checkout master branch
* Pull any updates made by partners
* Merge your branch
* Push back to remote repo
=================================
= HOW TO: Collaboarte with others
=================================
* Locally via ssh
* Online services
* Github.com
* Unfuddle.com
* Assembla.com
============================================
= HOW TO: SETTING UP YOUR ENVIRONMENT =
============================================
* vi ~/.gitconfig
* cat ~/.ssh/id_rsa.pub
=============================
= HOW TO: Create a new repo =
=============================
* Create an empty repo:
* git init
* Create from an existing repo (I'm doing it from github)
* mkdir Intro-to-Git-Example
* cd Intro-to-Git-Example
* git init
* git remote add origin git@github.com:glennansley/Intro-to-Git.git
* git pull origin master
* Create from an existing repo w/o write access
* mkdir Intro-to-Git-Read-Example
* cd Intro-to-Git-Read-Example
* git clone git://github.com/glennansley/Intro-to-Git.git .
* Create a WordPress repo from github
* git clone https://github.com/WordPress/WordPress.git ./wordpress
* cd wordpress
* ls
=====================================================
= How to: Get repo information
=====================================================
* Git Status
* git status
* git remote
* git branch
* git branch -a
* git tag -l
* Git Diff
* git diff
* Git Logs
* git log
=================================
= How to: Add data to your repo =
=================================
* Adding files
* vi new-file.txt
* git status
* git add new-file.txt
* git status
* Committing Files
* git commit -m 'This is a new file'
* git status
* git log
* Pushing Files
* git push origin
================================
= How to: Utilize Git Branches =
================================
* git branch
* git branch -a
* git checkout branchname
* git checkout -b newbranch
* git merge master
* get rebase master
* git branch -d branchname
====================
= Online Resources =
====================
* https://gist.github.com/1347681