初识Git
-
版本控制的方式:
-
集中式版本控制工具:版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作,局域网或者互联网。个人修改之后要提交到中央版本库
例如:SVM和CVS
-
分布式版本控制工具:分布式版本控制系统没有"中央服务器",每个人的电脑上都是一个完整的版本库,这样工作的时候,不需要联网了,因为版本库就在你的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了
例如:Git
-
-
Git的工作流程图
命令如下:
- clone(克隆):从远程仓库中克隆代码到本地仓库
- checkout(检查):从本地仓库中检出一个仓库分支然后进行修订
- add(添加):在提交前将代码提交到暂存区
- commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
- fetch(抓取):从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少
- pull(拉取):从远程库拉到本地库,自动进行合并(merge),然后放到工作区,相当于fetch+merge
- push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
Git的常用命令
创建版本库
-
创建一个空目录
-
cd:打开你所要打开的系统盘
bashcd F:
-
创建一个空的目录:hhh
bashmakdir hhh
-
显示当前目录
bashpwd
-
-
初始化仓库
使用git init命令把这个目录变成git可以管理的目录
bashgit init
基础操作指令
-
-
创建一个text.txt文件
bashtouch text.txt
-
添加文件到暂存区
bashgit add text.txt git add . -> 将所有修改过的文件添加到暂存区,使用这个命令可以批量添加所有已修改文件的更改
-
添加文件到仓库
bashgit commit -m"对于本次提交的说明"
-
修改文件
bashvi text.txt
输入此操作,会进入文件内容中,按下i:使用插入方法对文章进行修改
退出时先按ESC,再同时按:ESC + shift + z + z
-
查看修改内容(每次修改之后都要重新提交)
bashgit diff text.txt
-
git add了一个文件,但要将此文件删除
bashrm text.txt
-
查看历史提交记录
bashgit log git relog -> 可以看到已删除的提交记录
后面加上后缀
--all:显示所有分支
--pretty=oneline:将提交信息显示为一行
--abbrev-commit:使得输出的commit更简短
--graph:以图的形式显示
-
回退到上一个版本:第一种是:git reset --hard HEAD^ 那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset --hard HEAD~100 即可
bashgit reset --hard HEAD^ git reset --hard HEAD^^ git reset --hard HEAD~100
-
分支
几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线
- 查看本地分支
bash
git branch
- 创建本地分支
bash
git branch 分支名
- 切换分支
bash
git checkout 分支名
直接创建并切换
git checkout -b 分支名
- 合并分支:一个分支上的提交可以合并到另一个分支(将分支名中的提交记录记录到当前分支上)
bash
git merge 分支名称
-
删除分支:不能删除当前分支,只能删除其他分支
git branch -d b1 -> 删除分支时,需要做各种检查
git branch -D b1 -> 不做任何检查,直接删除 -
解决冲突
当多个分支上同时对同一个文件的同一位置进行修改,就需要手动解决冲突
- 处理文件的冲突地方
- 将解决完冲突的文件加入暂存区(add)
- 提交给仓库(commit)
- 开发中分支的使用原则与流程
- master(产生)分支:线上分支,主分支,中小规模项目作为线上运行的应用对应的分支
- develop(开发)分支:是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要的是合并master分支上,准备上线
- feature分支:从develop创建的分支,一般是同期并行开发,不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支
- hotfix分支:从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支
- test分支:用于代码测试
- pre分支:预上线分支