git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
git易于学习,性能极快
什么是版本控制?
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换(版本控制本质就是用git管理文件夹,是为了保留之前所有的版本,以便回滚和修改)
Git的常用命令
① 查看git的版本号
git --version
② 想要让git对一个目录进行版本控制需要以下步骤:
1.进入要管理的文件夹
2.执行初始化命令(初始化本地库)
git init
git init 命令会把这个目录变成git可以管理的仓库
该命令执行完后会在当前目录生成一个 .git 目录,所有 git 所需要的数据和资源都存放在这个目录中
3.管理目录下的文件状态(查看本地库当前的状态,显示有变更的文件)
git status
4.管理指定文件(添加文件到暂存区)
git add 文件名
git add .
5.设置用户签名:用户名称、电子邮箱地址【配置一次即可】
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
提示Tips
1.签名的作用是区分不同操作者身份,用户的签名信息在每一个版本的提交信息中都能够看到,以此确认本次提交是谁做的。git首次安装必须设置一下用户签名,否则无法提交代码
2.注意这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系
6.生成版本(将暂存区内容添加到本地库中)
git commit -m "描述信息"
③ 修改文件后重新添加到本地库中
查看状态(检测到工作区有文件被修改)
git status
将修改的文件再次添加到暂存区
git add .
查看状态(工作区的修改添加到了暂存区)
git status
提交到本地库
git commit -m "描述信息"
④ 版本穿梭(回滚)
查看历史提交记录
git log
git log该命令显示了从最新提交到最早提交的所有提交信息,包括提交的作者、提交日期和提交信息等
git reflog
git reflog该命令也可以查看历史记录
git reflog 查看版本信息
git log 查看版本详细信息
回滚至之前的版本
git log
git reset --hard 版本号
回滚至之后的版本
git reflog
git reset --hard 版本号
⑤ git分支操作
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过在某个时间点,两个平行宇宙合并了,结果你既学会了git又学会了SVN
在版本控制过程中,同时推进多个任务,我们可以为每个任务单独的创建分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。分支可以简单理解为副本,一个分支就是一个单独的副本
使用分支的好处
1.同时并行推进多个功能开发,提高开发效率
2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可
查看分支
git branch -v
创建分支
git branch 分支名称
切换分支
git checkout 分支名称
创建+切换分支
git checkout -b 分支名称
合并分支(把指定的分支合并到当前分支上)
git merge 需要进行合并的分支名称
提示Tips
合并分支有时也会产生冲突 ,产生冲突的原因是合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,git无法替我们决定使用哪一个,必须人为决定新代码内容
删除分支
git branch -d 需要删除的分支名称
实际应用案例:基于分支紧急修复线上bug
当你接到修复一个代号001的bug的任务时,很自然地,我们可以创建一个分支bug-001来修复它,但是当前正在dev分支上进行的工作还没有提交,我们可以使用git提供的git stash功能,可以把当前工作现场"储藏"起来,等以后恢复现场后继续工作
① 在dev分支上使用如下git指令
git stash
② 首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支
查看分支
git branch -v
切换回master分支
git checkout master
创建并切换到bug-001分支
git checkout -b bug-001
查看现在所处的分支是否为bug分支
git branch -v
③ 在bug-001分支上进行修复出错的代码后,进行提交
git add .
git commit -m "bug修复完成"
④ 提交完成后,切换回master分支,进行分支合并,最后删除bug分支
git checkout master
git merge bug-001
git branch -d bug-001
⑤ 现在bug-001修复完成,是时候接着回到dev分支进行干活了
git checkout dev
git stash pop
提示Tips
修复bug时,我们会通过创建新的bug分支进行修复,然后进行合并,最后进行删除
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复完bug之后,再使用 git stash pop 恢复工作现场
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
GitLab、GitHub、Gitee码云
局域网
√ GitLab
互联网
√ GitHub(外网)
√ Gitee码云(国内网站)
创建远程库别名
git remote add 别名 远程库地址
查看当前所有远程地址别名
git remote -v
推送本地库分支到远程库
git push 别名 分支
拉取远程库到本地库
git pull 别名 分支
克隆远程库到本地库
git clone 需要克隆的远程库地址
克隆clone会帮我们进行拉取代码、初始化本地仓库以及创建别名