git常用命令与使用方法介绍

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
本文总结了git常用的命令和使用方法。

创建版本库

1
$ git init

添加文件到版本库

先添加文件到暂存区

1
2
3
$ git add <文件名>
$ git add readme.md

再把文件提交到仓库

1
2
3
4
5
6
7
8
9
$ git commit -m '<提交文件的注释>'
$ git commit -m '增加了readme.md文件'
```
#### 查看文件状态
``` bash
$ git status

比较工作目录和暂存区块之间的差异

1
2
3
$ git diff <文件名>
$ git diff readme.md

版本回退

查看历史提交记录

1
$ git log

版本回退

1
2
3
4
5
6
7
8
# 回退到上个版本
$ git reset --hard HEAD~1
# 回退到前100个版本
$ git reset --hard HEAD~100
# 撤销暂存区更改,重新回到工作区
$ git reset HEAD <file>

查看分支的所有操作记录(可以查看版本号,恢复最新的版本)

1
$ git reflog

版本恢复(先用 git reflog 查看版本号,然后使用本命令恢复版本)

1
2
3
$ git reset --hard <版本号>
$ git reset --hard a3dbef5

理解工作区与暂存区的区别?

  • 工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

  • 版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

我们前面说过使用Git提交文件到版本库有两步:

  • 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

  • 第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

Git撤销修改和删除文件操作。

撤销修改

在我未提交之前,我发现添加的内容有误,所以我得马上恢复以前的版本,现在我可以有如下几种方法可以做修改:

第一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。

第二:我可以按以前的方法直接恢复到上一个版本。使用 git reset –hard HEAD~1

第三:直接使用撤销命令

1
2
3
4
5
# 撤销对工作区修改
# 注意:命令git checkout -- readme.md 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了。
$ git checkout -- <文件名>
$ git checkout -- readme.md

删除文件

删除文件后可以使用 $ git checkout -- <文件名恢复>,必须是提交过仓库的文件。

远程仓库

创建SSH Key

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:

ssh-keygen -t rsa –C “youremail@example.com”。id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

远程仓库添加公钥

登录github,打开 “settings” 中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。

关联本地仓库和远程仓库

先到github创建一个新的仓库,复制仓库地址,然后运行命令

1
2
3
$ git remote add origin [远程仓库地址]
$ git remote add origin https://github.com/xxxxx/xxx.git

本地仓库推送到远程仓库

1
2
# 推送本地分支到远程master分支
$ git push origin master

克隆远程仓库到本地

1
git clone https://github.com/xxxxx/xxx.git

抓取远程主机某个分支的更新,再与本地的指定分支合并

1
$ git pull <远程主机名> <远程分支名>:<本地分支名>

创建与合并分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看分支
$ git branch
# 创建新分支
$ git branch <分支名>
# 切换分支
$ git checkout <分支名>
# 创建并切换分支
$ git checkout -b <分支名>
# 合并指定分支到当前分支
$ git merge <分支名>
# 先切换到主分支,然后运行命令,就可以把 dev 分支合并到主分支上
$ git merge dev
# 删除分支
$ git branch -d <分支名>

多人协作模式

  • 首先,可以试图用git push origin branch-name推送自己的修改.
  • 如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
  • 如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。

常用命令

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
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin https://github.com/xxxxx/xxx.git 关联一个远程库
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库
git clone https://github.com/xxxxx/xxx.git 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push -u origin master 第一次推送时加 -u ,不但可以把本地分支推送到远程,还会把本地分支和远程分支关联起来,以后推送或拉取时可以简化命令。
git push origin master Git会把master分支推送到远程库对应的远程分支上