-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit_command.txt
171 lines (131 loc) · 7.57 KB
/
git_command.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
git config命令的--global参数表示所有的Git仓库都会使用这个配置
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
未被添加过的文件状态是untracked
添加文件到仓库,文件修改添加到暂存区
$ git add readme.txt
提交文件到仓库,把暂存区的所有内容提交到当前分支
git commit -m "wrote a readme file"
git commit命令,-m后面输入的是本次提交的说明(说明最好是有意义的)
commit可以一次提交很多文件,所以可以多次add不同的文件
$ git status
git status命令可以让我们时刻掌握仓库当前的状态
$ git diff readme.txt
查看修改了什么内容
$ git reset --hard HEAD^
版本回退,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100。
$ git reset --hard cdca9c
回退到指定版本,commit id是cdca9c...,没必要写全,前几位就可以了,当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了
$ git log --pretty=oneline
cdca9c11a4fc14d360bdec2f33addc415db334b4 add new command lines
469cc3b4cfedffd376ff1030a6959d754930de39 add git command use record
df4c46c57ba5df5b005a79a36973fbfebc99af56 wrote a readme file
以上方式适用于从当前版本回退到老版本之后再恢复到最新版本
git reflog用来记录你的每一次命令,这个命令可以找到所有的commit id
git checkout -- readme.txt
把readme.txt文件在工作区的修改全部撤销
git checkout -- readme.txt (适合撤销在工作区的修改)
把readme.txt文件在工作区的修改全部撤销,如果还没有把文件修改提交到工作区,可通过git status的结果提示选择相应的命令
git reset HEAD readme.txt 此时已经使用了git add命令,适合暂存区的修改,再结合git checkout -- file命令可以进一步撤销
暂存区的修改撤销掉(unstage),重新放回工作区
如果已经提交到本地版本库,也可以通过回退版本来实现撤销,如果已经同步到远程仓库,那就只能上帝保佑了
rm test.txt 删除文件
这个命令之后有两个选择:
1.确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit
a.git rm test.txt
b.git commit -m "remove test.txt"
现在文件就从版本库中被删除了
2.删错了,需要恢复
a.git checkout -- test.txt进行撤销
命令git rm用于删除一个文件。
如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
git clone https://github.com/liujinjiaer/developer 克隆远程仓库的代码
$ git checkout -b dev 创建dev分支然后切换到dev分支
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
git branch命令查看当前分支
git merge命令用于合并指定分支到当前分支
$ git branch -d dev 合并后就可以删除分支了
git log --graph --pretty=oneline --abbrev-commit 可以查看分支的合并情况
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
分支管理策略
通常合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
--no-ff方式的git merge
git merge --no-ff -m "merge with no-ff" dev
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash命令用来把当前工作现场保存起来,当工作没有完成时使用
git stash list命令用来查看工作现场保存的位置
git stash的回复
a.用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
b.用git stash pop,恢复的同时把stash内容也删了
c.git stash apply stash@{0}恢复指定的stash
多人协作
git remote 查看远程库的信息
git remote -v 显示远程库更详细的信息
推送分支,把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
创建标签 git tag v1.0
创建标签 git tag v0.9 6224937 历史提交的commit id为6224937的版本打上标签
查看标签 git tag
git show <tagname>查看标签信息 eg:git show v1.0
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
$ git tag -a v0.1 -m "version 0.1 released" 3628164
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
git tag -d v0.1 删除标签
$ git push origin v1.0 推送某个标签到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地标签
删除远程标签
1.删除本地对应的标签
git tag -d v1.0
2.从远程删除
git push origin :refs/tags/v1.0
忽略特殊文件
https://github.com/github/gitignore
配置别名
$ git config --global alias.st status
配置以后 输入git st与输入git status的效果一致
配置Git的时候,加上--global是针对当前用户起作用
每个仓库的Git配置文件都放在.git/config文件中
当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
配置Github
1.首先登陆Github创建一个空的仓库
2.ssh-keygen -t rsa -C "邮箱"来生成SSH
3.如果是多账号,在出现Enter file in which to save the key时需要重新制定一个名字来区分上一个账号的公私钥。
4.密钥创建好之后需要进行SSH配置
5.执行ssh-add id_rsa 把新生成的私钥添加到SSH,如果遇到Could not open a connection to your authentication agent.
请先执行ssh-agent bash在执行上述操作
6.更改.ssh文件夹下的config,添加类似如下内容:
# Default github user([email protected])
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
User [email protected]
# Second user([email protected])
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_weekly
User [email protected]
说明:Host------别名
eg:原始请求:[email protected]:Weeklysoftware/weekly.git
添加别名后的请求:git@别名:Weeklysoftware/weekly.git
PreferredAuthentications----用什么权限进行验证
HostName------真实的域名地址,如[email protected]:Weeklysoftware/weekly.git的域名就是github.com
IdentityFile------id_rsa的本地地址
7.执行ssh -T [email protected]测试时候配置成功
注意事项:
对于使用多账号的情况,最好是在每个项目里面配置用户名和邮箱。不然提交代码的用户名将显示全局的用户名。
配置用户名、邮箱
git config user.name "username"
git config user.email 'email'