开发的实际场景
场景一:备份
场景二:代码还原
场景三:协同开发
场景四:追溯代码的编写人和编写时间
版本库是集中存放在中央服务器的,team里每个人work时,都从中央服务器下载代码,是必须联网才能工作。局域网或互联网,个人修改后然后提交到中央版本仓库。
举例:SVN和CVS
分布式版本控制系统没有"中央处理器",每个人的电脑都是一个完整的版本库,这样工作的时候无需联网,因为版本库就在自己电脑上,多人协作只需要各自的修改推送给对方,就能互相看到对象的修改了
举例:Git
SVN
Git
Git的工作流程
clone(克隆): 从远程仓库克隆代码到本地仓库
checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
add(添加):在提交前先将代码提交到暂存区
commit(提交): 提交到本地仓库,本地仓库中保存修改的各个历史版本
fetch(抓取):从远程库,抓取到本地仓库,不进行任何的合并,一般操作比较少
pull(拉动):从远程库拉到本地库,自动进行合并(merge),然后放到工作区,相当于fetch+merge
push(推送):修改完后,需要和团队成员共享代码,将代码推送到远程仓库
Git的环境配置
下载与地址
Git (git-scm.com)
安装时一直next即可
Git Bash: Unix与linux风格的命令行,使用最多,推荐最多
Git CMD: windows风格的命令行
Git GUI: 图形化界面的GUI,不建议初学者使用。
查看所有配置 git config -l
查看不同级别的配置文件
查看系统config git config --system --list
查看当前用户(global)
配置 git config --global --list
有些常用的指令非常多,可以起别名。
1.打开用户目录,创建.bashrc文件
(部分windows系统不允许用户创建点号开头的文件,可以打开gitBush执行 touch ~/.bashrc)
2.在.bashrc文件中输入下面内容
#用于输出git提交日志 alias git-log='git log --pretty=oneline --all --graph --abbrev-commit' #用于输出当前目录所有文件及基本信息 alias ll='ls -al'
解决gitBash乱码问题
3.打开GitBash执行下面命令
git config --global core.quotepath false
4.${git_home}/etc/bash.bashrc 文件后面最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zy_CN.UTF-8"
要使用git对我们的代码进行版本控制,首先需要获得本地仓库
在电脑的任意位置创建一个空目录,作为我们的本地Git仓库
进入这个目录中,打开Git Bash窗口
执行命令 git init
如果创建成功后,可在文件中看到隐藏的.git目录
Git工作目录(除了git目录都是工作目录)对于文件的修改(增加、删除、更新)会存在几个状态
这些修改的状态会随着我们执行Git的命令而发生变化
主要讲解如何使用命令控制这些状态之间的转换
*查看修改的状态(status)
*添加工作区到暂存区(add)
*提交暂存区到本地仓库(commit)
*查看提交日志(log)
版本回溯
添加文件至忽略列表
几乎所有版本控制系统都以某种形式支持分支,使用分支就意味着可以把你的工作从开发主线上分离来进行重大Bug修改,开发新的功能,以免影响开发主线
命令:git branch
命令:git branch 分支名
注意:
命令:git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换)
命令:git checkout -b 分支名
一个分支的提交可以合并到另一个分支上
合并到那个分支,就需要先切换到哪个分支上,然后再合并
命令:git merge 分支名称
不能删除当前分支,只能删除其他分支
git branch -d 分支名 删除分支时,需要做各种检查
git branch -D 分支名 删除分支时,不做任何检查
当两个分支上的修改可能会存在冲突,例如同时修改同一个文件的同一行,这时候需要手动修改冲突。
几乎所有版本控制系统都是以某种形式支持分支,使用分支意味着可以把你的工作从开发主线上分离开,进行重大Bug的修改开发新功能,以免影响主线
在开发过程中,一般有如下使用原则与流程
合并的快捷模式