Git 初学

目录

一、需求的产生

二、版本控制系统理解

1. 认识版本控制系统

2. 版本控制系统分类

(1)集中式版本控制系统

缺点:

(2)分布式版本控制系统

三、初识 git

四、git 的使用

    例:将 “ OLED文件夹 ” 添加到笔者的 gitee仓库中。

基本命令整理:

五、分支操作


一、需求的产生

        在软件开发过程中,每实现一个功能,每前进一步,都要赶紧存档备份,保存为一个版本,然后以这个版本为基点进行下一个版本的开发。客户不停地提需求,改需求,你就不停地备份版本。这就像写毕业论文一样,你不停地改论文,导师不停地打回来,到最后就变成了这个样子。

        不同版本的论文之间 到底修改了哪些东西 ?时间久了,可能也就 慢慢忘记了。有没有更好的方法去 记录这些详细的变化呢 ?         答案是有的。我们可以 使用 版本控制 系统记录每一次的 修改和变化

二、版本控制系统理解

1. 认识版本控制系统

        版本控制系统会跟踪并记录一个项目中每一个文件的变化:谁创建了它,谁修改了它,又是谁删除了它,是什么时候,修改了什么内容,都一一记录在案。有了版本控制系统,工程师之间互相推卸责任的机会大大减少了,你修改了什么,都有详细的记录在案,都保存在版本库中,铁证如山,随便翻一翻就可以查得到。

2. 版本控制系统分类

        版本控制系统一般分为:集中式版本控制系统和分布式版本控制系统

(1)集中式版本控制系统

软件的各个版本快照只保存在服务器上,服务器中包含各个版本的软件代码。用户如果想要观看某个版本的代码, 首先要从版本库中将该版本的代码拉取到本地的计算机上,然后才能查看和修改,最后将自己的修改保存到服务器上。

缺点:

    ① 数据存储在 服务器上,使用时要 联网:员工直接登录服务器 删库 跑路,如果数据没有备份,问题就很严重,基本上就 很难恢复了。

    ② 收费:远远 没有免费的分布式版本控制 系统受 欢迎。

(2)分布式版本控制系统

        不再将整个版本库保存在一个服务器上,而是保存在每个员工的计算机中

好处:

        即使服务器 崩溃了,或者离职的员工删除了服务器的代码,只要 数据在任何一个员工的计算机中有 备份,都可以 直接恢复,因为 每个计算机保存的版本库数据 都是一样的

        集中式 和 分布式版本 控制系统 典型的代表就是 小乌龟和 Git

三、初识 git

        学习git,首先要明白几个重要的基本概念工作区(Working Directory)、暂存区(Staging Area) 和版本库(Repository)。

        版本库 里保存的是我们提交的 多个版本的代码快照,如果想查看某个版本的代码,可以通过 git checkout命令将版本库里这个 版本的代码拉取出来,释放到 工作区

        在工作区,可以浏览某一个版本的代码、修改代码。如果想 把自己修改保存到版本库中,可以先将修改保存到 暂存区,接着修改,再保存到暂存区,直到 真正完成修改,再统一将暂存区里所有的修改提交到 版本库中。

        为什么还需要一个暂存区呢?将工作区的修改直接提交(Commit),保存到版本库中岂不是更方便?

   答:

        对于一个版本库来说,你的 任何一个提交,包括修改、添加文件、删除文件等 操作都会有一个记录,而在 实际工作中,对于一个 工程师来说,在 开发一个功能时,可能会分成很多步,如果每一小步都去 提交一次,意义不是很大,而且 不是一个 完整的功能,别人可能就 搞不懂你的提交到底实现了 什么功能。所以将每次 很小的修改都做一次提交,就不是很合适。

        从原则上讲,我们的 每一次提交,都是一个 里程碑:要么新增了一个功能,要么修改了一个 Bug,要么优化了一个功能。在实际开发中的 每一小步,都可以 先保存到暂存区,等整体功能 完成后,再统一 提交比较合理。

四、git 的使用

    例:将“OLED文件夹”添加到笔者的gitee仓库中。

1. 在此文件路径下打开命令。

2. git init :在此路径下初始化Git仓库

        如果初始化成功,将会生成 .git 目录。这个 .git 目录 里存储着 管理当前目录内容所需的仓库数据。在 Git中,这个目录的内容被称为 “ 附属于该仓库的工作树 ” 。文件的编辑 等操作在工作树中进行,然后 记录到仓库中,以 此管理文件的历史快照。

        如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开。开发者可以通过这种方式获取以往的文件。

补:此时 git status 命令查看 “ OLED文件 ” 时显示在 Untracked files 里。

