Git使用教程

上文介绍了什么是Git和Git的安装,本文主要介绍Git的基础使用。

仓库

创建仓库

在本地使用git init创建一个空仓库,创建完成后会在当前目录下生成一个隐藏目录.git,这个目录就是Git仓库

1
2
3
4
5
6
# 创建目录
mkdir git-learning && cd git-learning
# 使用当前目录作为Git仓库
git init
# 或者使用我们指定目录git-learning作为Git仓库
git init git-learning

提交到本地仓库

提交分两步:

  1. 先把文件放到暂存区:git add
  2. 再把文件提交到本地仓库:git commit
1
2
3
4
5
6
# 创建文件
echo '# git-learning' >> README.md
# 放入暂存区
git add README.md
# 提交到本地仓库
git commit -m '创建git-leanring项目'

查看仓库状态

git status命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status不显示已经commit到项目历史中去的信息。

1
2
# 查看仓库状态
git status

Git工作流

下边通过一个简单的场景模拟Git的工作流程。

提交文件

第一次写点儿文字并提交到本地仓库。
为了方便,使用&&把两个命令:git addgit commit合并到了一个命令中。

1
2
3
4
5
# 第一次的内容
echo '## 第一次的内容' >> README.md

# 放入暂存区 & 提交到本地仓库
git add README.md && git commit -m '第一次提交文件'

恢复暂存区

第二次又写了点儿文字,并提交到了暂存区,但是发现写的没有用,需要撤回到上次的文件内容。

1
2
3
4
5
6
7
8
# 第二次的内容
echo '## 第二次的内容...' >> README.md
# 放入暂存区
git add README.md
# 拉取最近一次提交到版本库的文件到暂存区,并且该操作不影响工作区
git reset HEAD README.md
# 暂存区文件拉到工作区
git checkout -- README.md

恢复到历史

第三次又写了点儿文字,并且已经提交到了本地仓库,但是发现写的文字还没有用,需要撤回到第一次提交的文件内容。
可以使用git log查看提交历史,并选择对应的历史id恢复。

1
2
3
4
5
6
7
8
# 第三次的内容
echo '## 第三次的内容' >> README.md
# 放入暂存区 & 提交到本地仓库
git add README.md && git commit -m '再次提交文件'
# 恢复
git log
# 恢复到第一次提交的文件内容,head:暂存区和本地仓库都回滚
git reset --head [commit_id]

删除文件

最后,发现整个文件都没有用,需要把文件给删掉。

1
2
3
4
# 删除文件
git rm README.md
# 提交
git commit -m '删除README.md'

本地与远程仓库

本地仓库虽然也能提交、恢复代码,但是代码毕竟是在本地。团队协作,还是需要有一个类似于中央仓库的仓库,团队通过中央仓库协作开发。
仓库间的交互可以有以下几种方式:

  • 使用Git自带的ssh协议;
  • 使用公有的Git云平台。比如:Github,Gihub不仅支持仓库间使用ssh交互,同时也支持https交互;
  • 搭建Git私服,目前有很多免费的Git私服软件(如:Gitlab、Gogs等)。

以下使用Gitlab私服。其实在其它私服或者公有云平台下的代码提交、撤销等操作步骤是一致的。

添加远程仓库

如果本地已有仓库,可以直接关联到远程仓库。

1
2
3
4
# 关联远程仓库
git remote add origin http://gitlab.howdohr.com/duanjw/git-learning.git
# 查看关联的远程库。-v显示远程库的链接
git remote -v

提交到远程仓库

1
2
# 当前分支与远程分支关联,并推送到远程
git push -u origin master

如果远程没有mster分支,本命令同时会在远程创建master分支;当本地分支与远程分支关联后,再推送本地仓库代码到远程直接使用:git push

克隆仓库

如果本地没有仓库,但是远程有仓库,可以使用git clone把远程仓库克隆到本地。

1
2
3
4
5
6
7
8
9
10
11
# 克隆仓库到本地
git clone http://gitlab.howdohr.com/zzz/git-learning.git

# 或者克隆仓库到本地并指定目录名
git clone http://gitlab.howdohr.com/zzz/git-learning.git zzzr-git-learning

# 克隆仓库提交
echo '## 我是从克隆仓库提交' >> README.md

# 放入暂存区 & 提交到本地仓库 & 推送到远程
git add README.md && git commit -m '我是从克隆仓库提交' && git push

拉取远程仓库

拉取远程仓库更新的内容到本地。

1
2
# 拉取远程仓库
git pull

标签管理

当我们要发布一个新的版本,通常是打一个标签。如果将来要恢复到某个版本,我们可以直接通过标签来恢复。
Git标签的速度很快、很方便。

查看所有标签

1
2
# 查看所有标签
git tag

创建标签

1
2
3
4
5
# 创建标签
git tag v1.0.0

# 创建标签并添加日志
git tag -a v1.0.0 -m 'v1.0.0正式版'

此时通过git tag就能看到刚才创建的标签。

推送本地标签到远程

1
2
# 推送本地标签到远程
git push origin v1.0.0

删除标签

1
2
# 删除标签
git tag -d v1.0.0

分支管理

当你的任务需要较长时间才能完成,中间提交可能会影响团队其它成员,此时就可以使用Git分支:创建一个自己的分支,在分支上随便提交,此时不会影响到团队其它成员,当这个需求完成后,再合并到主分支上。
Git分支的速度很快、很方便。

查看所有分支

1
2
# 查看所有分支
git branch

git branch查看结果中的*号表示当前所在的分支。

创建分支

1
2
# 创建分支
git branch dev

此时再查看所有分支git branch可以看到有两个分支masterdev
git branch [name]只会创建分支,但是不会切换到新创建的分支,切换分支可以通过以下命令切换,或者使用git checkout -b [name]创建并切换分支。

切换分支

1
2
# 切换分支
git checkout dev

合并分支

1
2
3
4
5
6
7
8
9
10
11
# 使用分支开发
echo '## 使用分支开发' >> README.md

# 放入暂存区 & 提交到本地仓库
git add README.md && git commit -m '使用分支开发'

# 切换到master分支
git checkout master

# 合并dev分支
git merge dev

删除分支

1
2
# 删除分支
git branch -d dev

总结

  • 介绍与安装
  • 工作流:工作区 -> 暂存区 -> 版本库
  • 初始化 git init -> git add -> git commit
  • 远程仓库 git remote add -> git pull -> git push -> git clone
  • 分支管理 git branch -> git chekcout -> git merge
  • 标签管理 git tag -> git push
坚持原创技术分享,您的支持将鼓励我继续创作!