**
1、什么是版本控制?
**版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一,版本控制最主要的功能就是追踪文件的变更,它将什么时候,什么人更改了文件的什么内容等信息都能记下来(每次修改提交之后都会形成一个版本
)。版本控制另外一个重要的功能就是多人协作开发,版本控制可以有效的解决多人开发时代码共享问题,可以推动产品多个功能模块同时开发
1.1、代码合并(没有版本控制工具就得拿着U盘copy)
1.2、解决冲突(人工合并代码很难知道哪里有冲突)
1.3、提高代码质量&问题追踪(有代码提交日志,通过日志就能知道是谁修改了什么代码,出了问题就能找到当事人)
1.4、版本回退(如果代码有问题可以根据日志回退,如果误删除文件还可以通过版本工具找回)
> 2、Git是什么?linus Bitkeeper
Git是目前世界上最先进的分布式文件版本控制系统(没有之一)。对于程序员而言,管理的就是代码文件版本
3、Git工作区&暂存区&版本库(本地仓库)
4、Git基本命令
5.1、初始化本地仓库
git init
git status
不知道要敲什么的时候就敲这个命令
5.2、提交代码到本地仓库
git add 文件名
/ git add .
git commit -m "注释"
把暂存区的内容提交到本地仓库
5.3、比较差异
git diff 工作区和暂存区比较
git diff --cached 暂存区和本地库比较
git diff HEAD 工作区和本地库比较
5.4、查看提交日志
git log 只能查看提交的日志
git reflog 可以看到所有的日志
5.5、版本回退
git reset --hard HEAD^ 回退一次
git reset --hard HEAD^^ 回退两次
git reset --hard HEAD~N 回退N次
git reset --hard commitid 回到指定的提交
5.6、撤销修改
git restore <file>... 丢弃当前工作区修改的内容
git restore --staged 文件名 丢弃暂存区里面内容
6、远程仓库
6.1、公司一般会有自己的私服(gitlab)
6.2、我们使用https://github.com/,注册完账号密码要保存
6.3、远程仓库操作
git remote add 别名(origin) 仓库地址
git push -u origin 分支名
第一次提交代码需要这个
git pull
更新代码(其实执行了两个动作一个是更新,还有一个是自动合并 (git fetch + merge))
git fetch
只拉取代码
6.4、如果其他人要协作开发就需要克隆代码
git clone 远程仓库地址
不需要执行git init (推代码只需要执行git push)
git clone 远程仓库地址 -b 分支名
克隆指定分支
git config credential.helper store
保存密码
7、分支管理
7.1、分支有什么用
假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
7.2、什么是Git分支
我们的每次提交,都对应一个具体的时间点,git会把这许多的时间点串起来,就形成了一条时间线,这条时间线就是一个分支。Git中默认的分支就是主分支,叫master
7.3、分支操作
git branch
查看所有分支
git branch 分支名
创建分支
git checkout 分支名
切换分支
git checkout -b 分支名
创建并切换分支
git branch -d 分支名
删除分支
git branch -D 分支名
强制删除
git merge 分支
站在接受合并的分支执行