| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> git的基础知识(后续会跟新相关的操作比如Github、gitee、gitlab等) -> 正文阅读 |
|
[开发工具]git的基础知识(后续会跟新相关的操作比如Github、gitee、gitlab等) |
第一章?Git概述 Git是一个免费的开源的分布式版本控制系统,可以快速高效的处理从小型到大型的各种项目。 Git易于学习,所占内存小,性能优秀,具有廉价的本地库,方便暂存区域和多个工作流分支等特性。 1.1何为版本控制 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本方便版本切换。 1.2为什么需要版本控制 个人开发过渡到团队协作 1.3版本控制工具 集中式版本控制工具:CVS、SVN(Subversion)、VSS...... 集中化的版本控制系统,都有一个单一的集中管理服务器,保存所有文件,而协同工作的人通过客户端连接到服务器,取出最新的文件或者提交更新。 好处:每个人都可以在一定程度上看到项目中的其他人正在做什么,而管理员也可以掌握每个开发者的权限,且管理维护容易。 坏处:如果服务器单点故障,就会导致大家都不能进行对版本的控制,即版本控制的权限仅在中央服务器上存在。 分布式版本控制工具:Git、Mercurial、Bazaar、Dares...... 像分布式版本控制工具,客户端是把代码仓库完整的镜像下来(本地库)这样任何一处的协同工作文件发生故障,事后都可以通过其他的客户端的本地仓库进行恢复,因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。 分布式的版本控制系统出现后,解决了集中式版本控制系统的缺陷: 1.?服务器断网时也可以进行开发(因为版本控制是在本地进行的) 2.?每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全) 1.4Git简史 由linus创建从1991年到2002年Linux都是linus自己手动合并由各地提交的对于Linux优化改进的代码,2002年BitKeeper公司免费使用版本控制系统但是到了2005年Linux社区Andrew对于BirKeeper协议进行破解被发现BitKeeper收回Linux免费使用该软件的权限linus花费两周时间开发出了分布式版本控制系统Git,一个月后Linux系统代码由Git管理。 1.5Git的工作机制 工作区(本地存放的代码的磁盘地址)写代码—git add——》暂存区(临时存储)此时还未提交,可以删除——git commit——》本地库(此时生成历史版本)除了销毁本地库基本上你的文件的历史版本是删除不掉的——git push——》远程库 1.6Git和代码托管中心 代码托管中心是基于网络服务器的远程代码仓库,我们简称为远程库。 局域网: GItLab 互联网: GitHub(外网) Gitee码云(国内网站) 第二章?Git安装 这里我就不具体细说了,去官网上下载下Git最新版本,安装的时候一路选择默认就好了。 第三章?Git常用命令 3.1 Git常用命令
3.2?设置用户签名 (1)基本语法 git config-global user.name?用户名 git config-global user.emall?邮箱 (2)说明 签名作用是区分不同操作者身份,用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户名,否则无法提交代码。 注意:这里设置的用户签名和将来登录GitHub(或者其他代码托管中心)的账号没有任何关系。 3.3?查看本地库状态 (1)基本语法 git init (2)在你的的本地磁盘创建一个git?的仓库(文件夹),创建完成后在该文件里面(因为没有放东西,所以暂时是空的)鼠标右键一下打开Git Bash Here然后输入git init命令回车即可 此时你的文件里会生成一个.git文件夹里面是一些配置文件(尽量别去动它),如果没有就在你的操作栏上点击查看把隐藏文件勾选上(电脑一般是未勾选的) ? 这里的Git Bash Here弹出的操作框跟Linux系统一样,所用命令都相同。 而这里的.git就是你的工作区 3.4添加暂存区(就是git追踪文件的过程) (1)基本语法 git ?add?文件名 (2)在Git Bash Here操作框里输入git add?文件名,里面的waring可以不用管一般是自动换换行符 ? 之后可以继续查看文件的状态,当文件名从红色变为绿色 ?说明你的文件提交到了暂存区,如果想要删除该文件可以根据里面的提示内容(就是跟Linux系统的删除文件一样)命令是git rm--cached?文件名,这里只是把暂存区的文件删掉了,但是你的工作区里还是有该文件的。 3.5将暂存区的文件提交到本地库 (1)基本语法 git ?commmit ?-m“日志信息”文件名 (2)操作 红色下划线是提交的版本号 git ?log查看完整的日志信息 git ?reflog查看简化的日志信息 3.6修改文件 (1)操作命令 vim?文件名 修改后再wq保存下 (2)修改后你需要将文件再次的追踪以及提交本地库 这里说下,每次修改都相当再建了一个文件需要去再次的提交追踪 3.7历史版本 3.7.1查看历史版本 基本语法 git ?refolg查看版本信息 git ?log查看版本详细信息 3.7.2版本穿梭 基本语法0 git ?reset ?--hard?版本号 第四章?分支操作 从右向左看 4.1什么是分支 在版本控制过程中,同时推进多个任务,我们就可以创建每个任务的单独分支,使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单的理解为副本,一个分支就是一个单独的副本。(分支底层其实也就是指针的引用) 4.2分支的好处 同时并行推进多个功能开发,提高开发效率。 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。 4.3分支的操作
4.3.1查看分支 (1)基本语法 git ?branch ?-v (2)案例实操 4.3.2创建分支 (1)基本语法 git ?branch?分支名 (2)案例实操 4.3.3修改分支 (1)基本语法 git ?branch?分支名 4.3.4切换分支 (1)基本语法 git ?branch?分支名 (2)案例实操 红色标注?说明现在所处的分支,而星号*说明确实在该分支上 4.3.5合并分支 (1)基本语法 git ?branch?分支名 (2)案例实操(在master分支上合并hot-fix分支) 4.3.6产生冲突 冲突产生的表现:后面状态为MERFING 冲突产生的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,GIt无法替我们决定使用哪一个,必须人为决定新代码的内容。 4.3.7解决冲突 (1)编辑有冲突的文件,删除特殊符号,决定要使用的内容 修改前 修改后 然后保存下添加到暂存区提交本地库(这一步不可以使用原来的文件名称) (2)特殊符号:<<<<<<<HEAD?当前分支的代码 ?======= ?合并过来的代码 ?>>>>>>>hot-fix 注意:合并修改的只是当前的文件内容(比如我当前在master主线将hot-fix合并到master上我的hot-fix文件是不改变的,改变的只是master文件而已) master、hot-fix其实都是指向具体版本记录的指针,当前所在的分支,其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针。 HEAD如果指向master,那么我们现在就在master分支上 HEAD如果指向hot-fix,那么我们现在就在hot-fix分支上 所以切换分支的本质就是移动HEAD指针 第五章?Git团队协作机制 5.1团队协作机制 A先将自己的本地库推送(push)到代码托管中心(2)然后B从代码托管中心克隆(clone)A提交的代码到自己的本地库然后再完善下(3)当B完善好了再将完善过的代码推送(push)到代码托管中心(4)此时A再将代码托管中心里经过B完善后的代码拉取(pull)到自己的本地代码仓库。经过此番操作后完成了A、B、代码托管中心的代码统一。 5.2跨团队协作 (1)先将自己团队的代码公布到远程库(代码托管中心)(2)另一团队fork(叉)过来该代码然后克隆到本地仓库进行修改完善(3)代码修改完善后推送到远程库上(4)联系接受团队进行核实(5)审核通过后原来的团队将修改完善后的代码与自己原来的代码进行合并。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 9:32:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |