-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit.txt
More file actions
227 lines (115 loc) · 6.75 KB
/
git.txt
File metadata and controls
227 lines (115 loc) · 6.75 KB
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
git用法
https://gitee.com/
https://github.com/(git托管服务)
1、自报家门
git config --global user.name "angle"
git config --global user.email "Tab0836@163.com"
2、创建空的版本库
cd /d (切换到d盘)
mkdir repository
cd repository
pwd (展示当前目录)
git init(初始化,把这个目录变为git可以管理的仓库)
3、添加文件
在目录结构内创建README.md文件
git add README.md(添加文件到暂存区)
git commit -m "add README.md file"(提交到版本库)
4、查询仓库变化
git status (该命令可以使我们时刻掌握仓库当前状态)
git diff (我们能够通过该命令查看做了什么修改)
如果git status告诉我们有文件被修改过,用git diff可以查看修改内容。
5、版本回退
git log(查看提交操作日志)
git log命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以加上--pretty=oneline参数:
git reset --hard HEAD^返回上一级(Linux 命令中--后跟的是详细内容,
- 后跟的是简写内容,通常为一个子目)
git reset --hard 386435(回退到指定版本)
git reflog(查看命令历史,多用于恢复的未来每个版本,查看版本的id)
cat README.md(查看文本内容,Linux命令)
6、暂存区和工作区
add命令添加到暂存区 commit命令提交到分支
7、git管理的是修改
第一次修改--->git add--->第二次修改--->git commit
git diff HEAD -- README.md命令可以查看工作区和版本库里面最新版本的区别:
发现第二次修改未被提交
第一次修改--->git add--->第二次修改--->git add--->git commit
第二次修改已经入工作区
8、撤销修改
git checkout -- README.md
git checkout master切换分支(注意区别)
命令命令git checkout -- README.md意思就是,把README.md文件在工作区的修改全部撤销,这里有两种情况:
一种是README.md自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是README.md已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
9、删除文件
rm README.md(删除工作取的文件,Linux命令)
git rm README.md(删除仓库中的保存)
10、远程仓库
ssh-keygen -t rsa -C "Tab0836@163.com"
把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,
由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,
这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
11、添加远程仓库
git remote add origin git@github.com:ICoding/SourceTree.git
git push -u origin master (首次将本地master分支推送到远程,并将本地master分支和远程master分支进行关联)
git push origin master(再次推送)
12、从远程克隆
git clone git@github.com:ICoding/SourceTree.git
git clone https://github.com/ICoding/SourceTree.git
git支持多种协议,支持https,但通过ssh支持原生的git协议速度最快。
13、创建合并分支
git checkout -b dev(创建并且换分支)
相当于git branch dev(创建分支)和 git checkout dev
git branch (查看分支,*代表当前分支)
git check master 切换到分支,在执行 git merge dev(将指定分支合并到当前分支)
git branch -d dev (删除分支)
git branch -D feature-vulcan(未合并,强行删除分支)
git log --graph(可以查看分支合并图)
git merge --no-ff -m "merge with no-ff" dev
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git log --graph --pretty=oneline --abbrev-commit
14、解决冲突
手动合并,在次提交(先update,然后在冲突位置手动合并,在提交)
15、Bug分支
git stash(将当前工作进程储存来)
git stash list(查看刚刚保存的工作现场)
git stash apply(恢复工作现场)+git stash drop (删除工作现场)=git stash pop(恢复的同时也把给删除掉了)
16、远程库管理
git remote(查看远程库)
git remote -v(查看远程库的详细信息)
git checkout -b dev origin/dev(在本地创建远程dev的本地分支)
git pull(从远程抓取分支)
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
$ git branch --set-upstream dev origin/dev(指定本地dev分支与远程origin/dev分支的链接)
Branch dev set up to track remote branch dev from origin.
17、创建标签
git tag v1.0
git tag v0.9 6224937(将6224937的这次提交打上标签)
git show v1.0(查看标签信息)
git tag(列出标签)
git tag -a v4.2 -m "信息" (可以指定标签信息)
git tag -s v4.2 -m "信息" (可以用PGP签名标签)
18、操作标签
命令git push origin v4.04 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d v3.02 可以删除一个本地标签;
命令git push origin :refs/tags/v3.02 可以删除一个远程标签。(先删除本地,再删除远程)
19、自定义配置
git config --global color.ui true
让Git显示颜色,会让命令输出看起来更醒目
20、配置忽略文件
忽略文件的原则是:
忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生
成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
* 配置完忽略文件,并提交至git
* git add -f a.class(强制提交忽略配置文件)
* git check-ignore -v a.class 查看忽略信息
* 配置别名 git config --global alias.st status (git st)
*git config --global alias.unstage 'reset HEAD'