一卓的博客

怕什么真理无穷,
进一寸有一寸的欢喜。

0%

Git 常用命令整理

一般来说,下图这些命令已经足够日常使用。但是有些时候,我们还需要使用其它的一些不太常用的命令。

bg2015120901

下面是我整理的常用 Git 命令。

Git 配置类命令

基本上换电脑,或者需要添加/切换远程仓库的时候 才能用到

第一步:首先配置用户名和邮箱

1
2
3
4
#配置或切换 git 用户名: 
git config --global user.name "YOUR USERNAME"
# 配置或切换 git 邮箱:
git config --global user.email "YOUR EMAIL"

配置完可以查看一下是否生效:

1
2
3
4
# 查看用户
git config user.name
# 查看邮箱
git config user.email

第二步:GIT 配置公钥

1. 生成密钥

1
2
3
4
5
6
7
8
9
10
11
# 进入 Git 默认密钥目录
cd ~/.ssh
# 列出文件
ls
如果有3个文件,则密钥已经生成,id_rsa.pub 就是公钥,可直接进入下面第二步;

如果没有 .ssh 文件夹或者文件夹为空,则密钥没有生成,那么通过
ssh-keygen -t rsa -C "your email"
生成密钥
会提示生成密钥的文件名及设置密码和确认密码 如果都不需设置 则直接三次回车
tips:多账户配置此处需指定生成密钥的文件别名

2. 配置公钥

将公钥 id_rsa.pub 中的内容配置到 GitHub/GitLab/Gitee 上,一般为 Setting -> SSH KEY

3. 测试连接

执行命令 ssh -T git@github.com 测试连接 出现提示如下:

1
2
3
The authenticity of host 'github.com (xx.11.22.33)' can't be established.
RSA key fingerprint is SHA256:nThxxxxxxxxxxxxxxxxxxxxxxxb8.
Are you sure you want to continue connecting (yes/no)?

输入 yes 继续;出现类似以下提示

Hi xxx! you’ve successfully authenticated. Xxxxx….

说明密钥配置成功, ~/.ssh 路径下会出现 known_hosts 文件。

接下来就可以正常使用 Git 从远程仓库 clonepull 项目了。

Git 常用命令

常用命令

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
# 把这个目录变成 Git 可以管理的仓库
git init
# 列出所有配置
git config --list
# 显示工作树的状态 常用,使用此命令 Git 会显示当前 Git 仓库的状态,并给出命令建议
git status
# 文件添加到仓库
git add [filename]
# 例:添加 README.md 到仓库
git add README.md
# 不但可以跟单一文件,还可以跟通配符,更可以跟目录。一个点就把当前目录下所有未追踪的文件全部 add
git add .
# 取消 add 的文件:如果手滑添加了不想添加的内容,例如 HelloWorld.class 文件,我们可以这样来取消暂存 HelloWorld.class 文件:
git reset HEAD HelloWorld.class
# git 撤销文件修改:在工作区修改,但并未提交到暂存区(即并没有add) 注意:git chekcout 是让文件回到最近一次该文件 git commit 或 git add 时的状态。如果一次也没 commit 和 add 过的文件无法使用该命令撤销。命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
git checkout -- <file>
# 例:readme.txt 文件修改后还未 git add,撤销 readme.txt 的修改
git checkout -- readme.txt
# 撤销全部文件修改
git checkout .
# 把文件提交到仓库 引号内是备注
git commit -m "first commit"
# 关联远程仓库
git remote add origin https://github.com/xxx.git
# 取消远程仓库的关联
git remote remove origin
# 拉取远程仓库所有内容 并与本地内容合并
$ git pull [remote]
# 把本地库的所有内容推送到远程库上
git push -u origin master
# git 查看远程仓库地址命令:
git remote -v
# 从另一个存储库下载对象和引用,和 git pull 相比,该命令不会强制合并,需要手动 merge。
git fetch [remote]
# 执行命令 git fetch 取回更新后,可执行以下命令查看远程所有提交日志
git log -p FETCH_HEAD
# 显示本地的 master 分支和 origin/master 分支 所有历史提交日志
git log -p master origin/master
# 比较本地的 master 分支和 origin/master 分支的差别
git diff master origin/master
# 创建分支
git branch [branch]
# 切换分支
git checkout [branch]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# git checkout 命令加上 -b 参数表示创建并切换,相当于以下两条命令
git branch dev
git checkout dev
# 例:创建 dev 分支,然后切换到 dev 分支
git checkout -b dev
# 合并分支
git merge [branch]
# 例:把 dev 分支的工作成果合并到 master 分支上:
1.切换到 master 分支上
2.执行 git merge dev
# 删除分支
git branch -d [branch]
# 例:git 删除本地分支
1.先切换到别的分支: git checkout dev_20180927
2.删除本地分支: git branch -d dev_20181018
# 查看分支
git branch
# 打 tag
git tag v1.0
# 可以用命令 git tag 查看所有标签
git tag
# 查看 tag
git show [tag]
# 如果要推送某个标签到远程,使用命令
git push origin <tagname>
# 强制 push 当前分支到远程仓库,即使有冲突
git push -f origin master
# 版本回复
git reset --hard 1094a(版本号)
版本号没必要写全,前几位就可以了,Git 会自动去找。当然也不能只写前一两位,因为 Git 可能会找到多个版本号,就无法确定是哪一个了。

新建 Git 项目命令

1
2
3
4
5
6
echo "# java-zookeeper" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/xxx.git
git push -u origin master

Git 解决冲突

简单暴力,合并时需要注意别覆盖了远程其他人的修改

1
2
先 commit 到本地仓库  然后 pull 远程仓库
最后合并并提交

忽略 SSL 验证

当你通过 HTTPS 访问 Git 远程仓库,如果服务器的 SSL 证书未经过第三方机构签署,那么 Git 就会报错。

解决办法:执行以下命令:

1
git config --global http.sslVerify false

CRLF 问题解决办法

在使用 Git 时出现以下提示:

Warn if CRLF line separators are about to be commited

问题参考链接stackoverflow

解决办法:执行以下命令:

1
2
git config --global core.autocrlf input
git config --global core.eol lf

Git 多用户配置

第一步:生成密钥时指定别名

通过 ssh-keygen -t rsa -C "这里填秘钥的备注信息" 生成秘钥,如下:

1
2
3
$ ssh-keygen -t rsa -C "这里填秘钥的备注信息"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/zhuo/.ssh/id_rsa):

修改别名

设置密码和确认密码 如果都不需设置 则直接回车

如果多个平台不想公用一套密钥,则此步需生成多个密钥

第二步:配置公钥

将公钥 id_rsa.pub 中的内容配置到 GitHub/GitLab/Gitee 上,一般为 Setting -> SSH KEY

第三步:配置 config 文件

在 .ssh 目录新建 config 文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 配置 github.com   id_rsa_github 为生成密钥的时候指定的文件名
Host github.com
HostName github.com
IdentityFile C:\Users\admin\.ssh\id_rsa_github
PreferredAuthentications publickey
User yourname

# 配置 gitee.com
Host gitee.com
HostName gitee.com
IdentityFile C:\Users\admin\.ssh\id_rsa_gitee
PreferredAuthentications publickey
User yourname

第四步:测试连接

执行命令 ssh -T git@github.com 测试连接,参考上文

如果测试连接失败,可删除 known_hosts 文件中的历史记录,重新测试

请作者喝杯咖啡吧