如何多人协同开发同一个项目?
使用代码版本控制[version control]软件,
目前市面上比较流行的代码版本控制器有: git,svn,csv
澄清一个问题:
github,gitee和git之间的关系github和gitee是一个网站,git是一个代码版本控制软件。git是当初Linux系统的作者【林纳斯·托瓦兹】为了开发Linux代码所开发的一个开软软件。github是全球知名的一个开源源码托管平台,之所以叫github是因为他支持通过git上传和下载代码,同时因为git比较出名,所以借助了他的名气而已。他们之间的关系类似,张三和张三丰。gitee是一个国内知名的开源源码托管平台,和github出现的原因类似。
1. 使用git管理代码版本
本项目使用git管理项目代码,代码库放在gitee码云平台。(注意,公司中通常放在gitlab私有服务器中)
1.1 Git 的诞生
2005 年 4 月3 日,Git 是目前世界上最先进的分布式版本控制系统(没有之一)
作用:源代码管理
为什么要进行源代码管理?
- 方便多人协同开发[防止代码冲突,相互覆盖]
- 方便版本控制[利于以后的开发人员快速了解项目的开发过程,利于需求变更的时候进行代码回滚]
1.2 git与svn区别
SVN 都是集中控制管理的,也就是有一个中央服务器,大家都把代码提交到中央服务器,而 git 是分布式的版本控制工具,也就是说没有中央服务器,每个节点的地位平等。
SVN
Git
Git的windows下安装
官网地址:https://git-scm.com/download
下载到本地磁盘
安装
一路【next】就可以了
注意:openssl 一定选它
安装完成后,右击菜单栏,有如下菜单,表示安装完成
进入git bash选项
Git工作区、暂存区和版本库
1、工作区介绍
就是在你本要电脑磁盘上能看到的目录。
2、暂存区介绍
一般存放在【.git】目录下的index文件(.git/index) 中,所以我们把暂存区有时也叫作索引。
3、版本库介绍
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。git中的head/master是分支,是版本库。
git项目仓库的本地搭建
1 | cd进入到自己希望存储代码的目录路径,并创建本地仓库.git |
创建仓库
仓库目录的结构
1 | branches/ 分支管理目录config |
配置用户名和邮箱
–global表示全局配置,配置信息默认保存到当前操作系统的用户家目录中的.gitconfig文件,可以通过命令cat ~/.gitconfig查看全局配置如果不加上这个参数,则默认配置信息保存到.git/config文件中,可以通过命令 cat 项目/.git/config查看仓库配置
1 | git config --global user.name 'lisi' |
查看仓库状态
所以的仓库状态指代的就是开发者每次对于项目的文件/目录都会进行增删查改操作。每次对于文件/目录进行操作时,仓库的状态都会记录下来。
1 | git status |
- 红色表示新建文件或者新修改的文件,都在工作区.
- 绿色表示文件在暂存区
- 新建的
login.py
文件在工作区,需要添加到暂存区并提交到仓库区
上图表示: 暂时没有新文件需要提交到暂存区
添加文件到暂存区
1 | # 添加项目中所有文件 |
例如: 创建3个文件 ,并查看状态.
1 | touch 1.htmltouch 2.html 3.htmlgit statusgit add 1.html 2.html 3.html # 或 git add .git status |
效果:
如果要测试1.html,2.html的暂存状态,则
1 | git rm --cached 1.html 2.html |
结果就是只有3.html是被保留在了暂存区
提交到版本库
要把文件/目录提交到版本库必须先把文件/目录添加到暂存库才可以。所以上述的3.html可以提交,1.html和2.html是不能被提交的。
1 | git commit -m "版本描述" |
手动删除文件
1 | 手动操作删除 或者 在命令行下 使用 rm 文件名 删除 都是表示在工作区删除. |
查看历史版本[查看日志]
1 | git log # 查看详细日志列表 |
回退版本
方案一:
HEAD
表示当前最新版本HEAD^
表示当前最新版本的前一个版本HEAD^^
表示当前最新版本的前两个版本,以此类推…HEAD~1
表示当前最新版本的前一个版本HEAD~10
表示当前最新版本的前10个版本,以此类推…1
git reset --hard HEAD^
方案二:当版本非常多时可选择的方案
通过每个版本的版本号回退到指定版本
1
git reset --hard 版本号
查看文件状态
针对与文件所处的不同分区,文件所处的状态:
(1)未追踪, 文件第一次出现在工作区, 版本库还没有存储该文件的状态
(2)已追踪, 只要第一次,git add了文件, 文件就是已追踪
(3)未修改, 文件在工作区未被编辑
(4)已修改, 文件在工作区被修改
(5)未暂存, 文件已修改, 但是没有add到暂存区
(6)已暂存, 已经将修改的文件add到暂存区
(7)未提交, 已暂存的文件, 没有commit提交. 处于暂存区
(8)已提交, 提交到版本库的文件修改,只有commit以后才会有仓库的版本号生成
注意:
1 | 公司一般使用git管理项目,往往会搭建一个gitlab自己内部管理代码,也有公司选择使用码云的企业版仓库来管理 |
2. 在git平台创建工程
1) 创建私有项目库
创建私有空仓库以后的界面:
2)克隆项目到本地
1 | git clone 仓库地址 |
3)创建并切换分支到dev
1 | # 分支管理的命令 |
git提交
1 | git add 代码目录 |
推送到远端
1 | # git push origin 本地分支名称:线上分支名称 |
如果推送代码,出现以下提示: git pull ….,则表示当前本地的代码和线上的代码版本不同.
1 | 1. 把线上的代码执行以下命令,拉取到本地,进行同步 |