GIT 的基本使用
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
GIT - https://git-scm.com
基本概念介绍
GIT仓库 Repository,可以看作一个目录,这个目录里面的所有文件都可以被 git 管理起来。仓库分为本地仓库与远程仓库。在实际的项目开发过程中,远程仓库放在 git 服务器上(如:gitgub、gitlab或者自己搭建的git服务器),本地仓库则会放在每个开发人员的电脑上。开发人员可以直接 clone
服务器上的远程仓库地址来作为我们的本地仓库;也可以直接在本地通过 git init
命令来初始化一个 git 仓库,并与服务器上的远程仓库相关联。
工作区 本地仓库所对应的那个目录,也就是我们通过 git init
初始化的那个目录。默认情况下,这个目录下的所有文件与子目录(.git
目录除外)都在工作区里。
暂存区 可以理解为一个虚拟工作区,位于.git
文件夹下的index
目录下。这个虚拟工作区会跟踪工作区的文件变化(新增、修改、删除)。
版本库 .git
目录,是一个隐藏目录,位于工作区下,但它并不属于工作区,是 git 用来跟踪管理版本的目录,由 git 自动创建。

本地仓库
使用流程
注:以下使用流程是直接在本地初始化 git 仓库,并与远程仓库进行关联。如果是从远程仓库
clone
到本地,则可以跳过 1、2步
- 初始化本地仓库
使用终端进入指定目录底下,通常为项目的根目录,然后执行git init
命令,这个目录就成为了我们的本地仓库。 - 编辑工作区内的文件(新增、修改、删除)
- 查看工作区内的文件状态
当我们修改了工作区内的文件后,可以使用git status
命令来查看当前工作区内文件的修改状态。 - 添加文件到暂存区
我们可以使用git add .
命令来将工作区中所有变化过的文件添加到暂存区中。当添加完后,可以使用git status
命令来查看目前工作区中的状态。 - 提交到本地仓库
使用git commit
命令来将暂存区中的文件提交到本地仓库中。提交完成后,使用git status
命令来查看此时工作区与暂存区的状态。
常用命令
1 | 初始化本地仓库 |
远程仓库
使用流程
- 远程仓库的创建
在实际开发过程中,一些公司会使用第三方的 git 托管平台来作为自己的 git 服务器(如:gitlab)。创建远程仓库的过程比较简单,只需按照提示一步步操作就可以了,这里就省略了。 - 本地仓库与远程仓库的关联
如果是通过git init
命令初始化的本地仓库,则需要将本地仓库与远程仓库关联起来。如果是直接从 git 服务器上1
git remote add origin 远程仓库地址
clone
远程仓库到本地来作为自己的本地仓库,则不需要再建立关联了,因为它们已经建立了关联。1
git clone 远程仓库地址
- 推送至远程仓库
当我们通过git commit
命令将暂存区的内容提交到本地仓库之后,如果想要别人能够更新到我们提交的代码,则需要将之前提交到本地仓库的内容推送到远程仓库。1
2这里将内容推送至 master 主分支,实际开发过程中可以根据具体情况推送到指定的分支
git push origin master - 拉取远程仓库中的代码
如果别人已经将他修改的代码推送到了远程仓库,我们可以拉取到远程仓库中最新的代码。实际开发过程中,如果是多人开发,则在修改代码前需要先拉取下远程仓库中最新的代码,以免出现代码冲突。1
git pull origin master
常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17本地仓库与远程仓库建立关联
git remote add origin 远程仓库地址
clone 远程仓库到本地
git clone 远程仓库地址
查看远程仓库
git remote -v
修改远程仓库的地址
git remote set-url 新地址
获取远程仓库最新提交的代码
git pull origin master
将本地的提交推送到远程仓库
git push origin master
分支管理
使用流程
- 创建分支
当我们clone
或者通过git init
命令来初始化一个本地仓库时,git 默认会创建一条分支,这条分支叫主分支,即master
分支。在实际开发过程中,master
分支应该仅用来发布新版本,平时不能在上面干活。一般我们会创建一个新的分支专门用来开发,即develop
分支,这条分支是不稳定的,当我们需要发布某个新版本的时候,再把develop
分支合并到master
分支上,在master
分支上发布这个新版本。每个开发人员都在develop
分支上工作,每个人都会创建一个自己的分支,时不时地往develop
分支上合并就可以了。1
2
3
4
5
6
7
8创建 develop 分支
git branch develop
切换到 develop 分支
git checkout develop
创建 develop 分支,并切换到该分支上
git checkout -b develop - 查看分支
我们可以查看当前本地仓库中的所有分支以及远程仓库中的所有分支。1
2
3
4
5查看本地分支
git branch
查看远程分支
git branch -r 提交代码到当前分支
前面我们介绍本地仓库的时候说过代码提交到本地仓库的流程。我们将工作区修改过的文件通过git add .
命令添加到暂存区,其后再使用git commit
命令将文件提交到本地仓库。因为当前没有创建其它分支,只有一个master
主分支,所以我们是直接提交到master
主分支上的。现在我们已经创建了一个develop
分支,并且已经切换到了该分支上,那么我们提交的代码就是在develop
分支上提交的,与master
分支不相关,也就是说当我们切回到master
主分支时,之前在develop
分支所作的所有操作都不会对master
分支产生影响,通过git log
命令也不会看到在develop
分支上的提交记录。我们切换到某个分支,那么对应的操作就是针对这个分支的。这里提交的步骤与前面本地仓库的提交步骤是一样的,只不过之前是在
master
分支上提交的,现在是在develop
分支上提交的。创建远程分支
当我们创建完一个远程仓库后,git 会默认创建一个分支,即master
主分支,前面也提到过,我们一般不会直接在master
主分支上进行开发,所以就需要再创建一个分支,来作为我们开发的分支,master
分支上只记录所有发布的版本。我们可以先在本地仓库中创建一个分支(如:
develop
分支),并将该分支推送到远程仓库中,作为远程仓库的一个分支。1
2提交本地的 develop 分支并作为远程的 develop 分支
git push origin develop:develop- 分支合并
当我们在某个分支下提交完代码后,如果想要同步到其它分支上去,就可以进行分支的合并操作。比如:我们在develop
分支上将代码开发完毕后,需要同步到master
主分支,这个时候我们可以先切换到master
主分支上,然后使用git merge
命令来将develop
分支上的提交合并到master
主分支上。1
2
3
4
5
6切换到 master 主分支
git checkout master
将 develop 分支合并到 master 分支
git merge --no-ff -m '提交日志' master
--no-ff 可选命令,表示禁用 Fast forward 模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息 - 分支抓取
如果我们clone
的远程仓库已经存在多个分支(如:develop
分支),那么默认情况下我们只能看到本地的master
分支,如果我们想要在develop
分支上进行开发,就必须在本地再创建一个分支,并如远程仓库的develop
分支相关联。1
2创建一个本地的 develop 分支并与远程的 develop 分支相关联
git checkout -b develop origin/develop - 分支删除
当我们不需要某个分支的时候,可以将这个分支删除。需要注意的是,不能够删除当前所处的那个分支。也就是说如果想要删除 a 分支,那么我们首先要切换到其它的分支,可以删除该分支。1
2
3
4
5删除本地分支
git branch -d branchName
删除远程分支
git push origin:branchName常用命令
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创建分支
git branch branchName
切换到指定分支
git checkout branchName
创建分支,并切换到该分支
git checkout -b branchName
创建远程分支(提交本地的某个分支来作为远程的一个分支)
git push origin
查看本地分支
git branch
查看远程分支
git branch -r
分支合并
git merge --no-ff -m '提交日志' branchName
删除本地分支
git branch -d branchName
删除远程分支
git push origin:branchName
标签管理
使用流程
- 创建标签
发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。1
2
3
4
5
6
7
8创建本地标签 1.0.0
git tag 1.0.0
推送本地的某个标签来作为远程的一个标签
git push origin 1.0.0
推送本地所有的标签来创建对应的远程标签
git push origin --tags - 查看标签
我们可以使用git tag
命令来查看本地已经创建的标签。1
2查看本地已经创建的所有标签
git tag - 删除标签
我们可以通过git tag -d
命令来删除我们已经创建过的某个本地标签;如果是想要删除某个远程标签,则可以先在本地把这个标签删除掉,然后再推送到远程仓库就可以了。1
2
3
4
5删除本地的 1.0.0 标签
git tag -d 1.0.0
删除远程仓库中的 1.0.0 标签
git push origin :1.0.0常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17创建本地标签
git tag tagName
推送本地的指定标签来作为一个远程标签
git push origin tagName
打着本地所有的标签来作为对应的远程标签
git push origin --tags
查看标签
git tag
删除指定的本地标签
git tag -d tagName
删除指定的远程标签
git push origin :tagName