学习Git看这一篇就够了

news2024/11/19 19:43:49

文章目录

  • Git简单介绍
    • 官方网址
    • Git是什么
    • 版本控制系统的演化
  • Git安装 - Windows版
  • 需要熟悉的几个Linux命令
  • Git命令行状态对应目录位置
  • Git命令
    • 1. git init
    • 2. git status
    • 3. git add
    • 4. git commit
    • 5. git config
    • 6. git reset
    • 7. git diff
  • 练习 - 创建学生管理系统
    • 练习提交代码
    • 练习修改代码后提交
    • 练习版本回退
  • git分支
    • Git分支概念
    • 开发
    • 分支相关命令总结
      • 1. 创建分支
      • 2. 切换分支
      • 3. 切换到上一个分支
      • 4. 创建dev分支并切换到dev分支
      • 5. 查看本地分支
      • 6. 删除分支
      • 7. 合并分支
  • 开始使用github进行两地开发
    • 在github上创建空仓库
    • 将本地仓库代码提交到远程仓库
    • 在github上创建包含文件(README.md和.gitignore)的仓库
    • 先拉取远程仓库的代码
    • 将本地版本推送到远程仓库

Git简单介绍

官方网址

​ https://git-scm.com

官方书籍Pro Git第二版地址

​ https://www.git-scm.com/book/zh/v2

Git十周岁之际,Linus Torvalds大谈Git开发故事(来自CSDN)

​ https://blog.csdn.net/AlvinPanda/article/details/77411157

Git是什么

Git是一个免费开源的分布式版本控制系统,可用于高效的处理任何大大小小的项目

版本控制系统的演化

那么什么是分布式版本控制呢?

Git版本控制:https://blog.csdn.net/qq_29917503/article/details/127999471

Git安装 - Windows版

下载地址: https://git-scm.com/download/win
安装步骤: 修改一下安装目录,然后直接一路点击Next,直到安装完成

在这里插入图片描述

需要熟悉的几个Linux命令

cd dirNmae #进入目录(改变目录)
pwd #显示当前所在目录
ls  #列出当前目录的文件
ls -l #显示详细信息
ls -a#显示隐藏文件
cat #查看文件内容
touch#创建文件
echo + `>> | >` # 向文件输入内容
mkdir #创建目录

Git命令行状态对应目录位置

.(./): #当前目录
..(../): #上一级目录
~: #用户主目录
-: #上一次所在目录

Git命令

1. git init

作用

  • 让git能够管理本地目录
  • 创建一个本地版本库

执行完成git init之后,本地目录变化

  • 会在目录下创建一个.git的隐藏目录;

  • 这个.git隐藏目录就相当于本地版本库;

  • 默认创建了一个master分支(主干);

演示使用过程

  • 创建a目录

  • 进入a目录

  • 执行git init

在这里插入图片描述

2. git status

作用

查看版本库状态

红色 - Untracked File:未添加到暂存区的文件

哪些文件是红色的??

  • 新增加文件

  • 修改已经被git管理过的文件

  • 手动删除的已经被git管理过的文件

  • 手动重命名的已经被git管理过的文件

执行git add 文件..,可以将红色变成绿色

绿色:添加到暂存区的文件,没有提交到版本库

执行git commit -m "提交日志" 文件,将文件添加到本地版本库

3. git add

作用

将文件添加到暂存区

将单个文件添加到暂存区

git add 文件

将所有未添加到暂存区的文件添加到暂存区

git add .

git add *

git add -A

4. git commit

作用

将暂存区的文件提交到本地版本库

如果后边不加具体文件,表示将暂存区所有文件提交到版本库

git commit -m “msg” 文件

可以将修改的版本库文件直接提交到本地版本库

git commit -am "msg" 文件

5. git config

作用

配置git配置文件

git的三类配置

配置级别命令配置文件优先级
本地版本库git config --local.git/config最高
用户级别git config --global~/.gitconfig其次
系统配置git config --system安装目录/etc/gitconfig最低

添加配置方式1

git config --local user.name 'et2001'

git config --local user.email 'et2001@et.com'

--local可以替换成--global或者--system

添加配置方式2

