Git入门
发布日期:2022-03-04 11:48:20 浏览次数:4 分类:技术文章

本文共 3092 字,大约阅读时间需要 10 分钟。

目录


第一章 Git概述

   Git是一个免费的、开源的分布式版本控制系统。可以快速地处理从小型到大型的各种项目。Git易于学习,占用内存小,性能极快,并且具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。

   git官网:

1.1 版本控制

   版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

   为什么需要版本控制?

        为了从个人开发过渡到团队协作。

1.2 版本控制工具

1.2.1 集中式版本控制工具

   CVS、SVN(Subversion)、VSS等。

   集中化的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新。

   好处就是每个人都可以一定程度上看到项目中的其他人正在做什么,管理员可以轻松掌控每个开发者的权限,并且管理简单。坏处就是中央服务器的单点故障,如果这个服务器宕机了,那在宕机的这段时间内,无法进行协同工作。

1.2.2 分布式版本控制工具

   Git、Mercurial、Bazaar等。

   分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他的客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是对整个文件仓库的完整备份。

   解决了集中式的以下缺陷:

        1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

        2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

1.3 Git工作机制

   工作区指的是本地硬盘上存放源代码的目录位置。此时可以删除代码。

   将工作区写好的代码添加到暂存区,是为了让git能够找到。此时依然可以删除代码。

   将暂存区的代码提交到本地库之后,就会生成对应的历史版本,此时代码就无法删除了。因此在提交本地库之前要慎重检查自己写的代码。

1.4 代码托管中心

   代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

   局域网:

        GitLab

   互联网:

        GitHub(外网)

        Gitee码云(国内网站)

第二章 Git安装

   在官网根据系统下载对应的版本。

   注意安装路径非中文,并且最好没有中文。

   Git选项配置,推荐默认选项:

   Git安装目录的名字:

   Git的默认编辑器,建议使用默认的Vim编辑器

   默认分支名设置,选择让Git决定,分支名默认为master

   修改Git的环境变量,选第一个,不修改环境变量,只在Git Bash里使用Git:

   选择后台客户端连接协议,选默认值OpenSSL

   配置Git文件的行末换行符,Windows使用CRLF,Linux使用LF,选择第一个自动转换:

   选择Git的终端类型,选择默认的Git Bash终端,然后继续下一步:

   选择Git pull合并的模式,选择默认:

   选择Git的凭据管理器,选择默认的跨平台的凭据管理器:

   其他配置选择默认配置:

   实验室功能,技术还不成熟,建议不勾选:

   安装完成后,任意位置右键,在菜单里选择Git Bash Here即可打开Git Bash命令行终端。

   在Git Bash终端里输入git --version查看git版本:

第三章 Git常用命令

3.1 设置用户签名

   基本语法:

        git config --global user.name 用户名

        git config --global user.email 邮箱

   签名的作用时区分不同操作者身份,用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。

   Git首次安装必须设置一下用户签名,否则无法提交代码。同时也要注意这里设置的用户前面和后面登录GitHub的账号没有任何关系。

3.2 初始化本地库

   先手动创建一个工作区git-demo。

   基本语法:

        git init

3.3 查看本地库状态

   基本语法:

        git status

    第一次查看:

   增加一个文件:vim hello.txt

   再次查看:

        红色表示这个文件只存在于工作区,但是git还没有追踪过这个文件

        使用git add命令来实现追踪。

3.4 添加暂存区

   基本语法:

        git add 文件名

   此时再查看状态:

        绿色表示git已经追踪到了这个文件,但是文件目前还是存在于暂存区中。此时可以删除这个

      文件,但是注意删除的只是暂存区的这个文件,在工作区这个文件还是存在的。

3.5 提交本地库

   基本语法:

        git commit -m "日志信息" 文件名

   查看本地库状态:

3.6 修改文件

    进入hello.txt文件并进行修改,再查看状态:

        红色表明当前的修改还没有被添加到暂存区。

   git add后,查看状态:

    git commit提交本地库:

