一、Git概述
Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种 项目。 Git 易于学习,占地面积小,性能极快。
它具有廉价的本地库,方便的暂存区域和多个工作 流分支等特性。其性能优于 Subversion、CVS、Perforce 和ClearCase 等版本控制工具。
工作机制
二、Git安装
- 官网下载地址:https://git-scm.com/download
- 腾讯软件中心:https://pc.qq.com/detail/13/detail_22693.html
下载之后傻瓜式安装
三、Git常见指令
- 右键任意位置,在右键菜单里选择Git Bash Here即可打开Git Bash命令行终端。
- 在 Git Bash 终端里输入 git --version查看 git 版本,出现版本就说明 Git 安装成功。
常见Git命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --head 版本号 | 版本穿梭 |
git pull | 抓取远程仓库所有代码到本地 |
git push | push所有分支 |
git merge ‘branch’ | 将branch分支合并到当前分支 |
3.1 设置用户签名
git config --global user.name 用户名
git config --global user.email 邮箱
说明
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看 到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任 何关系。
3.2 查看用户签名是否成功
git config --global -l
3.3 初始化本地库
git init
初始化完成之后会出现一个.git文件
3.4 查看本地库状态
git status
会看到哪些没有提交到暂存区。
3.5 版本穿梭
git reset --head 版本号
Git 切换版本,底层其实是移动的 HEAD 指针,具体原理如下图所示。
四、Git分支操作
4.1 什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
4.2 分支的好处
同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
4.3 分支的命令
见常见指令
4.4 分支切换
git checkout 分支名
4.5 合并分支
git merge 分支名
例:
在 master 分支上合并 dev 分支
$ git merge dev
4.6 冲突与解决
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须人为决定新代码内容。冲突后面状态为MERGING
解决
①编辑有冲突的文件,删除特殊符号,决定要使用的内容
②添加到暂存区
③执行提交(注意:此时使用 git commit 命令时不能带文件名)
④发现后面 MERGING 消失,变为正常
4.7 创建和切换分支图解
master、dev 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD 决定的。所以创建分支的本质就是多创建一个指针。
HEAD 如果指向 master,那么我们现在就在 master 分支上。 HEAD 如果执行 dev,那么我们现在就在dev 分支上。
4.8 合并部分提交
使用Cherry-pick功能进行部分不同分支部分合并。
Cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作
以IDEA为例
demo分支中有两次提交记录,两次记录对应两个功能模块。
问题:现在只需要demo分支的第一次提交的代码合并到master上。
操作路程如下:
先切换到master分支上,选择demo分支第一次提交,右键选择Cherry-Pick。然后push即可。