git config --local --add user.name 'etoak'

注意:如果已经存在了配置,这个命令会追加一条

查看配置

git config --local -l

--local可以替换成--global或者--system

在这里插入图片描述
删除配置

git config --local --unset user.name

注意:

​ 如果有user.name多个值,那么删除的时候一定要加上指定的值

git config --local --unset user.name 'et'

修改配置

git config --local --replace-all user.name 'etoak'

6. git reset

作用

回退到指定版本

git reset --hard commit

回退版本库

回退暂存区

回退工作区

git reset --soft commit

回退版本库

不回退暂存区

不回退工作区

git reset --mixed commit

回退版本库

回退暂存区

不回退工作区

7. git diff

作用

对比文件内容

git diff --staged index.html

git diff --cached index.html

对比暂存区和版本库

在这里插入图片描述
git diff index.html

对比工作区和暂存区文件差异

在这里插入图片描述
git diff HEAD index.html

对比工作区和版本库文件差异

在这里插入图片描述

练习 - 创建学生管理系统

练习提交代码

1、创建student目录

在这里插入图片描述

2、进入student目录

在这里插入图片描述

3、执行git init,初始化本地版本库

在这里插入图片描述

创建index.html,开发 录入学生 的功能

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Index</title>
	</head>
	<body>
		<ul>
			<li>录入学生</li>
		</ul>
	</body>
</html>

把index.html添加到暂存区

在这里插入图片描述

把index.html提交到本地版本库

在这里插入图片描述

练习修改代码后提交

开发查询学生 功能

修改index.html,增加查询学生功能

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Index</title>
	</head>
	<body>
		<ul>
			<li>录入学生</li>
			<li>查询学生</li>
		</ul>
	</body>
</html>

将index.html直接提交到本地版本库

在这里插入图片描述

练习版本回退

开发聊天功能

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Index</title>
	</head>
	<body>
		<ul>
			<li>录入学生</li>
			<li>查询学生</li>
			<li>聊天</li>
		</ul>
	</body>
</html>

将聊天功能提交到本地版本库

在这里插入图片描述

客户要求撤销聊天功能

在这里插入图片描述

客户要求再加上聊天功能

在这里插入图片描述

git分支

Git分支概念

​几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着可以把我们的工作从开发主线上分离开来,以免影响开发主线。 在很多版本控制系统中,这是一个略微低效的过程(常常需要完全创建一个源代码目录的副本,对于大项目来说,这个过程会耗费很多时间)。

​Git 处理分支的方式可谓是难以置信的轻量,创建新分支几乎可以在瞬间完成,并且在不同分支之间的切换操作也是十分便捷。 与其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。

开发

步骤

1、先创建dev分支

2、切换到dev分支

3、在dev分支开发举手功能,开发到50%,提交版本库

4、线上代码出现bug,需要紧急修复bug

5、切回master分支

6、创建bug分支

7、切换到bug分支

8、修复bug

9、测试完成之后,切换到master,合并bug分支代码

10、删除bug分支

11、切回dev分支,继续开发剩余50%

12、开发完成之后,提交到本地版本库

13、切回master分支

14、合并dev分支

15、删除dev分支

详细步骤

  1. 在master分支上创建dev分支

在这里插入图片描述

  1. 切换到dev分支

在这里插入图片描述

  1. 开发举手功能,开发到50%,提交到本地版本库
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
    <ul>
        <li>录入学生</li>
        <li>查询学生</li>
        <li>聊天</li>
        <li>举手 - 50%</li>
    </ul>
</body>
</html>

在这里插入图片描述

  1. 线上代码出现bug,需要紧急修复bug

  2. 切回master分支

在这里插入图片描述

  1. 创建bug分支,并切换到bug分支

在这里插入图片描述

  1. 解决查询学生功能的bug

  2. 将解决的问题后的代码提交到本地版本库

在这里插入图片描述

  1. 测试完成之后,切换到master,合并bug分支代码

在这里插入图片描述
在这里插入图片描述

  1. 删除bug分支

在这里插入图片描述

  1. 切回dev分支,继续开发剩余50%

在这里插入图片描述

  1. 开发完成之后,提交到本地版本库

