-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGitTalk01.tex
257 lines (237 loc) · 6.82 KB
/
GitTalk01.tex
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
\input{LatexConfig.tex}
\usepackage{pmboxdraw}
\usepackage{newunicodechar}
\newunicodechar{└}{\textSFii}
\newunicodechar{├}{\textSFviii}
\newunicodechar{─}{\textSFx}
\newunicodechar{│}{\textSFxi}
\begin{document}
\PreFirstFrame
\begin{frame} [fragile]
\centerline{\fontsize{42}{42}\selectfont Git Talk 1}
\end{frame}
\PostFirstFrame
\begin{frame} [fragile]
\frametitle{Git是什么}
\linespread{1.5}
\begin{itemize}
\item Git是目前世界上最先进的分布式版本控制系统
\begin{itemize}
\item 来自\href{https://www.liaoxuefeng.com/wiki/896043488029600}
{廖雪峰的官方网站}教程
\item HCC目前的所有项目,包括幻灯片都在用Git管理
\end{itemize}
\end{itemize}
\
\centerline{\includesvg{assets/git-logo}}
\end{frame}
\begin{frame} [fragile]
\frametitle{Git设计理念}
\linespread{1.5}
\begin{itemize}
\item Git的项目管理方式
\begin{itemize}
\item 工作区
\item 暂存区
\item 版本库
\end{itemize}
\item 例
\linespread{0}
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
shiyiquan # 项目目录
@├─@.git # 隐藏目录
@│@ @├─暂存区@ # 临时存储
@│@ @└─版本库@ # 永久存储
@│@ @├─@98d22f3 # 一个版本
@│@ @└─@118532c # 另一个版本
@├─@shiyiquan # 工作区文件
@└─@README.md # 可随意更改
\end{lstlisting}
\linespread{1.5}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{基础操作}
\linespread{1.25}
\begin{itemize}
\item 创建版本库
\begin{lstlisting}[style=bashstyle, gobble=4, texcl]
mkdir hcc # 创建项目目录
cd hcc # cd 进去
git init # 创建git目录结构
\end{lstlisting}
\item 开始工作
\begin{lstlisting}[style=bashstyle, gobble=4, texcl]
cat > jkl # 假设jkl是我们正在编写的文件
\end{lstlisting}
\item 提交代码
\begin{lstlisting}[style=bashstyle, gobble=4, texcl]
git add jkl # 工作区$\to$暂存区
git add -A # 添加全部文件
git commit # 暂存区$\to$版本库
# 第一次提交需设置用户
# 和vi操作一样
\end{lstlisting}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{状态查看}
\linespread{1.25}
\begin{itemize}
\item 命令
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
git status # 检查状态
git @diff@ # 对比工作区和暂存区
git log # 查看版本库日志
\end{lstlisting}
\item 尝试
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
cat >> tmp # 输入一些内容
git add -A
cat >> tmp # 再输入一些内容
git status
git @diff@
git log # 按q退出
\end{lstlisting}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{高级选项}
\linespread{1.5}
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
git log
--oneline # 摘要模式(左侧是版本号的前几位)
--graph # 显示版本关系图(在复杂时后很有用)
git commit
-m "@\color{Pink}提交说明@" # 不进入vi
\end{lstlisting}
\end{frame}
\begin{frame} [fragile]
\frametitle{回溯}
\linespread{1.25}
\begin{itemize}
\item 命令
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
git reset --hard @版本号@
HEAD^ # 当前版本的前一个版本
HEAD~10 # 前10个版本
\end{lstlisting}
\item 回溯后将很难看到更靠后的版本
\item 查看操作记录
\begin{itemize}
\item \inlineBash{git reflog}
\item 可以看到以后的版本并跳转回去
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{连接远程版本库}
\linespread{1.5}
\begin{itemize}
\item 通过连接提供git服务的服务器和开发团队同步代码
\begin{itemize}
\item \inlineBash{git remote add origin 链接}
\end{itemize}
\item 如何获得链接
\begin{itemize}
\item 服务商一般会提供链接,复制粘贴即可
\item 一般链接是有规律的,例如
\begin{itemize}
\item \texttt{https://github.com/用户/项目.git}
\item \texttt{[email protected]:用户/项目.git}
\end{itemize}
\item 链接甚至可以是一个本地的git目录
\item ``\texttt{origin}''是链接的名称,用于快速访问链接
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{推送和接收}
\linespread{1.5}
\begin{itemize}
\item 推送
\begin{itemize}
\item \inlineBash{git push origin master}
\item 将当前所在分支推送到origin的master分支
\end{itemize}
\item 接收
\begin{itemize}
\item \inlineBash{git pull origin master}
\item 将origin的master分支拉到当前分支
\end{itemize}
\item ``master''是默认分支名称
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{分支}
\linespread{1.25}
\begin{itemize}
\item 分支可以代表不同阶段的代码,可以互相合并
\item 创建
\begin{itemize}
\item \inlineBash{git branch dev}
\item 从当前分支创建dev分支
\end{itemize}
\item 跳转
\begin{itemize}
\item \inlineBash{git checkout dev}
\item 切换到dev分支
\end{itemize}
\item 合并
\begin{itemize}
\item \inlineBash{git merge master}
\item 将master分支合并到当前分支
\item 从网络拉取(\inlineBash{git pull})也可能会合并分支
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{分支练习}
\linespread{1.5}
\begin{itemize}
\item 从master开始执行
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
git branch dev
echo "master ver" >> jkl
git commit -am "Master" # -am等于add后提交
git checkout dev # jkl变了
echo "dev version" >> jkl
git commit -am "Dev"
git merge master # 出现冲突
\end{lstlisting}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{冲突}
\linespread{1.5}
\begin{itemize}
\item 冲突后git会提示冲突的文件,只要按照标记手动合并然后重新提交即可
\begin{lstlisting}[basicstyle=\ttfamily, gobble=4, texcl, escapechar=@]
@\color{Pink}<<<<<<< HEAD@ # @当前分支@
dev version
@\color{Pink}=======@ # @分割线@
master ver
@\color{Pink}>>>>>>> master@ # @合并分支@
\end{lstlisting}
\end{itemize}
\end{frame}
\begin{frame} [fragile]
\frametitle{其它功能}
\linespread{1.5}
\begin{lstlisting}[style=bashstyle, gobble=4, texcl, escapechar=@]
git tag # \href
{https://www.liaoxuefeng.com/wiki/896043488029600/900788941487552}{标记代码版本}
git stash # \href
{https://www.liaoxuefeng.com/wiki/896043488029600/900785521032192}{隐藏版本}
git config # 自定义git
.gitignore # \href
{https://www.liaoxuefeng.com/wiki/896043488029600/900004590234208}{忽略文件}
git grep # 全文搜索
\end{lstlisting}
\end{frame}
\PreLastFrame
\begin{frame}
\centerline{\fontsize{32}{32}\selectfont 感谢参加此次活动}
\end{frame}
\newpage
\end{document}