Git——分布式版本控制工具使用教程

本文主要介绍两种版本控制工具——SVN和Git的概念,接着会讲到Git的安装,Git常用的命令,以及怎么在Vscode中使用Git。帮助新手小白快速上手Git。

1. SVN和Git介绍

1.1 SVN 

        集中式版本控制工具,版本库是集中存放在中央服务器的,团队里每个人工作时从中央服务器下载代码,是必须联网才能工作,局域网或互联网。

1.2 Git 

        分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网了,因为版本库就在你自己的电脑上。

2.Git工作流程

        你作为一名新人,进到了公司,公司发给你了远程仓库的链接,以及账号密码,接下来你只需要按照git的工作流程来就行了。

  1. clone: 从远程仓库把代码克隆到本地,也就是你的计算机上
  2. checkout: 为了避免直接在master主分支上进行开发,通常会创建一个新的分支,在这个分支上操作,不会影响到主分支
  3. add: 你今天写完了代码,先提交到暂存区(分阶段审查,这样能精细化控制版本)
  4. commit: 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. pull: 你想要推送本地更改的时候,最好先从远程仓库拉取到最新的更改,万一有人跟你动了同一行代码,你就得需要手动解决冲突。或者你是旧版本的代码,直接推送会导致版本历史分叉,触发冲突。pull相当于fetch+merge
  6. push: 将本地的提交推送到远程仓库

3.Git安装与配置

3.1 Git安装

下载地址:Git - Downloads

得到下面这样的安装包: 

除了安装位置调整外,一直点下一步就行:

安装成功后,可以右键看一下有没有这两个东西,有的话就是安装成功了。

备注:

Git GUI:Git提供的图形界面工具  Git Bash:Git提供的命令行工具

3.2 Git配置 

3.2.1 设置用户

1.打开Git Bash

2.设置用户名和邮箱

git config --global user.name “yqd”

git config --global user.email "你的邮箱@xx.com"

查看用户名和邮箱

git config --global user.name

git config --global user.email

3.2.2 为常用命令设置别名

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。

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

touch ~/.bashrc 

 

2.用vi命令编辑.bashrc文件

vi .bashrc

3.按 “i” 键输入如下内容 ,输入完成先按ESC,输入 :wq! 退出

#用于输出git提交日志

alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

4. 执行 source ~/.bashrc

source ~/.bashrc 

3.2.3 解决GitBash乱码问题

1.打开Git Bash执行下面命令

git config --global core.quotepath false 

2.${git_home}/etc/bash.bashrc 文件最后加入下面两行

export LANG="zh_CN.UTF-8"

export LC_ALL="zh_CN.UTF-8"

4. 获取本地库

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

1.先建一个文件夹(例如test)

2.进入这个文件,右键打开Git Bash

3.执行命令git init

4.如果创建本地仓库成功,就会在文件夹下看到隐藏的.git目录

5.常用的基本命令 

5.1 查看暂存区和工作区修改的状态(status)

git status

5.2 将修改过后的文件添加到暂存区(add)

#单个文件

git add  文件名

#多个文件

git add .

5.3 将暂存区内容提交到本地仓库(commit) 

git commit -m '注释内容'

5.4 查看提交日志(log)

git log [option]     (若之前配置过git-log命令,可以直接使用,就不用手动写这些选项)

  • options

--all 显示所有分支

--pretty=oneline 将提交信息显示为一行

--abbrev-commit 使得输出的commitId更简短

--graph 以图的形式显示

5.5 版本回退(reset)

当弄错了,可以通过reset实现版本的切换,commitID 可以使用 git-log 或 git log 指令查看 

git reset --hard commitID

当你版本回退之后,你看不到后面的提交记录。那如何查看你执行回退之前的提交记录? 

git reflog 

5.6 添加文件至忽略列表 

一般有些文件我们不想提交,比如说生成的日志文件等等,那么我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:

# --------------------------
# 编辑器/IDE
# --------------------------
# VS Code
.vscode/       # VS Code 工作区配置
!.vscode/settings.json  # 例外:允许提交共享的 settings.json# IntelliJ
.idea/         # JetBrains IDE 配置目录
*.iml          # 项目模块文件# Vim
*.swp          # Vim 交换文件
*.swo# --------------------------
# 日志/编译产物
# --------------------------
logs/          # 日志目录(所有日志文件)
*.log          # 所有后缀为 .log 的文件
dist/          # 前端项目构建目录
build/         # 编译产物目录# --------------------------
# 测试相关
# --------------------------
coverage/      # 测试覆盖率报告
.junit_results # 单元测试结果# --------------------------
# 特殊文件
# --------------------------
.env           # 环境变量文件(永远不要提交!)
secret.key     # 密钥文件
*.bak          # 备份文件