在这里插入图片描述

  1. 切回master分支

在这里插入图片描述

  1. 合并dev分支

有可能会出现冲突

git merge dev

  1. 删除dev分支

在这里插入图片描述

分支相关命令总结

1. 创建分支

git branch dev

2. 切换分支

git checkout dev

3. 切换到上一个分支

git checkout -

4. 创建dev分支并切换到dev分支

git checkout -b dev

5. 查看本地分支

git branch -v

6. 删除分支

git branch -d dev

7. 合并分支

git merge dev

开始使用github进行两地开发

在github上创建空仓库

注册github账号,点击New Repository,创建仓库

在这里插入图片描述

填写仓库名称、描述…

在这里插入图片描述

将本地仓库代码提交到远程仓库

按照github提示,将本地仓库代码提交到远程仓库

在有本地仓库的情况下
1、关联本地仓库和远程仓库

 git remote add 远程仓库别名 远程仓库地址  

2、将本地版本库提交到远程

git push origin master

在github上创建包含文件(README.md和.gitignore)的仓库

点击New Repository,创建仓库

在这里插入图片描述

填写仓库名称、描述…(包含描述文件)

在这里插入图片描述

先拉取远程仓库的代码

先拉取远程仓库的代码

在这里插入图片描述
但是拉取的时候报错误: 拒绝合并不相关的历史版本

解决上面的问题

git pull(git fetch + git merge)
git fetch origin master
git merge --allow-unrelated-histories origin/master

在这里插入图片描述

将本地版本推送到远程仓库

合并完成之后,将本地版本推送到远程仓库

git push origin master

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

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

相关文章

传感模块:MATEKSYS Optical Flow LIDAR 3901-L0X

传感模块&#xff1a;MATEKSYS Optical Flow & LIDAR 3901-L0X1. 模块介绍2. 规格参数3. 使用方法Step1: 接线方式Step2: 安装方式Step3: 使用范围4. 存在问题4.1 MATEKSYS 3901-L0X 输出协议格式&#xff1f;4.1.1 支持光流计协议(iNav-CXOF)4.1.2 支持光流计激光测距协议…

混合SDN中的安全性问题研究

混合SDN中的安全性问题研究混合SDN中的安全性问题研究1.学习目标2.学习内容3.目前存在的问题4.解决办法1.关于欺骗ARP的讨论2.DDoS攻击探讨5.解决方案现有文献的解决方案6.目前面临的挑战申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xf…

美食杰项目(一)登录注册页

目录前言&#xff1a;具体效果&#xff1a;代码思路相应的组件&#xff1a;具体代码&#xff1a;all页面的具体代码&#xff1a;login页面具体代码&#xff1a;**登录和注册的基本功能都一样所以没有注释**enroll页面的具体代码&#xff1a;路由相关代码&#xff1a;相关引入&a…

Swagger2依赖的版本问题导致其配置文件一直报错的终极解决方案

Swagger2依赖的版本问题 在项目中使用的报错的版本 springboot2.2.1.RELEASE swagger2.9.2导致在写swagger的配置类时&#xff0c;一直引入不了依赖 导入正确的依赖 <!--swagger--> <dependency><groupId>io.springfox</groupId><artifactId>sp…

JIRA on K8s helm部署实战

JIRA on K8s helm部署实战jira on k8s实战waht&#xff1f;架构![在这里插入图片描述](https://img-blog.csdnimg.cn/7b007d9bfb4648c7b1ab816105f51701.png)如何选择chart官方的chartmox 的chart【1】mox chart 安装脚本【2】生产环境的yamljira 的sharedHome 和localHome 的区…

spring源码 - @Condition原理及运用

1.在源码中&#xff0c;在生成beanfinition中有有如一段代码 以下代码逻辑中执行this.conditionEvaluator.shouldSkip返回true直接跳出beandefinition生成逻辑 private <T> void doRegisterBean(Class<T> beanClass, Nullable String name,Nullable Class<? …

实验数据处理

