什么是git?
版本控制
毕业论文第一版 services.doc
和同学沟通后修改
services改动版.doc
和毕业的学长沟通后
services最终版.doc
和导师沟通后
services终极版.doc
上网查资料
services不再修改版.doc
使用软件记录每次文件的改动
版本 文件名 用户 说明 日期
1 services.doc 张伟强 第一版 2020/03/10 10:30
2 services最终版.doc 张伟强 学长建议 2020/03/17 10:30
3 services终极版.doc 张伟强 老师建议 2020/03/27 10:30
4 services不再修改版.doc 张伟强 网上资料 2020/04/07 10:30
版本控制工具
CVS代码版本管理工具
优点:
解决了多个人协同开发,代码合并的问题:从服务器更新代码完成合并
解决了多人协同开发,排查问题的难度:每次提交都有记录
缺点:
代码在服务器上同时存储了多个版本(完整),重复量过大
对于服务器的要求(存储空间)更高
SVN 代码版本管理工具
优点:
在实现了 CVS 所有功能的基础上,实现了差异化管理,让服务器的存储空间
不再出现重复存储代码的情况,极大的节省了服务器空间!
集中式,git是分布式
GIT 代码版本管理工具
去服务器,没有服务器的概念,每个开发人员的本地仓库既是开发端也是服务器
可以和另一个开发人员之间,完成代码同步,完成版本管理
基于网络,突破了局域网的限制,可以让开发人员随时随地在任何时间办公,可以通过 广域网完成代码的同步和版本的管理
基本本地,在没有网络的情况下,可以让代码在自己本地的仓库中完成代码的同步和管理,将不同功能不同批次的代码管理在不同的版本中
1.注册github账号,创建远程仓库,参考文档
2.安装git,参考文档
3.配置远程开发人员
cmd打开窗口
ssh-keygen -t rsa -C "hzq1518889221@163.com"
ssh-keygen:生成秘钥文件的命令
-t rsa :指定秘钥算法
-C :添加注释,说明开发人员的身份,一般填写开发邮箱
秘钥默认生成在C:\Users\Administrator\.ssh位置
将id_rsa.pub公钥添加到github上的秘钥列表
添加方式:打开id_rsa.pub,复制里面的内容,打开github,右上角-->setting-->左边窗口选择SSH and GPG kys--> New SSH key-->将复制的内容粘贴进去即可
4.创建本地仓库,和远程仓库完成同步
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,跟踪管理版本库
注意:不要修改.git中的文件,可能会给仓库造成破坏
5.将远程仓库关联到本地仓库
执行命令:git remote add origin https://github.com/ujiuye815/python0421.git
此地址是远程仓库克隆地址
6.同步仓库信息
git pull --rebase origin master
将远程仓库项目拉取到本地仓区
7.将本地项目文件推送到远程
新建文件test1.txt
将文件添加暂存区 git add test1.txt
将暂存区的文件提交到本地仓库 git commit test1.txt -m "新建初始化文件"
推送到远程仓库 git push -u origin master
-u 设置默认推送方式,设置后以后推送直接执行git push
git push origin master:master
git push <远程主机名><本地分支名>:<远程分支名>
输入github用户名和密码,推送成功之后,远程仓库会多一个test1.txt文件
暂存区:临时存储代码的缓存区域,暂存区的存在,是为了将非常频繁的小改动统一存 储起来,等开发人员认为自己的修改已经成型可以提交了,在将暂存区的数据提交到 本地仓库
本地仓库:本地仓库是一个接受代码版本管理的仓库,这个仓库中数据会按照提交历史 进行版本管理控制,方便了开发人员在没有网络连通的情况下提交的数据依然接受版 本管理
远程仓库:远程仓库是一个多人协同开发时的公共仓库,保持 24 小时在线,这样能最 大程度的保证所有开发人员都能在联网的第一时间同步到最新的代码
案例操作:创建一个demo_01.py,通过命令添加到版本管理工具
1.新文件的提交
git status 查看文件的状态,有一个文件没有接收管理
2.git add 命令添加到暂存区 git status 有待提交文件
git add demo_01.py
3.提交操作:git commit,从暂存区提交到本地仓库 -m 注释
git commit demo_01.py -m "第一次提交的demo_01.py"
git status 没有待提交的数据
4.已有文件的修改
在demo_01.py中添加代码 print("hello")
1.git status modify demo_01.py, 有修改的操作
2.git update 更新操作
3.git commit -m demo_01.py -m "添加基础代码hello"
4.git status 没有待提交数据
5.推送操作 git push **
push之前保证已经关联远程操作,并且拉取最新代码
分支操作
创建分支
git branch dev
查看分支
git branch
切换分支
git checkout dev
1.在当前分支下创建demo_02.py,并提交到版本库
git add demo_02.py
git commit demo_02.py -m "dev分支下创建的demo_02.py"
2.切换到主分支
git checkout master 此时文件夹内没有demo_02.py
3.合并分支的命令:git merge 分支
git merge dev 将dev分支合并到当前分支master, 此时文件夹内出现demo_02.py
4.git branch -d dev 删除分支
git branch 查看,此时没有dev分支了
回滚操作
开发过程中,出现代码问题,新提交的代码导致项目崩溃,git可以让代码回滚到之前的正确的状态
在demo_01.py代码改为
class Person:
def __init__(self,name)
self.name=name
git diff 查看修改的代码和之前的异同
出现 -n1,n2 +n3,n4
修改前,从n1行开始,有n2行内容发生变动
修改后,从n3行开始,有n4行内容发生变动
想要恢复到原来的"添加基础代码hello",可以使用回滚
回滚:git reset HEAD 回到上一个版本
git reset HEAD^
查看提交历史
git log 查看详细信息
git reflog 查看简要信息
git reset --hard 9caffb0
回到此版本后,在此版本后做的所有操作失效,创建的demo_02.py消失了
版本冲突
本地提交的数据和服务器上的数据不一致,一般是开发人员的不规范操作
A和B同时开发,先后pull远程仓库的代码,A修改了demo_01.py,提交并推送成功,B也修改了demo_01.py,提交后推送失败,产生了版本冲突,原因是推送前没有更新
原则:先更新,再提交
一旦发生冲突,就要手工合并,Git用<<<<<,=======,>>>>>>标记处不同分支的内容,我们修改后再提交本地数据
制造冲突
创建分支 git branch dev2
切换分支 git checkout dev2
在dev 分支下修改demo_01.py,最后一行添加print("dev分支下的world")
git add demo_01.py
git commit demo_01.py -m "dev2分支提交的demo01冲突测试"
切换到master分支 git checkout master
在master分支下最后一行添加 print("master下的python")
git add demo_01.py
git commit demo_01.py -m "冲入测试master修改demo_01.py"
git merge dev2
原文:https://www.cnblogs.com/markshui/p/12932778.html