Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。作用有代码回溯、版本切换、多人协作、远程备份等。
How to Write Better Git Commit Messages – A Step-By-Step Guide
目录
1 概述
1.1 简介
Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git仓库来存储和管理这些文件,Git仓库分为两种:
- 本地仓库:开发人员自己电脑上的Git仓库
- 远程仓库:远程服务器上的Git仓库
- commit:提交,将本地文件和版本信息保存到本地仓库
- push:推送,将本地仓库文件和版本信息上传到远程仓库
- pull:拉取,将远程仓库文件和版本信息下载到本地仓库
1.2 代码托管服务
Git中存在两种类型的仓库,即本地仓库和远程仓库。可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
- GitHub:最大的面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub
- Gitee(码云):国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
- GitLab:一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
- BitBucket:一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户
1.3 基本概念
- 版本库:.git 隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
- 工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码。工作区中的文件存在两种状态,会随着我们执行Git的命令发生变化
untracked
:未跟踪(未被纳入版本控制)tracked
:已跟踪(被纳入版本控制)Unmodified
:未修改状态Modified
:已修改状态Staged
:已暂存状态
- 暂存区:.git 文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
2 常用命令
2.1 全局参数配置
当安装Git后首先要做的事情是设置用户名称和email地址。这非常重要,因为每次Git提交都会使用该用户信息。
# 设置用户信息(其中user.name和user.email可任意设置)
git config --global user.name "akira37"
git config --global user.email "example@foxmail.com"
# 查看配置信息
git config --list
2.2 获取Git仓库
要使用Git对代码进行版本控制,首先需要获得Git仓库。获取Git仓库通常有两种方式:在本地初始化一个Git仓库
、从远程仓库克隆。
2.2.1 本地初始化
- 在任意目录下创建一个空目录作为我们的本地Git仓库
- 进入这个目录中,打开命令行/终端
- 执行命令
git init
若在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功。
2.2.2 克隆远程仓库
可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
git clone 远程Git仓库地址
2.3 本地仓库操作
本地仓库的常用命令如下:
# 查看当前本地仓库的状态
git status
# 将文件从工作区添加至暂存区
git add 文件
# 将暂存区的文件取消暂存或者是切换到指定版本
git reset 文件 # 取消暂存
git reset --hard 版本号 # 回退版本
# 将文件1.txt从暂存区提交到版本库,用-m添加注释信息
git commit -m 'My messege' 文件
# 查看日志
git log
日志:
2.4 远程仓库操作
本地仓库的常用命令如下:
# 查看远程仓库
git remote [-v] # -v 查看详细信息
# 添加远程仓库
git remote add <shortname> <url>
# 从远程仓库克隆
git clone [url]
# 从远程仓库拉取
git pull [short-name] [branch-name]
# 推送到远程仓库
git push [short-name] [branch-name]
注:若当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal:refusing to merge unrelated histories)
解决此问题可以在git pull
命令后加入参数--allow-unrelated-histories
2.5 分支操作
分支是Git使用过程中非常重要的概念。使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。
通过git init
命令创建本地仓库时默认会创建一个master分支。
分支的常用命令如下:
# 查看分支
# -r 查看所有远程分支
# -a 查看所有本地分支
git branch
# 创建分支
git branch [name]
# 切换分支
git checkout [name]
# 推送至远程仓库分支
git push [short-name] [name]
# 合并分支(将指定分支合并到当前分支)
git merge [name]
# 删除分支
git branch -d [name]
创建新分支:
当前分支用*
表示:
在该分支上进行操作:
2.6 标签操作
标签指Git中某个分支某个特定时间点的状态。通过标签可以很方便的切换到标记时的状态。比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。
常用的标签指令如下:
# 列出已有的标签
git tag
# 创建标签
git tag [name]
# 将标签推送至远程仓库
git push [short-name] [name]
# 检出标签
git checkout -b [branch] [name]
3 IDEA集成操作
3.1 配置本地仓库
- 创建本地仓库
- 文件右键操作
- 可设置 .gitignore 来排除指定文件或文件夹
- 提交
- 查看日志
3.2 远程仓库操作
- 推送(初次推送需定义远端)
- 克隆
- 各种操作