来源 加热冷却温度实验&#xff0c;相同实验参数可能有一次或多次重复实验&#xff0c;一次实验中也可能有多次。如何分别每一次周期&#xff0c;并把每个周期的数据都分析出来&#xff0c;成为一个问题。 解决思想 想根据冷却后的平台划分不同周期&#xff0c;但是由于冷却…

web前端期末大作业【仿12306铁路官网首页】学生网页设计作业源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

分享5款同类软件中的翘楚,属于是WIN10必备良品

今天要给大家推荐的是5款软件&#xff0c;每个都是同类软件中的个中翘楚,请大家给我高调地使用起来,不用替我藏着掖着。 1.PPT插件——OneKeyTools OK插件是一款免费的PPT插件&#xff0c;让你的PPT制作有无限可能&#xff01;它的功能&#xff0c;太多了&#xff0c;比如图片…

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

漏洞环境 Vulhub 影响版本 Apache 2.4.0~2.4.29 漏洞简介 Apache HTTPD 是一款 HTTP 服务器&#xff0c;其 2.4.0~2.4.29 版本中存在一个解析漏洞&#xff0c;在解析 PHP 时&#xff0c;1.php\x0A 将被按照 PHP 后缀进行解析。 解析漏洞是指服务器应用程序会把某些人为构造…

QT开发实例之常用控件(上)

目录QT控件使用范例设置窗口属性字体形状窗体QPushButton 按钮QLabelQLineEdit 单行文本QComboBox 下拉列表框QFontComboBox 字体下拉列表框QSpinBox 控件QTimeEdit 时间控件QDateEdit 日期控件QScrollBar 滑动条控件QRadioButton 单选按钮QCheckBox 复选框QT控件使用范例 设置…

[附源码]计算机毕业设计JAVA卡牌交易网站

[附源码]计算机毕业设计JAVA卡牌交易网站 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

华为认证HCIP的持证人数

华为认证hcip多少人通过了考试&#xff1f; hcip通过的人数比hcie多很多&#xff1b; 华为官方并没有披露hcip通过的相关数据。 唯一可以借鉴的数据&#xff1a;截止到2020年HCIE的持证人数大约在15000左右。 有多少人过了hcip其实并不是一件非常重要的事&#xff0c;重要的…

[附源码]java毕业设计演唱会售票系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Jan Ozer:高清直播互动场景下的硬编码如何选型?

前言 高清直播逐渐普及&#xff0c;硬编码也成为大势所趋。在 RTE 2022 大会上&#xff0c;来自 NETINT 的 Jan Ozer 通过一系列的对比测试结果&#xff0c;详细分享了如何为高清直播互动场景进行硬编码的技术选型。 本文内容基于演讲内容进行整理&#xff0c;为方便阅读略有删…

膜拜,华为18级工程师用349页构建高可用Linux服务器,其实并不难

前言 本文是华为高级工程师从Linux服务器性能调优与高可用集群构建、MySQL性能调优与高可用架构设计、自动化运维与Linux系统安全等多角度讲解构建高可用Linux服务器的方法和技巧。 希望大家能通过本文掌握 Linux 的精髓&#xff0c;轻松而愉快地工作&#xff0c;从而提高自己…

SwiftUI 后台刷新多个 Section 导致 global index in collection view 与实际不匹配问题的解决

问题现象 在复杂布局的 SwiftUI 视图中,用段(Section)来搭配组合其它容器视图(Form 或 List)无疑极具默契性。不过,在多个 Section 对应的数据被后台多线程修改时,往往会发生难以定位的错误,甚至导致 App 直接崩溃: 如上图所示,我们试图在后台线程更新多个 Section …

[附源码]java毕业设计药品管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

vue3.0的变化汇总

vue2迁移vue3 文档 https://www.javascriptc.com/vue3js/guide/migration/render-function-api.html 1.创建项目 npm init vite-app cd npm install npm run dev 2.setUp() 组合api的&#xff08;解决v2业务逻辑分散的问题&#xff09;方法可以单独写在外面的js。 -本质&…

大数据毕设选题 - 疫情实时数据分析可视化(Flask python)

文章目录1 前言1 课题背景2 数据库设计实现3 实现效果4 Flask框架5 爬虫6 Ajax技术7 Echarts8 最后1 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦! 这两年开始&#xff0c…