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. 获取公钥

cat ~/.ssh/id_rsa.pub 

 

3.添加公钥 

 

 4.验证公钥

 ssh -T git@gitee.com

 

8. 操作远程仓库

8.1 添加远程仓库

#远端名称默认为origin   仓库路径-点"我的",仓库那里切换到SSH可以查看

git remote add 远端名称 仓库路径 

8.2 查看远程仓库 

git remote 

8.3 推送到远程仓库

-f 表示强制覆盖(慎用)

--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系

如果远程分支名和本地分支名称相同,则可以只写本地分支

git push --set-upstream 远程仓库名 本地分支名:远程分支名 

 

查看远程仓库

8.4 本地分支与远程分支的关联关系

git branch -vv

 

8.5 从远程仓库克隆 

仓库路径可在"克隆/下载"处查看   本地目录可省略,会自动生成一个 

git clone 仓库路径 本地目录 

8.6 从远程仓库中抓取和拉取 

#抓取指令就是将仓库里的更新都抓取到本地,不会进行合并

#如果不指定远端名称和分支名,则抓取所有分支

git fetch 远程仓库名 远程分支名

#拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
#如果不指定远端名称和分支名,则抓取所有并更新当前分支

git pull 远程仓库名 远程分支名

 

8.7 解决合并冲突 

打工人one在本地修改代码后优先推送到远程仓库,此时打工人two在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时two晚于one,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支

远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同

9. Vscode使用Git

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

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

相关文章

QT5.15.2加载pdf为QGraphicsScene的背景

5.15.2使用pdf 必须要安装QT源码,可以看到编译器lib目录已经有pdf相关的lib文件,d是debug 1.找到源码目录:D:\soft\QT\5.15.2\Src\qtwebengine\include 复制这两个文件夹到编译器的包含目录中:D:\soft\QT\5.15.2\msvc2019_64\include 2.找…

【H2O2 | 软件开发】前端深拷贝的实现

目录 前言 开篇语 准备工作 正文 概述 JSON方法 递归 其他 结束语 前言 开篇语 本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮助。…

Docker - 切换源 (Linux / macOS)

文章目录 Linux 系统macOS 系统 Linux 系统 修改配置文件:/etc/docker/daemon.json "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com"]验证是否修改成功: docker info重启 …

hcia复习

一、网络设备 1、交换机:(1)提供MAC地址表,转发数据; (2)每个接口是一个独立的冲突域; (3)凡是连在交换机上的所有设备都处于同一广播域(网络&am…

opencv初步学习——图像处理3

这一部分我们将学习opencv中对图像大小进行调整的基本操作,以及掩模操作,我们直接进入正言 一、cv2.resize( )函数 1-1、组成与构造 该函数的作用就算用来帮助我们实现对图像大小的处理,具体的组成与构造如下: cv2.resize(src , …

[LevelDB]关于LevelDB存储架构到底怎么设计的?

本文内容组织形式 LevelDB 存储架构重要特点总体概括LevelDB中内存模型MemTableMemTable的数据结构背景:SkipListSkiplist的数据结构 Skiplist的数据访问细节 SkipList的核心方法Node细节源代码 MemTable的数据加速方式Iterator 的核心方法 MemTable 的读取&写入…

【存储中间件】Redis核心技术与实战(四):Redis高并发高可用(Redis集群 Smart客户端、集群原理)

文章目录 Redis集群Smart客户端smart客户端原理ASK 重定向集群下的Jedis客户端Hash tags 集群原理节点通信通信流程Gossip 消息节点选择 故障转移故障发现主观下线客观下线 故障恢复资格检查准备选举时间发起选举选举投票替换主节点 故障转移时间 集群不可用判定集群读写分离 个…

【接口耗时】⭐️自定义拦截器实现接口耗时统计

💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥 🏆本篇文章阅读大约耗时三分钟。 ⛳️motto:不积跬步、无以千里 📋📋📋本文目录如下:🎁🎁&a…

杨校老师课堂之编程入门与软件安装【图文笔记】

亲爱的同学们,热烈欢迎踏入青少年编程的奇妙世界! 我是你们的授课老师杨校 ,期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中,像手机里的各类 APP、电…

【从零开始】Air780EPM的LuatOS二次开发——OneWire协议调试注意事项!

当涉及到与传感器、执行器等外部设备交互时,OneWire协议的高效调试成为决定项目成败的关键环节。OneWire协议(单总线协议)以其仅需一根数据线即可实现设备通信的极简特性,被广泛应用于温度传感器、身份识别模块等场景。 一、LuatO…

redis数据结构、多路复用、持久化---java

数据结构 Redis 提供了丰富的数据类型,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset&am…

vue3之写一个aichat ----vite.config.js

vite.config.js的CSS配置 postcss-pxtorem 开发响应式网页的时候需要用到postcss-pxtorem amfe-flexible amfe-flexible是由阿里团队开发的一个库,它可以根据设备的屏幕宽度去动态调整HTML根元素()的字体大小,这意味着无论用户使用什么尺寸的设备访问你…

强化学习(赵世钰版)-学习笔记(8.值函数方法)

本章是算法与方法的第四章,是TD算法的拓展,本质上是将状态值与行为值的表征方式,从离散的表格形式,拓展到了连续的函数形式。 表格形式的优点是直观,便于分析,缺点是数据量较大或者连续性状态或者行为空间时…

C++模版(进阶)

文章目录 一、非类型模版参数二、模版的特化2.1 概念2.2 函数模版特化2.2.1 函数模版特化为指针类型注意事项 2.3 类模版特化2.3.1 全特化2.3.2 偏特化(半特化)2.3.3 类模板特化应用示例 三、模版分离编译3.1 什么是分离编译?3.2 模版的分离编译3.3 解决方法! 四、模…

Linux配置yum仓库,服务控制,防火墙

一、yum仓库 1.在安装软件时,首先第一步就是要考虑软件的版本的问题! 2.软件的安装:最安全可靠的方法就是去软件对应的官网上查看安装手册(包括的软件的下载) 红帽系软件安装的常见的3种方式 (1&#x…

布谷直播系统源码开发实战:从架构设计到性能优化

作为山东布谷科技的一名技术研发人员,我参与了多个直播系统平台从0到1的开发和搭建,也见证了直播行业从萌芽到爆发的全过程。今天,我想从研发角度,分享一些直播系统软件开发的经验和心得,希望能对大家有所帮助。 一、 …

实战设计模式之解释器模式

概述 作为一种行为设计模式,解释器模式提供了一种方法来定义语言的文法规则,并通过这些规则解析和处理特定类型的语言句子。简单来说,解释器模式允许我们定义一个代表某种语言中语法规则的对象结构,从而能够根据这些规则理解并处理…

物联网边缘计算网关是什么?

在物联网的浩瀚架构中,边缘计算网关宛如一位坚毅的前沿哨兵,默默守护着数据处理与传输的关键防线,为整个物联网系统的高效运转发挥着不可或缺的作用。 一、边缘计算网关的定义与基本功能 边缘计算网关是一种智能设备,它被部署在…

计算机视觉算法实战——障碍物识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​ ​​​​​​ ​ ​ 1. 引言 计算机视觉是人工智能领域的一个重要分支,旨在通过计算机模拟人类的视觉系统,从…

Win11锁屏后显示“天气、市场、广告”如何取消显示

关闭方法:设置>个性化>锁屏界面>锁屏界面状态>"无"。 方法一:通过“个性化”设置 打开“设置”应用: 点击屏幕左下角的“开始”按钮(Windows 图标)。点击齿轮状的“设置”图标。或者按下 Win I…