3.7 历史版本

3.7.1 查看历史版本

   基本语法:

        git reflog:查看版本信息

        git log:查看版本详细信息

 

3.7.2 版本穿梭

   基本语法:

        git reset --hard 版本号

 

   Git切换版本,底层其实是移动的HEAD指针

 第四章 Git分支操作

4.1 分支概述

   在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的允许。分支底层其实也是指针的引用

   使用分支的好处:

        1.同时并行推进多个功能开发,提高开发效率;

        2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分

          支删除重新开始即可。

4.2 分支的操作

   创建分支的底层也是指针。比如下面的master、hot-fix其实都是指向具体版本记录的指针,当前所在的分支,其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针。

        HEAD如果指向master,那么我们现在就在master分支上。

        HEAD如果指向hot-fix,那么我们现在就在hot-fix分支上。

        所以切换分支的本质就是移动HEAD指针

4.2.1 查看分支

   基本语法:

        git branch -v

4.2.2 创建分支

   基本语法:

        git branch 分支名

   

4.2.3 修改分支

   在hot-fix分支上修改hello.txt文件。

4.2.4 切换分支

   基本语法:

        git checkout 分支名

 4.2.5 合并分支

   基本语法:

        git merge 分支名

        把指定分支合并到当前分支上

4.2.6 冲突合并

   合并时产生冲突的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法替我们决定使用哪一个,必须人为决定新代码内容。

   演示冲突:

        在master和hot-fix两个分支内都修改hello.txt文件,然后在master分支上合并hot-fix分支。 

 

    解决冲突:手动合并代码。

        打开文件发现:

         编辑有冲突的文件,删除特殊符号,决定要使用的内容。

                特殊符号:

                        <<<<<<< HEAD

                        =======

                        >>>>>>> hot-fix

        文件修改为:

        再添加至缓存区,提交至本地库。(注意:此时commit不要加文件名)

                因为此时是合并到master分支中,只有master分支中的文件会修改,hot-fix分支中的文

              件没有被合并修改。

PS:根据尚硅谷视频课程整理,如有侵权,联系删除。

转载地址:https://blog.csdn.net/xxyneymar/article/details/122298851 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Redis入门(三)
下一篇:Git和GitHub

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月10日 21时27分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【计算机操作系统】进程管理详解?进程与线程区别是什么?进程调度的算法有哪些?进程通信有哪些? 2019-04-26
【计算机操作系统】虚拟内存是什么?分页系统地址映射?页面置换算法有哪些?分段地址映射又是什么? 2019-04-26
【计算机操作系统】设备管理?磁盘结构是怎么样的?磁盘调度算法有哪些? 2019-04-26
【多线程高并发】为什么要使用多线程?创建多少个线程合适呢? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印1-100两个数?多线程轮流打印数字? 2019-04-26
【多线程与高并发】 Java两个线程轮流打印字符串? 2019-04-26
【Linux命令篇】Linux命令实践 2019-04-26
【Leetcode单调队列】Leetcode239 滑动窗口最大值 2019-04-26
【Leetcode-单调栈】单调栈相关的题目-下一个更大的元素I 每日温度 2019-04-26
【Leetcode单调队列】- 洛谷P1714切蛋糕 2019-04-26
【Leetcode优先级队列】- 数据流的中位数 2019-04-26
【Leetcode优先级队列】-合并K个升序链表 2019-04-26
【多线程与高并发】-Java如何实现一个阻塞队列呢? 2019-04-26
【多线程高并发】-Java使用阻塞队列ArrayBlockingQueue实现生产者消费者模式? 2019-04-26
【多线程高并发】-多线程实现数组的读与写 2019-04-26
【Java设计者模式】-Java实现订阅-发布者模式 2019-04-26
【计算机操作系统】-什么是系统调用呢?什么是用户态?什么是内核态? 2019-04-26
【计算机操作系统-进程管理】-进程通信是什么呢? 2019-04-26
Python程序元素分析 2019-04-26
TurtleArt美景图 2019-04-26