6. 分支 

        几乎所有的版本控制系统都以某种形式支持分支。 使用分支可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。下面示例让你更好理解分支:

从 M2 版本开始分支,最后将 M3 和 F2 进行合并,成为了 M4 版本

6.1 查看所有分支(branch)

git branch 

6.2 创建并切换到分支(不要-b,就是只创建) 

 git checkout -b 分支名

6.3 合并分支(merge) 

#将其他分支合并到当前分支

git merge 其他分支名

6.4 删除分支

 不能删除当前分支,只能删除其他分支

git branch -d b1 删除分支时,需要做各种检查

git branch -D b1 不做任何检查,强制删除

6.5 解决冲突

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:

1. 处理文件中冲突的地方

2. 将解决完冲突的文件加入暂存区(add)

3. 提交到仓库(commit)

示例如下:

7. 远程仓库

7.1 注册码云

由于访问国外的GitHub比较慢,我们选择国内的Gitee作为远程仓库。

码云地址:Gitee - 基于 Git 的代码托管和研发协作平台

7.2 创建远程仓库 

 

7.3 配置SSH公钥

1.在GitBash用下面命令生成公钥,不断回车(如果公钥已经存在,则自动覆盖)

ssh-keygen -t rsa 

 

2. 

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

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

相关文章

Vue:添加响应式数据

Vue:添加响应式数据 1. 什么是响应式? 修改 data 后,页面自动改变/刷新,这就是响应式。就像我们在使用 Excel 的时候,修改一个单元格中的数据,其它单元格的数据会联动更新,这也是响应式。在前…

算法刷题记录——LeetCode篇(10) [第901~1000题](持续更新)

(优先整理热门100及面试150,不定期持续更新,欢迎关注) 994. 腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每…

Secs/Gem第二讲 (基于secs4net项目的ChatGpt介绍)

好的,我们正式进入: 第二讲:深入 SECS4NET 项目结构——主机程序是怎么搭起来的? 关键词:项目结构、类图、通信类、事件处理、连接生命周期、异步机制 本讲目的 我们从源码入手,一步步搞懂: S…

压测实战 | 微信小程序商城 “双 11” 的压测实践

背景 某全球知名珠宝品牌,始终以创新驱动零售变革。随着全渠道战略的深化,其小程序官方商城逐渐成为品牌私域流量的核心阵地,不仅承载了线上销售、会员运营等功能,同时还与其内部系统打通,如会员管理系统、人力资源系…

垃圾分类--环境配置

写在前面: 如果你们打这届比赛时,还有我们所保留的内存卡,那么插上即可运行(因为内存卡里我们已经配置好所有的环境) 本文提供两种环境的配置 一种是基于yolov8:YOLOv8 - Ultralytics YOLO Docshttps://d…

工具(十二):Java导出MySQL数据库表结构信息到excel

一、背景 遇到需求&#xff1a;将指定数据库表设计&#xff0c;统一导出到一个Excel中&#xff0c;存档查看。 如果一个一个弄&#xff0c;很复杂&#xff0c;耗时长。 二、写一个工具导出下 废话少絮&#xff0c;上码&#xff1a; 2.1 pom导入 <dependency><grou…

Postman 新手入门指南:从零开始掌握 API 测试

Postman 新手入门指南&#xff1a;从零开始掌握 API 测试 一、Postman 是什么&#xff1f; Postman 是一款功能强大的 API 开发与测试工具&#xff0c;支持 HTTP 请求调试、自动化测试、团队协作等功能。无论是开发人员还是测试工程师&#xff0c;都可以用它快速验证接口的正确…

运维工具推荐 -- 宝塔面板:一键部署服务器

标题&#xff1a;宝塔面板&#xff1a;一键部署服务器&#xff0c;轻松管理你的云端世界 引言 在数字化时代&#xff0c;服务器管理对于个人开发者、中小企业或站长来说既是机遇也是挑战。手动配置服务器环境耗时费力&#xff0c;而 宝塔面板 作为一款 免费开源、功能全面 的服…

【软件工程】03_软件需求分析

