概述
-
版本控制器的方式
-
集中式版本控制工具
版本库是存放中央服务器的,team里每个人工作时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。个人修改,然后提交到中央版本仓库。
-
分布式版本控制工具
分布式版本控制系统没有“中央服务器”,每个人电脑都是一个完整的版本库,这样工作的时候,就无需联网了。多人协作只需要将各自的修改推送给对方,就能看到互相的修改了。
-
-
Git有点:
-
速度
-
简单的设计
-
对非线性开发模式的强力支持(允许成千上万并行开发的分支)
-
完全分布式
-
有能力高效管理类似 Linux 内核一样超大规模的项目(速度和数据量)
-
-
Git工作流程
命令如下:
-
clone(克隆):从远程仓库中克隆代码到本地仓库
-
checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
-
add(添加):在提交前先将代码提交到暂存区
-
commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
-
fetch(抓取):从远程库,抓取到本地仓库,不进行任何合并动作,一般操作比较少。
-
pull(拉取):从远程库拉取到本地库,自动进行合并(merge),然后放到工作区,相当于fetch +merge
-
push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
Git安装与常用命令
Git安装
-
git环境配置
-
git获取本地仓库
基础操作指令
Git工作目录下对于文件的修改会存放几个状态,这些修改的状态会随着我们执行Git命令而发生变化
git add (工作区 --> 暂存区)
git commit (暂存区 --> 本地仓库)
-
git status 查看修改状态(暂存区、工作区)
-
git add 单个文件名|通配符 添加工作区一个或多个到暂存区
-
将所有修改加入暂存区: git add.
-
-
git commit -m '注释内容' 提交暂存区内容到本地仓库的当前分支
-
git log [options] 查看提交日志
-
--all 显示所有分支
-
--pretty=oneline 将提交信息显示为一行
-
--abbrev-commit 使得输出的commit更简短
-
--graph 以图的形式显示
-
-
版本回退
-
作用:版本切换
-
命令形式:git reset --hard commitID
-
commitID 可以使用git-log或 git log 指令查看
-
-
如何查看已经删除的记录
-
git reflog
-
这个命令可以看到已经杀删除的提交记录
-
-
-
添加文件到忽略列表
创建一个 .gitignore
分支
几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从主线上分离开进行重大bug的修改,开发新的功能,以免影响主线
-
查看本地分支
-
git branch
-
-
创建本地分支
-
git branch 分支名
-
-
切换分支
-
git checkout 分支名
-
我们还可以直接切换到一个不存在的分支(创建并切换)
git checkout -b 分支名
-
-
合并分支
-
一个分支上的提交可以合并到另一个分支
git merge 分支名称(当前分支和你选择的分支合并)
-
-
删除分支
-
不能删除挡墙分支,只能删除其他分支
-
git branch -d b1 删除分支时,需要做各种检查
-
git branch -D b1 不做任何检查,直接删除
-
-
-
解决冲突
-
两个分支对文件的修改可能导致冲突,例如同时修改了文件同一行,需要手动解决冲突,解决方法如下:
-
处理文件中冲突地方
-
将解决完的冲突放到暂存区
-
提交到仓库(commit)
-
-
-
-
开发中分支使用原则与流程
-
master (生产)分支
-
线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
-
-
develop (开发)分支
-
是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后需要合并到master分支,准备上线
-
-
在master中发现的bug需要先合并到develop分支然后合并到master
-
远程仓库
【精选】Github——git本地仓库建立与远程连接(最详细清晰版本!附简化步骤与常见错误)_git配置远程仓库-CSDN博客
-
查看远程仓库
git remote
-
推送到远程仓库
-
命令
git push [-f] [--set-upstream][远端名称[本地分支名][:远端分支名]]
-
如果远端分支与本地分支名称相同,则可以只写本地分支
git push origin master
-
-
-f 表示强制覆盖
-
--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系
git push --set-upstream origin master
-
如果 当前分支已经和远端分支关联 ,则可以省略分支名和远端名
git push
-
查看本地分支和远程分支对应关系
git branch -vv
-
-
-
从远程仓库克隆
如果已经有一个远端仓库,我们可以直接clone到本地
-
命令:
git clone <仓库路径>[本地目录]
-
本地目录可以省略,会自动生成一个目录
-
-
-
从远程仓库中抓取和拉取
远程分支和本地分支一样,我们可以进行merge操作,只需要把远端仓库的更新都下载到本地,在进行操作
-
抓取 命令:
git fetch [remote name][branch name]
-
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
-
如果不指定远端名称和分支名,则抓取所有分支
-
-
拉取 命令 :
git pull [remote name][branch name]
-
拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于 fetch + merge
-
如果不指定远端名称和分支名,则抓取并更新当前分支
-
-
-
解决合并冲突:
-
和本地操作类似,找到冲突文件再push上去
-
先pull在切换分支!!!