在开发中,很多公司一般都会用到git、svn、cvs等方式来管理代码。使用平台有很多,比如github、gitlab、码云、自己的服务器等。
介绍
代码版本管理工具
CVS代码版本管理工具
- 解决了多个人协同开发,代码合并的问题,从服务器更新代码完成合并,降低了排查问题的难度,每次提交都有记录;
- 新的问题:代码在服务器上同时存储了多个版本(完整),重复量过大,对服务器存储空间要求大。
SVN代码版本管理工具
- 在实现CVS所有功能的基础上,实现了差异化管理,让服务的储存空间不再出现重复的代码,极大的节省了服务器空间。
git代码版本管理工具
全称:分布式版本控制系统。
git支持分布式部署,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
- 相对于传统的SVN管理工具,去服务器,没有服务器的概念,每个开发人员的本地仓库既是开发端也是服务器,可以和另一个人完成代码同步和版本管理
- 基于网络,突破了局域网的显示,可以让开发人员随时随地在任何时间办公,可以通过广域网完成代码的同步和版本管理
- 基于本地,在没有网络的情况下,可以让代码在自己的本地仓库完成代码的同步和版本的管理,将不同功能不同批次的代码管理在不同的代码
代码版本管理平台
- github:有私有和公共仓库,私有仓库一般收费
- gitlab:可以免费搭建私有仓库,并且可以部署在自己的服务器
- 码云:中国社区推出的基于git的代码托管平台
具体操作。
1、注册代码管理平台账号
注册github:
官网:https://github.com/
注册码云:
官网:https://gitee.com/
(以下操作一码云为例)
2、安装git
官方下载地址:https://git-scm.com/downloads
网盘链接:https://pan.baidu.com/s/1iKxNx_K6k5wH8Hy7DeFIoA 提取码:7xp3
安装步骤比较简单,一路下一步。注意地方:安装目录
测试是否安装好:右键可以看到如下图所示
3、配置环境变量
找到安装路径:D:/Git/usr/bin
并在环境变量里面添加路径:
我的电脑 --> 右键属性 --> 高级环境设置 --> 环境变量 --> 系统变量 --> Path里面添加
4、配置远程仓库开发人员
在桌面打开终端输入一下代码:(三次回车)
ssh-keygen -t rsa -C "码云账号"
解释:
ssh-keygen:生成秘钥文件的命令
-t rsa:指定秘钥的算法
-C :添加开发人员身份
如果报不是内部或外部命令,说明环境变量添加有问题。
(此时,C:\Users\Administrator\下面会生成一个.ssh的文件,里面是私钥和密钥,如下如所示。)
然后打开C:\Users\Administrator.ssh\id_rsa.pub,复制其中的内容,添加到远程仓库的SSH秘钥列表
步骤:
1.右上角下拉箭头,找到设置,点击进入
2.左列在安全设置下面点击SSH公钥
3.然后添加标题,添加公钥,点击确定即可
如果是注册的是github,前面步骤基本一样,这里步骤在github网站,右上角-->setting --->New SSH key-->SSH keys->添加公钥
5、git本地和远程仓库的交互
1.本地创建一个文件夹:作为本地仓库
2.进入文件夹,鼠标右击,使用git bash here 打开,使用git工具管理文件夹
3.配置git用户,执行命令配置
git config --global user.name "起一个名字"
git config --global user.email "码云账户"
解释:
--global参数,用例参数,表示这台机器所有的git仓库都会使用这个配置
#查看自己的配置信息
git config --list
4.初始化仓库
git init
执行命令,初始化这个文件夹,转换为本地仓库。此时出现了一个隐藏文件.git,跟踪管理版本库的文件,不要手动修改这个目录里面的文件。
HTTP方式
5.将远程仓库关联到本地仓库,执行命令,这里采用HTTP方式关联。
git remote add origin https:地址
此地址是远程仓库的地址,如下图:
同步仓库信息
就是将平台上的文件拉取到本地文件夹内,实现平台与本地同步,执行如下代码:
git pull --rebase origin master
6.现在来实现一下本地开发后将代码推送到远程平台
在本地仓库添加一个文件demo1.txt,输入一些内容,保存;
此时在Git Base Here开发工具中输入一下命令,可以查看版本管理状态
git status
7.将文件添加到暂存区
git add demo1.txt
8.将暂存区的新文件,提交到本地仓库
git commit demo1.txt -m "基础代码1"
9.将本地仓库中的数据推送远程仓库
git push origin master:master
解释:git push <远程主机名><本地分支名>:<远程分支名>
【注意】在要求输入用户名和密码的时候,输入错误可能会导致下次不再弹出输入用户名和密码的窗口,遇到此情况课通过以下代码解决:
git config --system --unset credential.helper
解释:
- 暂存区:临时存储代码的缓冲区域,暂存区的存在,是为例将非常频繁的小改动统一存储起来,等修改的代码成型可以提交了,再将暂存区的代码提交到本地仓库
- 本地仓库:接受代码版本管理的一个仓库,方便开发人员在没有网络的情况下提交的数据依然接受版本管理
- 远程仓库:一个多人协同开发的公共仓库,保持24小时在线,在最大程度上让所有开发人员在联网的第一时间同步到最新代码
SSH方式
采用SSH方式关联,将远程仓库关联到本地仓库
步骤:
1、在本地新建一个目录
【注】由于上面配置git用户时,采用了--global,所以这里就不要再配置了。
2、初始化仓库
git init
3、拉取远程仓库完整项目
git clone 远程仓库链接地址
这次链接地址需要选择SSH,如下如:
4、拉取远程项目后,在本地仓库新建demo2.txt
5、通过如下代码查看版本管理状态
git status
6、将文件添加到暂存区
git add demo2.txt
7、将暂存区的新文件,提交到本地仓库
git commit demo2.txt -m "新增demo2"
8、将本地仓库中的数据推送远程仓库
git push
此时只需要这一行代码即可,也不需要输入用户名和密码
分支创建即运用
- 创建分支
git branch 分之名
- 切换分支
git checkout 分支名
- 查看分支
git branch
- 在主分之下合并其他分支下的文件到主分支下
git merge 分支名
- 删除分支
git branch -d dev
案例:
1、创建dev分支
git branch dev
2、切换到dev分支下,并创建新文件或修改demo3.txt
git checkout dev
3、查看状态
git status
4、提交暂存区
git add demo3.txt
4、提交本地仓库
git commit demo3.txt
5、切换回主分之
git checkout master
6、合并dev分支到master分支
git merge dev
7、在主分之下推送到远程仓库
git push
8、删除不需要的分支
git branch -d dev
9、强制删除dev分支
git branch -D dev
【注意】在分支中添加修改文档后,需要添加到暂存区提交到到本地仓库,才会出现主分之和其他分支内部文件的差异。
版本回滚
在开发过程中,出现了代码问题,新提交的代码导致项目崩溃,git可以让代码回滚到上一个正常的状态。
- 差异排查
git diff
解释:
如:-1,2 +1,4
修改前:从第一行开始,有两行发生变动
修改后:从第一行开始,有四行添加
- 查看提交历史日志
git reflog/log
reflog :简要信息
log : 详细信息
- 版本回滚
将先做版本回滚到9473dc93 这个版本
git reset --hard 9473dc93
回退到此版本后,在此版本之后做的任何操作都会失效
版本冲突
什么是版本冲突
本地仓库有待提交的数据,和服务器上的数据不一致。
例如:A和B同时开发,都pull远程仓库的代码,A修改了demo1.py,提交并推送成功,B也修改了demo1.py,提交并推送,发现失败,产生了版本冲突,原因是推送前没有更新
原则:先更新,再提交,推送前先git pull获取最新代码,在合并,最后push提交
一旦发生冲突,需要手工合并,git用<<<<<<,=======,>>>>>>标记出不同分支的内容,我们修改后再提交本地数据。
制造冲突
git branch dev
git checkout dev
#在dev分支下修改1.txt 添加一行this is branch dev change
git add 1.txt
git commit 1.txt -m "branch dev change"
git checkout master
#在master分支下修改1.txt 添加一行this is master change
git add 1.txt
git commit 1.txt -m "master change"
git merge dev
此时查看1.txt,内容如下
this is first demo
<<<<<<< HEAD
this is master change
=======
this is branch dev change
>>>>>>> dev
冲突处理:
通过手动修改哪些留哪些去除
<1.txt修改后内容为>
this is first demo
this is master change
this is branch dev change
然后依次执行如下代码
git add 1.txt
git commit 1.txt -m "finall change"
git checkout master
git push origin master:master
【注意】以上合并发生冲突后,状态一直处于合并状态,在添加到本地仓库后,需要竟分支切换到推送文件夹下,才能进行推送。
Pycharm使用git
打开pycharm,选择环境变量:
file-->setting-->version control-->git-->Path to git
填入:c:\program files\git\cmd\git.exe
1、菜单栏vcs-->get from viersion control-->version control:git-->URL:码云clone地址-->选择一个本地仓库
2、新建demo4.py-->写入代码,右击-->git-->add-->commit file-->填写描述,然后commit-->repository-->push