-
Notifications
You must be signed in to change notification settings - Fork 1
/
relsoul.txt
243 lines (117 loc) · 4.9 KB
/
relsoul.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
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
本文是GitHub个人学习笔记.
下载与安装GitHub
下载 GitHub For Windows :https://windows.github.com/
PS:推荐架设VPN..下载和访问速度不忍直视啊
Git Shell
创建版本库
在桌面打开Git Shell即进入了shell模式
新建文件夹>> mkdir初始化版本库>> git init
添加文件
添加文件>>git add [file1 file2 file3...]
提交文件到仓库>>git commit -m "第一次提交文件压力山大"
回溯
查看是否存在改动未提交的文件>>git status
查看文件改动信息>>git diff
查看git改动日志>>git log
简单显示git改动日志>>git log --pretty=oneline
回溯git>>git reset --hard HEAD^ 一个^代表回溯到上一个版本^^两个回溯到上上个版本....
显示回溯日志>>git reflog
回溯git(通过commit id)>>git reset --hard 3628164
工作区与暂存区详细说明:click
git add提交说明
git做的是修改管理,修改包括.文件,动作
比如第一次我在readme.txt文件写了一行
hello world
然后用git add命令进行添加,但是我突然想写一行
bey bey
于是修改后不再次添加直接 git commit -m "xxx"
然后再执行git status发现还有个readme.txt文件修改未被提交
原理很简单
第一次add添加的是hello world 这个文件放到了缓存区
然后你又添加了一行代码 beybey 于是这个文件又被放到了缓存区
也就是说缓存区有两个readme.txt
理解了后就好办了,可以第一次修改的时候不add readme.txt
或者第二次修改后再次使用 add readme.txt合并两个文件 再进行git commit -m添加
用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
撤销修改
回到最近一次git commit或git add时的状态>>git checkout -- readme.txt
添加到缓存区后撤销操作>>git reset HEAD file (然后再用checkout命令继续撤销)
撤销添加到本地仓库未添加到远程仓库>>git reset --hard HEAD^
删除文件
从版本库中删除文件>>git rm flie
接着再提交动作 git commit -m "删除一个文件"
远程仓库
添加远程库>>git remote add 代号(自行填写) git@github.com:你的账户名/仓库名.git
错误提示:(本地已经存在这个远程仓库) fatal: remote origin already exists.
解决办法:(移除这个远程仓库) git remote rm origin
推送文件至远程库>>git push -u origin master
PS:由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
克隆远程库
git clone git@github.com:账户名/仓库名.git
创建与合并分支
创建切换到dev分支>>git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
查看当前分支>>git branch (git branch命令会列出所有分支,当前分支前面会标一个*号)
切换分支>>git checkout 分支名
合并分支>>git merge 分支名(移动到其他分支后使用此命令合并分支名)
删除分支>>git branch -d 分支名
解决合并冲突
首先创建一个git checkout -b soul分支soul
然后再readme.txt文件增加一行
soul readme
提交一下readme.txt
然后切换回master分支
然后修改master分支下的readme.txt
master readme
提交一下readme.txt
然后执行一下合并git merge soul
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
发现会报错 git无法执行快速合并
用git status也会提示冲突文件
于是我们需要手动处理
查看readme.txt文件
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
我们修改readme.txt文件
删除git生成的<<<<< ====== >>>>>>然后把test分支上readme.txt的内容添加到readme.txt里就ok了
然后git add readme.txt git commit -m "fix"
分支管理策略
通常合并分支git都是使用Fast forward,但这种模式下,删除分支后,会丢掉分支信息
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy. readme.txt | 1 +
1 file changed, 1 insertion(+)
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
Bug分支
比如我在dev分支下修改readme.txt时需要去master分支上修改一个bug
于是我可以利用
储藏>>git stash
当前的工作 然后切换至master上创建一个临时分支bugfix然后修改readme.txt
修改完毕后git add readme.txt; git commit -m "fixbug"
然后切换到master分支来
git merge --no-ff -m "merged bug fix 101" bugfix
合并下bugfix 然后
git branch -d bugfix
删除这个分支
切换到dev分支
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:再用git stash list查看,就看不到任何stash内容了:
利用 git stash pop恢复下内容 就可以继续工作了
强行删除分支
在未合并分支的情况下删除分支
git branch -d bugfix git会报错
于是我们可以使用
强行删除>>git branch -D (其实就把小写d改为大写D)
然后就删除完毕了
多人协作
真羡慕有两台电脑的人2333
详情去click me 这个网站观看~