版本控制软件有助于合理高效地管理自己开发项目的各个版本,它可以提供便捷回退功能和多人协作开发功能。
Git介绍
Git是由Linux系统
之父Linus Torvalds为管理Linux内核开发而开发出的一个免费开源的分布式版本控制系统软件。
下载安装
Git可以从Git官网官网免费下载得到,注意选择适合自己操作系统的版本(Windows, Linux MacOS)。
安装过程非常简单,各种常见软件的安装方式即可。
安装结束后,打开Terminal
(Windows系统打开cmd.exe, Powershell或者Git Bash)。键入如下命令:
1 | $ git --version # => git version 2.14.0 |
返回版本号即为安装成功。
配置
刚开始使用的时候我们需要全局配置用户名和邮箱:
1 | $ git config --global user.name 'ntnyq' |
--global
参数代表全局进行配置
我们可以通过如下命令来查看当前配置:
1 | $ git config -l |
版本库
Git的分布式就体现在它并不单单将版本库保存在服务器上,每个参与项目开发开发的人都可以拥有一个自己的该项目的版本库。
我们可以在自己的版本库里面创建分支,再随着开发进度将分支的内容合并到主分支(master)上,再将主分支推送到服务器上。
我们可以通过2种方式在本地创建版本库。
新建版本库
1 | $ git init # 本地新建版本库 |
命令执行后会在根目录下生成一个名为.git
的隐藏文件夹来保存仓库的版本信息。
同时Git会自动追踪根目录下所有文件夹及文件夹内所有文件的变化。
可以通过如下命令来查看当前版本库的状态信息:
1 | $ git status |
提交
Git仓库管理的文件分为以下3种状态。
- Modified 已修改
Git
追踪到了文件的修改,触发了版本的变化,必须要对已修改的文件进行操作。(取消修改或者缓存)。 - Staged 已缓存 缓存用于提供给开发者一个再次检查的机会,避免将不需要
Git
追踪的文件提交到版本库。 - Commited 已提交 当文件处于已提交的状态时,它就可以
Push
到远程版本库了。
缓存修改
1 | $ git add file_name # 添加文件至缓冲区 |
提交修改
1 | $ git commit -m commit_description # 描述信息用于方便查看提交记录 |
分支
分支的存在是Git的一个亮点。我们可以通过在分支上进行开发,在开发到达某个阶段后,再把分支合并到主分支上。
查看分支
1 | $ git branch # 查看当前分支 |
创建分支
1 |
|
切换分支
1 | $ git checkout - # 切换至上一个分支 用于2个分支间切换 |
在分支的开发结束后 要记得在分支进行
git commit
操作。
合并分支
将某分支合并到master分支
需要先切回至主分支
1 | $ git merge branch_name |
合并分支的过程分为4步:
- 保持工作目录clean
git checkout master
切换回主分支git merge branch_name
合并分支- 如果有冲突问题,解决冲突
master push前,在分支上
merge master
。然后,在master
上,merge
分支,再push
删除分支
确保当前不处于即将要删除的分支上,否则无法进行删除操作。执行如下命令即可删除分支:
1 | $ git branch -d branch_name |
若当前分支存在修改未合并,则需要使用以下命令来强制进行删除:
1 | $ git branch -D branch_name |
创建标签
标签常用于标记特殊版本,如可发布的版本等。(可以利用标签名迅速切换到标签对应的版本)
1 | $ git tag # 查看当前仓库的标签信息 |
取消所有修改
1 | $ git checkout . |
版本库日志查看
在查看提交信息时候可以使用
PU
和PD
来翻页,使用q
退出日志查看。
1 | $ git log # 显示版本库信息 包括 提交hash 提交人 提交日期 提交描述 |
远程版本库
1 | $ git remote # 查看远程主机名 默认远程主机名为origin |
拉取与推送
1 | $ git pull [remote_host] [remote_branch]:[local_branch] # 拉取远程分支 与本地分支合并 |
git pull
拉取时候,如果远程分支是与当前分支合并,则冒号后面的部分可以省略。git push
推送时候,如果远程分支不存在,则会被新建。
可选参数
u
进行持续的跟踪操作,下次提交或者拉取代码无需再指定分支和主机。
合并与变基
1 | $ git merge # 用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并; |
冲突解决
Merge冲突解决
Tips: 你可以根据如下步骤解决冲突:
1 | 1、git fetch |
Rebase冲突解决
git rebase
与git merge
的另一个区别就是它解决冲突的时候是一个一个解决的,解决步骤如下:
1 | $ git add -u |
退出rebase
的过程,恢复先前的代码,可以使用git rebase --abort
来退出并回退修改。
帮助文档
1 | $ git cmd_name --help # 打开对应命令的在线网页帮助文档 内有命令的参数详细解释 |
Git冲突描述
在我们合并,拉取代码时候,经常会遇到文件冲突的问题。
打开冲突文件后,通常会看到一系列的=>><<
符号:
1 | "<<<<<<<<<<<" # 表示冲突代码开始 |
其它
1 | $ git fetch [remote_host] [branch_name] # 取回远程主机的分支 |