3.1 系统分析 1. 系统分析概述 系统分析是一组统称为计算机系统工程的活动。它着眼于所有的系统元素,而非仅仅局限于软件。系统分析主要探索软件项目的目标、市场预期、主要的技术指标等,其目的在于帮助决策者做出是否进行软件项目立项的决定。 2. 可行性分析(Feasibility …

WD5202L超低成本 Buck 电源芯片的特性与应用电路解析, 将市电转换为 5V 电压

WD5202L&#xff1a;超低成本 Buck 电源芯片的特性与应用电路解析 在现代电子设备的小型化、低成本化趋势下&#xff0c;对电源管理芯片的性能、成本和尺寸提出了严苛要求。WD5202L 作为一款超低成本的 Buck 电源芯片&#xff0c;凭借其独特的特性&#xff0c;在众多应用场景中…

UART转AHB模块ModelSim仿真

一、简介 UART转AHB模块用于实现一种简单的通过上位机控制FPGA内部寄存器的方式。上位机通过串口助手发送读写寄存器的指令&#xff0c;UART转AHB模块接收指令后解析出地址&#xff0c;命令&#xff0c;数据信息&#xff0c;然后转成AHB总线格式输出。这时UART转AHB模块相当于A…

Qt5.15.2实现Qt for WebAssembly与示例

目录 1.什么是Qt for WebAssembly&#xff1f; 1.1 什么是 WebAssembly&#xff1f; 1.2 WebAssembly 的优势 1.3 什么是 Qt for WebAssembly&#xff1f; 1.4 Qt for WebAssembly 的特点 1.5 编译过程 1.6 运行时环境 注意&#xff01;&#xff01;&#xff01;注意&am…

AGI大模型(8):提示词的安全与防护

1 前言 著名的「奶奶漏洞」&#xff0c;⽤套路把 AI 绕懵。 2 常⻅的提示词攻击技术 2.1 同类型⽬标劫持 同类⽬标劫持攻击&#xff0c;特别是在同类型任务的背景下&#xff0c;涉及到攻击者通过⾮法⼿段控制模型&#xff0c;并迫使其执行与原始任务性质相同但⽬标不同的操作…

使用redis客户端中对于json数据格式的存储和读取

代码背景&#xff1a; 现在有一个json格式的数据&#xff0c;但是由于redis客户端上面没办法直接创建/导入json的数据格式。 故考虑现在redis客户端上先存储一个名为"old_order"的string类型的的源数据。 思路&#xff1a; 由于直接使用redisTemplate获取自动导入…

专题三搜索插入位置

1.题目 题目分析&#xff1a; 给一个目标值&#xff0c;然后要在排序的整数数组中&#xff0c;找到跟目标值一样的&#xff0c;如果没有就把这个值插入进去&#xff0c;然后返回插入后的下标。 2.算法原理 根据题目的时间复杂度可以知道要用二分&#xff0c;开始划分区域&…

Redis监控:从睁眼瞎到千里眼的进化史

各位在Redis迷雾中摸黑的探险家们&#xff01;今天我们要给Redis装上"天眼系统"——从连自己内存爆了都不知道的睁眼瞎&#xff0c;进化到连每秒哪个键被摸了几次都门儿清的监控狂魔&#xff01;准备好迎接《Redisの楚门世界》了吗&#xff1f;&#x1f441;️ 第一幕…

双缓冲机制(含原理、优势、实现方式、应用场景)

双缓冲机制 一、双缓冲机制的原理二、双缓冲的典型应用场景三、双缓冲的优势四、双缓冲的实现方式1. 硬件级双缓冲2. 软件级双缓冲3. 性能提升对比 五、双缓冲的挑战与解决方案六、总结 双缓冲机制是一种通过使用两个缓冲区&#xff08;Buffer A 和 Buffer B&#xff09;来优化…

Linux 进程的创建、终止、等待与程序替换函数 保姆级讲解

目录 一、 进程创建 fork函数 二、进程的终止&#xff1a; 1. 想明白&#xff1a;终止是在做什么&#xff1f; 2.进程终止的3种情况&#xff1f; a.退出码是什么&#xff1f;存在原因&#xff1f;为什么int main&#xff08;&#xff09;return 0? b.第三种进程终止的情况…

深入了解Linux —— git三板斧

版本控制器git 为了我们方便管理不同版本的文件&#xff0c;就有了版本控制器&#xff1b; 所谓的版本控制器&#xff0c;就是能够了解到一个文件的历史记录&#xff08;修改记录&#xff09;&#xff1b;简单来说就是记录每一次的改动和版本迭代的一个管理系统&#xff0c;同…

STM32---FreeRTOS事件标志组

一、简介 事件标志位&#xff1a;用一个位&#xff0c;来表示事件是否发生 事件标志组&#xff1a;一组事件标志位的集合&#xff0c;可以简单的理解时间标志组&#xff0c;就是一个整体。 事件标志租的特点&#xff1a; 它的每一个位表示一个时间&#xff08;高8位不算&…