3. git add OLED :将工作区的修改“OLED文件夹”添加到暂存区(提交之前的一个临时区域,即Stage 或 Index)

补:

(1)git status 命令 的显示结果发生了变化。“ OLED文件 ” 显示在 Changes to be committed 中了。 

(2)git rm --cached OLED:将 “ OLED文件夹 ” 从暂存区中 删除

4. git commit -m “<日志信息(自写)>” OLED:将暂存区的修改提交到本地仓库,即保存仓库历史记录。(通过这些记录就可以在工作树中复原文件

补:

(1)git status查看文件的状态。每一步操作后,OLED 的文件状态都会发生变化 :从untracked 到 changes to be commited ,工作区的状态 也会跟着变化。

(2)git log查看提交信息。包括提交的 ID、提交作者、提交时间、提交信息说明 等。( 后加上目录名,便会 只显示该目录下的 日志。如果 加的是 文件名,就会 只显示与 该文件相关的日志 )

5. 如果想把修改再次提交到本地仓库,可以使用下面的命令。

(1)git add OLED

(2)git commit -m “<日志信息(自写)>” OLED

    git show查看新的提交信息和修改变化

6. git remote add origin 远程仓库地址:建立本地仓库与远程仓库的关联。

    git remote rm origin:删除关联的origin的远程库。

    git pull --rebase origin master:将远程仓库的内容合并到本地仓库。

7. git push -u origin master:将本地仓库的文件推送到已经建立关联的远程仓库master分支中。

基本命令整理:

五、分支操作

        在进行多个并行作业时,会用到分支,每个分支中都拥有自己的最新代码。master分支是 Git 默认创建的分支,因此基本上所有开发都是以这个分支为中心进行的。不同分支中,可以同时进行完全不同的作业。等该分支的作业完成之后再与 master分支合并。

        如果想让自己提交不影响整个项目,不影响其他人使用,则可以创建一个自己的分支my_branch,切换到 my_brancn分支 上,然后在这个分支上 修改代码 就可以了。提交时 再将自己修改用上面的方法 提交到 my_branch分支 上。通过这种操作,所有修改 都提交到你 自己创建的分支 my_branch 上,而不会影响 master主分支上 的代码,不会影响其他人。

(1)git branch my_ branch :创建一个新分支 my_branch。

(2)git checkout my_ branch :切换到新分支my_branch。

(3)git commit -m "on my _brach:modify OLED”:将修改提交到 my_branch。

(4)git log:查看新的提交信息。

(5)git checkout master:切换到 master 分支,在该分支上看不到新的提交信息

(6)git merge my_branch:将 my_branch 分支上的修改合并到 master 分支

(7)git log:查看提交信息。


                                                        后续学习再行更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java排课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java排课管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&#…

Learn LaTeX 020 - LaTex Math Space Font 数学排版之空格、字号、字体

数学排版中很好的处理空格、字号和字体可以使你的出版文档平添更多的特色。 这个视频介绍并演示了这些方面的相关配置。 https://www.ixigua.com/7298100920137548288?id7307759620737466891&logTagb138f9145ce004f6b52a

2024下载使用CleanMyMac X软件时需要注意什么?

使用CleanMyMac X清理系统垃圾文件的步骤如下&#xff1a; 打开CleanMyMac X软件。在主界面中&#xff0c;选择“清理”功能块下的“清理系统垃圾”选项。点击“扫描”按钮&#xff0c;软件将自动扫描系统垃圾&#xff0c;包括缓存文件、系统日志文件等。扫描完成后&#xff0…

【Java基础题型】求商和余数

需求&#xff1a;给定两个整数&#xff0c;被除数和除数(都是正数&#xff0c;且不超过int的范围)。 将两数相除&#xff0c;要求不使用乘法、除法和%运算符。 得到商和余数。 被除数 %除数商 ... 余数 #这里%代表除 //1、求商&#xff0c;就是求里…

【剪辑必备】今天我教你如何手动去下载苹果官网4K预告片 完全免费

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

C++面向对象程序设计-北京大学-郭炜【课程笔记(二)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;二&#xff09;】 1、结构化程序设计结构化程序设计的不足 2、面向对象的程序设计2.1、面向对象的程序设计2.2、从客观事物抽象出类2.3、对象的内存分配2.4、对象之间的运算2.5、使用类的成员变量和成员函数用法1&#x…

代码随想录算法训练营第51天 | 139.单词拆分 多重背包理论基础

单词拆分 这道题最后是判断能否组成&#xff0c;很像回溯法的问题形式&#xff0c;和分割回文串那道题比较类似&#xff0c;所以是可以用回溯法解决的&#xff0c;但是回溯法需要使用记忆化递归来避免超时。 class Solution{ public:bool backtracking(const string s, const …

浅谈设计模式

设计模式 一、设计模式简介二、设计模式分类1.创建型模式&#xff08;Creational Patterns&#xff09;2.结构型模式&#xff08;Structural Patterns&#xff09;3.行为型模式&#xff08;Creational Patterns&#xff09; 三、创建型模式1.工厂模式2.抽象工厂模式3.单例模式4…

【数据库】哪些操作会导致索引失效

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库管理中&#xff0c;索引的有效性对于查询性能至关重要。然而&#xff0c;索引可能会因为各种操…

蓝桥杯真题:纸张尺寸

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...String s scan.nextLine();char[] c s.toCharArray();char c1 c[1];in…

2024 CKS 题库 | 6、创建 Secret

不等更新题库 CKS 题库 6、创建 Secret Task 在 namespace istio-system 中获取名为 db1-test 的现有 secret 的内容 将 username 字段存储在名为 /cks/sec/user.txt 的文件中&#xff0c;并将password 字段存储在名为 /cks/sec/pass.txt 的文件中。 注意&#xff1a;你必须创…

数据结构——顺序表专题

目录 1. 数据结构的相关概念什么是数据结构为什么需要数据结构&#xff1f; 2. 顺序表顺序表的概念及结构顺序表分类静态顺序表动态顺序表 3. 动态顺序表的实现准备工作顺序表的初始化顺序表的扩容尾插头插尾删头删指定位置插入数据指定位置删除数据 4. 全部完整代码**test.c**…

jenkins-maven环境的安装

jenkins-maven环境的安装

【从Python基础到深度学习】2. Ubuntu及插件安装

本期所有软件安装包&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1UVEYm-12FivAnrE5NUXevg?pwdum60 一、安装Ubuntu 1.1 软件安装包&#xff1a;下载 VMware Workstation Pro | CN 一直点下一步即可 1.2 双击运行软件&#xff1a; 输入密钥 1 、VMware 15密钥 …

Git远程仓库的使用(Gitee)及相关指令

目录 1 远程仓库的创建和配置 1.1 创建远程仓库 1.2 设置SSH公钥 2 指令 2.1 git remote add 远端名称(一般为origin) 仓库路径 2.2 git remote 2.3 git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名]] 2.3 git clone url 2.4 git fetch 2.5 git p…

【C语言】指针的进阶篇,深入理解指针和数组,函数之间的关系

欢迎来CILMY23的博客喔&#xff0c;本期系列为【C语言】指针的进阶篇&#xff0c;深入理解指针和数组&#xff0c;函数之间的关系&#xff0c;图文讲解其他指针类型以及指针和数组&#xff0c;函数之间的关系&#xff0c;带大家更深刻理解指针&#xff0c;以及数组指针&#xf…

年假作业11

一、选择题 ADDAADADC&#xff0c;BD,D,B,BD,D,C,CD 二、填空题 6 2&#xff0c;3,5,7,9 rgb *s, - a 2,5 *s 三、编程题 1、 #include <iostream> using namespace std; int main() {int arr[10]{10,20,30,40,50,60,70,80,90,100};int m;//从标准输入读取一个…

Javaweb之SpringBootWeb案例之AOP核心概念的详细解析

2.3 AOP核心概念 通过SpringAOP的快速入门&#xff0c;感受了一下AOP面向切面编程的开发方式。下面我们再来学习AOP当中涉及到的一些核心概念。 1. 连接点&#xff1a;JoinPoint&#xff0c;可以被AOP控制的方法&#xff08;暗含方法执行时的相关信息&#xff09; 连接点指的…

【Win10 触摸板】在插入鼠标时禁用触摸板,并在没有鼠标时自动启用触摸板。取消勾选连接鼠标时让触摸板保持打开状态,但拔掉鼠标后触摸板依旧不能使用

出现这种问题我的第一反应就是触摸板坏了&#xff0c;但是无意间我换了一个账户发现触摸板可以用&#xff0c;因此推断触摸板没有坏&#xff0c;是之前的账户问题&#xff0c;跟系统也没有关系&#xff0c;不需要重装系统。 解决办法&#xff1a;与鼠标虚拟设备有关 然后又从知…

Packet Tracer - Configuring ASA Basic Settings and Firewall Using CLI

Packet Tracer - 使用CLI配置ASA基本设置和防火墙 IP地址表 目标 验证连接并探索ASA设备使用CLI配置ASA的基本设置和接口安全级别使用CLI配置路由、地址转换和检查策略配置DHCP、AAA和SSH服务配置DMZ区域、静态NAT和访问控制列表&#xff08;ACL&#xff09; 场景 您的公司…