-
Notifications
You must be signed in to change notification settings - Fork 0
/
git常用命令.txt
205 lines (156 loc) · 6.24 KB
/
git常用命令.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
git常用命令:
1.安装:
apt-get install git
下载地址:
https://github.com/git-for-windows/git/releases/
2.配置用户名与邮箱:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
3.创建版本库: windows系统不要采用中文目录
$ mkdir gitstore
$ cd gitstore
$ pwd
/f/gitstore/
初始化:
$ git init
提交到缓存区:
$ git add readme.txt
提交到仓库:
$ git commit -m "wrote a readme file"
4.版本库:
查看版本库状态状态:
$ git status
对比文件
$ git diff readme.txt
查看历史记录:
$ git log
$ git log --pretty=oneline
版本回退:
$ git reset --hard HEAD^
回退到指定版本:
$ git reset --hard 3628164
工作区 ---> 版本库
├─ 暂存区 index
├─ 分支master 指向master的一个指针叫HEAD
查看命令执行记录:
$ git reflog
对比工作区、版本库指定文件:
$ git diff HEAD -- readme.txt
丢弃工作区的修改:
$ git checkout -- readme.txt
撤销暂存区的修改,放回工作区:
$ git reset HEAD readme.txt
从版本库删除文件:
$ git rm test.txt
5.远程仓库:
创建 SSH KEY
$ ssh-keygen -t rsa -C "youremail@example.com"
执行后,会创建id_rsa和id_rsa.pub两个文件
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
将已有的本地仓库与之关联
$ git remote add origin git@github.com:franaustin/work_env.git
把本地库的所有内容推送到远程库上: 第一次推送master分支的所有内容
$ git push -u origin master
推送最新修改
git push origin master
克隆一个本地库:
$ git clone git@github.com:michaelliao/gitskills.git
6.分支:
创建dev分支,然后切换到dev分支:
$ git checkout -b dev
查看当前分支: 当前分支前面会标一个*号
$ git branch
切换回master分支:
$ git checkout master
把dev分支的工作成果合并到master分支上:
$ git merge dev
$ git merge --no-ff -m "merge with no-ff" dev
加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,
默认用fast forward模式,而fast forward合并就看不出来曾经做过合并
删除dev分支:
$ git branch -d dev
git log也可以看到分支的合并情况:
$ git log --graph --pretty=oneline --abbrev-commit
把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
$ git stash
查看工作现场存储:
$ git stash list
恢复工作现场:
$ git stash pop
恢复工作现场,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了
强行删除分支: 分支名feature-vulcan
$ git branch -D feature-vulcan
查看远程库信息:
$ git remote
$ git remote -v
在本地创建和远程分支对应的分支,使用: 本地和远程分支的名称最好一致
git checkout -b branch-name origin/branch-name
建立本地分支和远程分支的关联,使用:
git branch --set-upstream branch-name origin/branch-name
7.标签:
打一个新标签:
$ git tag v1.0
$ git tag v0.9 6224937 #对 6224937 这次提交打标签
$ git tag -a v0.1 -m "version 0.1 released" 3628164
查看所有标签:
$ git tag
标签信息:
$ git show v0.1
还可以通过-s用私钥签名一个标签: 签名采用PGP签名,因此,必须首先安装gpg(GnuPG)
$ git tag -s v0.2 -m "signed version 0.2 released" fec145a
删除标签:
$ git tag -d v0.1
如果要推送某个标签到远程,使用命令git push origin <tagname>:
$ git push origin v1.0
或者,一次性推送全部尚未推送到远程的本地标签:
$ git push origin --tags
标签远程删除。删除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9
让Git显示颜色,会让命令输出看起来更醒目:
$ git config --global color.ui true
配置别名:
以后st就表示status:
$ git config --global alias.st status
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
搭建GIT服务器:
第一步,安装git:
$ sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:
$ sudo adduser git
第三步,创建证书登录:
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
第四步,初始化Git仓库:
先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
$ sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
$ sudo chown -R git:git sample.git
第五步,禁用shell登录:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
第六步,克隆远程仓库:
现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:
$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
#==========================
git 断点续传
git clone 不能续传
用git init
git fetch git://…..git
即使断掉了,可以继续
git fetch git://…..git
等到fetch完会出现以下字样
From git://….
*branch HEAD -> FETCH_HEAD
意思是把最新的数据fetch到了本地的FETCH_HEAD分支上去了
然后用git checkout FETCH_HEAD
或者也等同于git fetch git://…..git HEAD:FETCH_HEAD(没测试)
例如:
(1): git fetch git://repo.or.cz/tomato.git
如果中途掉线,继续执行上面(1)命令
(2): git checkout FETCH_HEAD 或者git fetch git://repo.or.cz/tomato.git HEAD