基础学习-Git(分布式版本控制系统)

 学习视频推荐

http://【黑马程序员Git全套教程,完整的git项目管理工具教程,一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p=5&share_source=copy_web&vd_source=2b85bd9be9213709642d908906c3d863

1、Git环境配置

安装Git

Git下载链接

https://git-scm.com/downloads

点击右键出现

Git GUI Here(Git提供的图形界面工具)

Git Bash Here(Git提供的命令行工具)

则安装成功

1.1 基本配置

打开Git Bash

1.1.1设置用户信息

git config --global user.name "zhangfeifei"git config --global user.email "zhangfeifei@163.com"

1.1.2 查看配置信息

git config --global user.name
git config --global user.email

1.1.3 为常用指令配置别名

打开用户目录,创建.bashrc文件

部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc

在.bashrc中输入以下内容

#用于输出git提交日志
git log --pretty=oneline --all --graph --abbrev-commit
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'#改完后利用以下命令生效source ~/.bashrc

1.2 获取本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

  • 1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
  • 2)进入这个目录中,点击右键打开Git bash窗口
  • 3)执行命令git init
  • 4)如果创建成功后可在文件夹下看到隐藏的.git目录。

1.3 基础操作指令

Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。

  • git add (工作区——>暂存区)
  • git commit (暂存区——>本地仓库)

1.3.1 未跟踪提交相关案例

创建 file01.txt文件

touch file01.txt

 

 查看当前状态

git status

 

 把所有的修改文件放入暂存区

git add .

 再次查看当前状态,发现file01.txt文件已经被放置到暂存区

最后的目的是把修改的文件放置到仓库进行版本控制

因此用 git commit -m "提示修改了什么" 命令提交暂存区修改的部分

git commit - "add file01.txt"

再次查看状态,发现缓存区已经清空

利用git log 命令查看提交到了哪里

git log

1.3.2 修改提交相关案例

对file01.txt文件进行编辑修改 ,i插入文字,esc退出编辑,:wq!保存退出

vim file01.txt

 查看文件当前状态

 所有的修改放置缓存区

git add .

 查看状态

 提交至仓库

git commit -m "update file 01"

查看提交日志

git log

1.3.3 版本回退

git reset --hard commitID

commitID 用git log命令查看 (在命令行能看见commitID)

commitID 还能用git reflog查看(在命令行不能看见commitID)

只要不删除文件夹,可以任意的往前往后调整版本

 1.3.4 用 .gitignore设置哪些文件无需Git管理

创建file02.a的文件

touch .file02.a

创建 .gitignore,在这个文件里列出哪些文件无需Git管理即可

touch .gitignore

编辑.gitignore,所有以.a结尾的文件均无需git管理

查看状态

 发现file02.a文件没有被提示

1.4 分支

分支是为了多个开发人员之间的开发工作互不影响,因此有了分支的概念 

1.4.1 查看有哪些分支

git branch

 1.4.2 创建分支

git branch dev01

 

1.4.3 切换分支,head指向谁,当前就在哪个分支

git checkout dev01

 以下命令分支不存在也能切换,即先创建再切换,用的更多

git checkout -b dev01

1.4.4 合并分支

刚刚在master分支提交了一个.gitignore文件,现在在dev01创建file02.txt文件,并且提交,如下(还是用上面的简写配置后看上去清晰!!!,不然就要记忆这么多的命令,git log --pretty=oneline --all --graph --abbrev-commit

  • 对于master分支,有.gitignore文件
  • 对于dev01分支,有file02.txt文件

两个分支对应两个开发人员开发的功能,下一步要对这两个分支功能进行合并,那应该怎么样做呢?

一般是把其他的分支合并到master分支上去

首先切换到master分支上

git checkout master

然后把需要合并的dev01分支合并至master分支上去

git merge dev01

随后进入该界面,按ESC,再按:WQ退出即可

查看日志

可以发现在master分支上,dev01分支指向了master分支,代表合并成功。

1.4.5 删除分支

如果有的分支不需要了,就需要对其进行删除

命令如下

#删除分支时进行检查
git branch -d dev01#强制删除分支,不进行检查
git branch -D dev01

查看当前分支

删除分支dev01

1.4.5 合并冲突

设想一下,如果有两分支对同一个文件的同一行进行了修改,那么在合并的时候,就会有冲突,那应该如何解决呢?

当前有一个master分支,有一个file01.txt文件,文件中内容如下

现在创建一个dev分支对file01.txt文件进行修改,修改后的内容如下

再把master分支上对file01.txt文件进行修改,修改后的内容如下

现在打印日志如下

这时如何把dev分支合并到master上会发生什么呢?

直接找到出问题的文件进行处理,再重新提交即可

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

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

相关文章

wireshark_概念

ARP (Address Resolution Protocol)协议,即地址解析协议。该协议的功能就是将IP地址解析成MAC地址。 混杂模式 抓取经过网卡的所有数据包,包括发往本网卡和非发往本网卡的。 非混杂模式 只抓取目标地址是本网卡的数据包,对于发往…

《控制系统实验与综合设计》综合四至六(含程序和题目)

1.电机模型辨识实验 1.1 实验目的 (1)掌握一阶系统阶跃响应的特点,通过实验加深对直流电解模型的理解; (2)掌握系统建模过程中参数的整定,体会参数变化对系统的影响; &#xff0…

单片机开发板上外设资源讲解

单片机开发电路板上简单外设 开发板上各基础外设LED灯按键:数码管介绍液晶屏矩阵键盘扫描的概念LED点阵屏实时时钟蜂鸣器存储器 温度传感器&单总线 开发板上各基础外设 LED灯 中文名:发光二极管 外文名:Light Emitting Diode 简称&…

杨校老师项目之基于单片机STC89C52的智能环境监测系统【嵌入式】

获取全套资料: 有偿获取:mryang511688 技术:C语言、单片机等 摘要: 此设计可分为三个主要部分。此中的温度和湿度的检测功能,通过操纵单总线型温湿度传感器DHT11以数字形式显示,实现了切确测得温湿度的功能…

如何管理多个版本的Node.js

我们如何在本地管理多个版本的Node.js,有没有那种不需要重新安装软件再修改配置文件和环境变量的方法?经过我的查找,还真有这种方式,那就是nvm(Node Version Manager)。 下面我就给大家介绍下NVM的使用 1…

vs2019 c++中模板 enable_if_t 的使用

&#xff08;1&#xff09; 该模板的定义如下&#xff1a; template <bool _Test, class _Ty void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { // type is _Ty for _Testusing …

Golang | Leetcode Golang题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; func grayCode(n int) []int {ans : make([]int, 1<<n)for i : range ans {ans[i] i>>1 ^ i}return ans }

MSR810-LM快速配置通过LTE模块上网

正文共&#xff1a;1111 字 13 图&#xff0c;预估阅读时间&#xff1a;1 分钟 之前买了一个无线版本的MSR810-W&#xff08;淘了一台二手的H3C企业路由器&#xff0c;就用它来打开网络世界的大门&#xff09;&#xff0c;并整理了一份快速配置&#xff08;脚本案例来了&#x…

三菱FX3U-4AD模拟量电压输入采集实例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模块 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模块&#xff26;&#xff38;&#xff13…

SQL——SERVER的建表主要操作

目录 一&#xff1a;数据存储问题 1.表的相关数据 2.表&#xff0c;字段&#xff0c;记录 二&#xff1a;建表 1.创建表头 2. 数据类型 3.保存数据 4.数据冗余 5.使用命令重置表 7.设置主键 一&#xff1a;数据存储问题 1.表的相关数据 表是数据库的基本单位&…

交互原型设计工具 Axure RP 9 for Mac 正式激活版

Axure RP 9 Pro Mac版是Mac平台上的一款专为快速原型设计而生的应用&#xff0c;Axure RP 9 Pro Mac版可以辅助产品经理快速设计完整的产品原型&#xff0c;并结合批注&#xff0c;说明以及流程图&#xff0c;框架图等元素&#xff0c;将产品完整地表述给各方面设计人员&#x…

Android Studio(AS)使用别人的项目与gradle包并运行项目

一、问题描述 在进行AS开发时&#xff0c;我们可能会使用到别人的项目&#xff0c;但发现别人把项目发给我们后会发现gradle项目同步失败o(≧口≦)o&#xff0c;此时计有三&#xff1a; 1.横行霸道、豪取抢夺&#xff1a;直接空降到项目人那里&#xff0c;强他的电脑占为己有…

Numpy的数组操作

文章目录 数组的创建创建全0的二维数组a(3,3)全1的二维数组b&#xff08;3,4&#xff09;随机数二维数数组c&#xff08;2,3&#xff09;效果截图 数组的属性查看b数组的维度查看b数组元素的个数效果截图 数组的维度操作将数组c的行变列&#xff0c;返回最后一个元素返回数组c第…

【回溯】1240. 铺瓷砖

本文涉及知识点 回溯 LeetCode1240. 铺瓷砖 你是一位施工队的工长&#xff0c;根据设计师的要求准备为一套设计风格独特的房子进行室内装修。 房子的客厅大小为 n x m&#xff0c;为保持极简的风格&#xff0c;需要使用尽可能少的 正方形 瓷砖来铺盖地面。 假设正方形瓷砖的…

3、用Vue快雕塑搭建一个管理系统的页面布局框架

3.2.顶部栏header 在el-header标签里对标签栏header进行样式定义 <template><div id"app"><el-container><el-header style"background-color: #4c535a"><img src"/assets/logo.png" alt"" style"w…

运维别卷系列 - 云原生监控平台 之 05.prometheus alertManager 实践

文章目录 [toc]Alertmanager 简介Alertmanager 实现的核心概念GroupingInhibitionSilencesClient behaviorHigh Availability Alertmanager 配置文件globaltemplatesrouteinhibit_rulesreceivers Alertmanager 部署创建 cm创建 svc创建 stsPrometheus 配置告警Prometheus 配置文…

运维别卷系列 - 云原生监控平台 之 03.prometheus label 实践

文章目录 [toc]label 简介自定义标签relabel_configsregexrelabel_action metric_relabel_configs两者的区别 实践 label 简介 label 对于 Prometheus 来说&#xff0c;属于数据处理的方式&#xff0c;Prometheus 是通过指定的 label 来查询数据 Prometheus 的 target 中实例&…

css 步骤条虚线渐变色效果实现

效果如图所示&#xff1a; 思路&#xff1a; 使用元素覆盖的方式实现视觉上虚线的效果 实现代码&#xff1a; html布局 <ul class"details-cont"><li class"details-li" v-for"item in 3" :key"item"><div class&qu…

(教程)gpt-4o如何使用,怎么体验?gpt-4o和gpt-4-turbo的区别

今天OpenAI发布了gpt-4o&#xff0c;我体验之后&#xff0c;gpt-4o简直逆天了。中文能力也挺别强。速度比现在的gpt4还要快。 早在 5 月 11 日&#xff0c;Sam 就在推文中表示&#xff1a;OpenAI 并没有推出 GPT-5&#xff0c;或搜索引擎&#xff0c;但团队一直在努力研发一些…

Nodejs 第七十章(OSS)

OSS OSS&#xff08;Object Storage Service&#xff09;是一种云存储服务&#xff0c;提供了一种高度可扩展的、安全可靠的对象存储解决方案 OSS 对象存储以对象为基本存储单元&#xff0c;每个对象都有唯一的标识符&#xff08;称为对象键&#xff09;和数据。这些对象可以…