Git快速入门(图文教程)

2023-05-16

前言:

Git是目前最流行的版本控制工具之一,它可以帮助我们更好地管理代码,协作开发,以及保证代码的安全性。在学习Git之前,我们需要先了解几个概念:

  • workspace:工作区,即我们正在进行修改的文件夹。
  • staging area:暂存区/缓存区,用来暂时存放我们修改的文件,等待提交到版本库。
  • local repository:本地仓库,存放我们的代码历史版本。
  • remote repository:远程仓库,存放团队共享的代码历史版本。

正文: 

一、Git的安装和配置

在使用Git之前,需要先安装Git客户端。Git客户端可以在访问Git官网下载,也可以使用包管理器进行安装。安装完成后,需要对Git进行一些基本配置,包括用户名和邮箱等信息。可以使用以下命令进行配置:

$ git config --global user.name "Your Name"
$ git config --global user.email "your_email@example.com"

二、Git基本命令

Git的基本命令包括add、commit、push、pull、clone等,具体用法如下:

0.初始化新的Git仓库:

$ git init

这个命令用来初始化一个新的Git仓库,可以在当前目录下创建一个.git子目录,用来存储Git相关的文件。

以Windows为例:在您欲创建Git仓库的文件夹下右键选中Git Bash Here即可打开Git命令端 

1.添加文件到缓存区

$ git add filename

在这里我新建test.txt,同时将当前目录下的所有文件添加到暂存区。 

2.持久化和版本控制

$ git commit -m "commit message"

-m "commit message"最好在提交时就写上 

git log:即可查看提交历史记录。

git reflog:查看HEAD指针的移动历史(包括被回滚的版本)

可以发现:“2ed3c04”就是commit时一串数字的前7位地址 

 我们对test.txt做第一次修改并添加到暂存区,最后提交给本地仓库。test.txt的内容如图:

在此,有必要更深地了解工作区,暂存区,本地仓库和远程仓库的概念:

工作区就是我们平时存放代码的地方,暂存区临时存放文件的变动,本地仓库持久化了您的文件,远程仓库位于托管代码的服务器上。 

因此,git的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

例如: 

新建test.txt文件--->Untracked

使用git add命令将test.txt加入到暂存区--->Staged

(如果想撤销对工作区的修改,git restore test.txt:将test.txt尚未加入暂存区的修改全部撤销)

使用git commit命令将暂存区的test.txt提交到本地仓库--->Unmodified

如果对Unmodified状态的文件(test.txt)进行修改---> modified

如果对Unmodified状态的文件进行remove操作--->Untracked

在持久化(commit)test.txt后,当我在工作区内修改了文件内容(添加了一行“333”),此时test.txt的状态就会从Unmodified变为Modified。

遇到了一个问题:"333"的这次修改效果并不好,我们需要回滚到以前的版本:

git reset --hard HEAD^     回滚到上一个版本
git reset --hard HEAD^^    回滚到上上个版本
git reset --hard HEAD~10   回滚到前10个版本
git reset --hard 版本号    回滚到某一特定版本

怎么查看版本号?

git log
或
git reflog

 我要切换到第二次提交后的状态,那么可以输入:

git reset --hard cadd784

此时,相当于HEAD指针指向了第二个结点,内容已还原。

3.git log和git reflog的区别:

git log用于显示提交历史,可以显示所有提交过的版本信息,但不包括已经被删除的commit记录和reset的操作。git log主要用于查看项目的提交历史,以便于开发者追踪和分析代码变化。

git reflog则用于显示所有的操作记录,包括提交、回退的操作。git reflog记录了本地仓库中所有分支的移动和修改,即使是已经被删除的分支也会被记录下来。因此,git reflog常用于恢复本地的错误操作,例如找回误删的分支或回退到之前的版本号等。

4.分支操作

Git操作可视化网站:Learn Git Branching

分支操作一般用于整个团队的协同,个人开发一般不需要分支操作

  1. 创建分支:使用git branch <branchname>命令创建一个新的分支:

    git branch hot-fix
    

    该命令会在当前所在的提交上创建一个名为hot-fix的新分支

  2. 查看分支:使用git branch命令查看所有分支

  3. 切换分支:使用git checkout <branchname>命令切换到指定的分支

  4. 合并分支:使用git merge <branchname>命令将指定分支合并到当前分支。比如:git merge hot-fix在合并之前,需要先切换到需要合并到的分支master,尔后再执行git merge命令。

  5. 删除分支:使用git branch -d <branchname>命令删除指定的分支,例如:git branch -d feature1。如果该分支还有未合并的提交,删除分支时会提示错误信息,可以使用-D选项强制删除。

  6. 合并冲突:在合并分支时,如果出现冲突,需要手动解决冲突后再提交。可以使用git status命令查看冲突文件,然后手动修改文件中的冲突部分,最后使用git add命令将修改后的文件添加到暂存区,再使用git commit命令提交合并结果。

5.远程操作

SSH方法:

将本机SSH公钥(id_rsa.pub)添加到代码托管平台的账户设置(Settings-SSH)内,尔后就可以使用免密登录; 

 推送本地现有仓库到远程仓库:

cd existing_repo
git remote rename origin old-origin
git remote add origin git@Git托管网站/远程仓库名.git
git push -u origin --all
git push -u origin --tags

git push -u origin --all的作用是将本地所有分支推送到远程代码库,并将远程代码库中的分支与本地代码库中的分支关联起来。其中,-u选项表示将远程代码库中的分支设置为本地代码库中对应分支的上游分支(即默认的推送目标),origin表示远程代码库的名称,--all表示推送所有分支。

git push -u origin --tags的作用是将本地所有标签推送到远程代码库中,并将远程代码库中的标签与本地代码库中的标签关联起来。其中,--tags选项表示推送所有标签。

需要注意的是,如果远程代码库中已经存在与本地代码库中同名的分支或标签,那么推送操作可能会失败。此时可以使用git push --force强制推送,但需要谨慎使用,因为这可能会覆盖远程代码库中的修改。另外,在团队协作中,强制推送可能会破坏其他人的工作,因此应该避免在共享的分支上使用强制推送。

$ git push origin branchname
第一次push需要加上 -u , origin 的意思是别名

如图显示创建成功:

如何查看别名?git remote -v

拉取远程仓库的内容到本地:

我们先在代码托管网站向master分支的test.txt添加一行英文:Hello, world!

$ git pull origin branchname

在本地端查看test.txt的内容:

从代码托管平台克隆远程仓库到本地:

git pull和git clone的区别?

git clone的作用是将远程代码库克隆到本地,创建一个新的本地代码库。通常情况下,git clone只需要执行一次,之后就可以在本地代码库中进行修改和提交。

git pull的作用是将远程代码库中的最新代码更新到本地代码库中。

因此,git clone会创建一个新的本地代码库,而git pull会将远程代码库中的更新合并到已有的本地代码库中。同时,git clone只需要执行一次,而git pull可以多次执行,用于保持本地代码库与远程代码库的同步。

假如日常工作的电脑不在身边,可以在新的电脑上使用git clone命令将远程仓库的代码克隆到本地从而继续开展工作。

HTTPS和SSH方式的区别和使用_百度知道 (baidu.com)

後记

如何联系我?wei.haoran@outlook.com

本篇博客简单介绍了Git的基础知识,包括Git的安装、配置、基本命令和常用操作,可以帮助初学者基本入门git。然而,git的知识远远不止于此,需要读者进一步地探索和学习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git快速入门(图文教程) 的相关文章

  • 简单的彩票小程序(双色球含机选及自选)

    话不多说直接上代码 package com import java util public class curriculum public static void main String args 机选 int times 61 100 L
  • IDEA设置JDK版本

    idea更换版本需全更改一致 鼠标点击file gt setting xff0c 进入idea的设置页面settings xff0c 根据截图操作 然后 xff0c 鼠标点击file gt Project Structure 1 7版本 1
  • 3步教会你使用VNC Viewer远程连接控制树莓派桌面(详细)

    目录 1 查询IP地址 1 1 路由器后台查询 1 2 树莓派内查询 2 开启VNC服务 3 打开VNC Viewer进行连接 1 查询IP地址 1 1 路由器后台查询 打开路由器后台 xff0c 我这以腾达为例 xff0c 在浏览器输入
  • 驱动应该怎么学-linux驱动开发第1部分-朱有鹏-专题视频课程

    驱动应该怎么学 linux驱动开发第1部分 4059人已学习 课程介绍 本课程是linux驱动开发的第一个课程 xff0c 主要介绍linux驱动的概念 模块化设计理念 分类 安全性要求 xff0c 后讲解了linux驱动课程的整体学习方法
  • 安装DEV-C++5.11(无捆绑)

    安装网址 或者点这儿直接下载 xff09 DEV C 43 43 https pc qq com detail 16 detail 163136 html https pc qq com detail 16 detail 163136 ht
  • 中国大学慕课第7周测验

    1 单选 1分 写出下面程序的运行结果 include lt stdio h gt void Bin int x if x 2 gt 0 Bin x 2 printf 34 d n 34 x 2 int main Bin 12 return
  • 基于深度强化学习的智能船舶航迹跟踪控制

    基于深度强化学习的智能船舶航迹跟踪控制 人工智能技术与咨询 昨天 本文来自 中国舰船研究 xff0c 作者祝亢等 关注微信公众号 xff1a 人工智能技术与咨询 了解更多咨询 xff01 0 引 言 目前 xff0c 国内外对运载工具的研究
  • 面向区块链的高效物化视图维护和可信查询

    面向区块链的高效物化视图维护和可信查询 人工智能技术与咨询 来源 xff1a 软件学报 xff0c 作者蔡 磊等 摘 要 区块链具有去中心化 不可篡改和可追溯等特性 可应用于金融 物流等诸多行业 由于所有交易数据按照交易时间顺序存储在各个区
  • 基于迁移深度学习的雷达信号分选识别

    基于迁移深度学习的雷达信号分选识别 人工智能技术与咨询 来源 xff1a 软件学报 xff0c 作者王功明等 摘要 针对当前雷达信号分选识别算法普遍存在的低信噪比下识别能力差 特征参数提取困难 分类器模型参数复杂等问题 xff0c 提出了一
  • 基于深度学习的磁环表面缺陷检测算法

    基于深度学习的磁环表面缺陷检测算法 人工智能技术与咨询 来源 xff1a 人工智能与机器人研究 xff0c 作者罗菁等 关键词 缺陷检测 xff1b 深度学习 xff1b 磁环 xff1b YOLOv3 xff1b 摘要 在磁环的生产制造过
  • 基于PX4的地面无人车避障系统及路径规划研究

    基于PX4的地面无人车避障系统及路径规划研究 人工智能技术与咨询 来源 xff1a 动力系统与控制 xff0c 作者姜琼阁等 关键词 地面无人车 xff1b 避障 xff1b PX4 xff1b 摘要 地面无人车避障及路径规划是指 xff0
  • 基于图像的数据增强方法发展现状综述

    基于图像的数据增强方法发展现状综述 人工智能技术与咨询 2022 03 22 20 57 点击蓝字 关注我们 来源 xff1a 计算机科学与应用 xff0c 作者冯晓硕等 关键词 数据增强 xff1b 图像数据集 xff1b 图像处理 xf
  • 基于改进SSD算法的小目标检测与应用

    人工智能技术与咨询 点击蓝字 关注我们 来源 xff1a 计算机科学与应用 xff0c 作者刘洋等 关键词 SSD xff1b 深度学习 xff1b 小目标检测 摘要 xff1a 摘要 针对通用目标检测方法在复杂环境下检测小目标时效果不佳
  • 组网雷达融合处理组件化设计与仿真

    人工智能技术与咨询 点击蓝色 关注我们 关键词 xff1a 组网雷达 点迹融合 航迹融合 组件化设计 仿真 摘要 数据融合处理是多雷达组网的核心 以典型防空雷达网为参考对象 xff0c 采用组件化设计方式 xff0c 将组网数据融合处理过程
  • 字符设备驱动基础-linux驱动开发第2部分-朱有鹏-专题视频课程

    字符设备驱动基础 linux驱动开发第2部分 5673人已学习 课程介绍 本课程是linux驱动开发的第2个课程 xff0c 从零开始带领大家逐渐熟悉内核模块 xff0c 并且一步步写出一个字符设备驱动程序来控制LED等 本课程对驱动的学习
  • 人工智能 知识图谱

    关于举办 2022年数字信息化培训项目系列 知识图谱Knowledge Graph构建与应用研修班线上课程的通知 各有关单位 一 培训目标 本次课程安排紧密结合理论与实践 xff0c 深入浅出 xff0c 循序渐进 从基本概念讲起 xff0
  • 深度学习(Deep Learning)

    知识关键点 1 人工智能 深度学习的发展历程 2 深度学习框架 3 神经网络训练方法 4 卷积神经网络 xff0c 卷积核 池化 通道 激活函数 5 循环神经网络 xff0c 长短时记忆 LSTM 门控循环单元 GRU 6 参数初始化方法
  • 基于深度学习的机器人目标识别和跟踪

    如今 xff0c 深度学习算法的发展越来越迅速 xff0c 并且在图像处理以及目标对象识别方面已经得到了较为显著的突破 xff0c 无论是对检测对象的类型判断 xff0c 亦或者对检测对象所处方位的检测 xff0c 深度学习算法都取得了远超
  • 散列表与探测法

    动态查找的时候 如果用查找树同时对俩个变量名 字符串 进行查找 会导致效率不高的问题 引入散列的思想 把字符串变成数字 使得对字符串的比较变成对数字的比较 查找方式时间复杂度顺序查找O n 二分查找 静态查找 O log2N 二叉搜索树O
  • Springboot实现VNC的反向代理

    背景 用户需要通过前端HTML页面的noVNC xff08 noVNC是什么 xff1f xff09 客户端连接底层VNC Server服务端 xff0c 为了防止VNC Server的IP暴露 xff0c 因此需要做一层代理 正常情况下使

随机推荐

  • Visual Studio Code 的C++环境配置和调试

    目录 前言 xff1a 1 为什么要写这篇文章 xff1f 2 为什么选择VS Code xff1f 3 如何联系我 xff1f 简而言之 xff0c VS Code免费 43 快速 43 好用 43 潜力无穷 xff1b 一 安装VS C
  • 浅析向量(Vector),迭代器(Iterator)和数组(Array)

    目录 前言 Foreword 向量 Vector 1 何为向量 xff1f 2 如何初始化Vector向量 xff1f 3 向量的基本操作 xff1a 4 Range based For Statement 5 向量的插入操作 xff1a
  • 《数字电路分析》学习札记

    目录 前言 xff1a Chapter 1 数字逻辑基础 进制 xff1a 进制间转换方法 xff1a BCD xff1a 余3码 xff1a 余3循环码 xff1a 格雷码 xff08 循环码 xff09 xff1a 二进制数 格雷码 x
  • Ubuntu 22.04 双系统安装和卸载

    前言 xff1a 一 为什么选择Ubuntu系统 xff1f 1 免费且提供长期系统维护支持 xff1b 2 是主流的Linux服务器发行版 xff1b 3 强大的Shell xff1b 4 简洁好看的图形化UI界面 xff1b 5 丰富的
  • CSS-Div居中方法(Position方法)

    目录 代码展示 xff1a 实际效果 xff1a 具体分析 xff1a 如何联系我 xff1f 代码展示 xff1a lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt
  • 字符设备驱动-linux驱动开发第3部分-朱有鹏-专题视频课程

    字符设备驱动 linux驱动开发第3部分 4561人已学习 课程介绍 本课程是linux驱动开发的第3个课程 xff0c 接上部分继续讲解字符设备驱动的开发要点 xff0c 重点是相关的内核源代码的解析和一些真正驱动惯用的编程手法的引入 本
  • C++测试代码运行时间

    如果我们想直观地看出朴素算法和其他算法对程序运行时间的影响 xff0c 那么就可以采取以下方式 方法1 xff1a 基于头文件ctime和函数clock 的实现 代码1 xff1a include lt iostream gt includ
  • VMware虚拟机安装CentOS 7

    目录 1 VMware软件安装 2 CentOS 7 镜像下载 3 VMware安装CentOS 1 安装前内容设置 xff1a 2 安装中操作步骤 3 安装后语言设置 4 将图形化界面切换为命令符界面 如何联系我 xff1f wei ha
  • 解决Windows开机后无启动项的问题

    前言 为什么会出现这个问题 xff1f 此前PC上装有Windows 43 Ubuntu双系统 xff0c 由于又配置了虚拟机下的Centos xff0c 我把Ubuntu系统卸载了 没想到手滑删除了Windows的引导项 如图所示 xff
  • KMP算法图文详解

    简介 xff1a Knuth Morris Pratt xff08 KMP算法or字符串查找算法 xff09 可在一较长串S内查找一子串P出现的位置 xff0c KMP算法利用最长公共前后缀的特性以避免重新检索先前配对的字符串 xff0c
  • 离散数学期末习题

    前言 xff1a 本文适用于应对HUEL离散数学 期末考试 xff0c 重点整理了HUEL离散数学 期末考试范围内的题型 xff0c 既可以应对HUEL离散数学期末考试 xff0c 亦可以作为数据结构与算法的预备知识 如何联系我 xff1f
  • VMware Tools在Centos 7环境的安装教程

    前言 xff1a 阅读本文 xff0c 您可以得到 xff1a VMware Tools在Centos7环境下的安装步骤 xff1b 正文 xff1a VMware Tools在Centos7环境下安装步骤 xff1b 1 您需要保持虚拟机
  • 宝塔面板快速部署SSL证书

    前言 xff1a 发现自己的网站不能使用https访问 xff0c 原来是没有为网站部署SSL证书 通过本文 xff0c 您可以一键免费部署SSL证书 xff08 Let 39 s Encrypt xff09 正文 xff1a 1 如图显示
  • 宝塔面板部署WordPress(保姆式教程)

    前言 xff1a 通过本篇文章 xff0c 您可以掌握 xff1a 1 基于宝塔面板的快速建站操作 xff1b 2 一些浅浅的建站知识与技能 xff1b 3 WordPress助您快速建站 xff0c 节省您的时间 xff1b 如何联系我
  • VS 2022 C++ 自定义头文件示例

    前言 xff1a 博主最近刚从VS Code转到VS 2022 xff0c 但发现自定义的方法和VS Code有些不同 xff0c 故出一期VS 2022自定义头文件的博客 xff0c 时间仓促 xff0c 请不吝赐教 如何联系我 xff1
  • 零基础搭建网站(保姆级教程)

    前言 xff1a 本教程不需要任何前置知识 xff0c 零基础教您搭建网站 如何联系我 xff1f wei haoran 64 outlook com 正文 xff1a 搭建网站需要什么 xff1f 1 域名 xff1b 2 服务器 xff
  • 驱动框架入门之LED-linux驱动开发第4部分-朱有鹏-专题视频课程

    驱动框架入门之LED linux驱动开发第4部分 5199人已学习 课程介绍 本课程是linux驱动开发的第4个课程 xff0c 主要内容是驱动框架的引入 通过led驱动框架和gpiolib的这两个框架的详细解释 xff0c 让大家学习内核
  • VSCode远程连接服务器(SSH免密登录)

    前文 连接远程服务器的方式众多 xff0c 本文将介绍基于VS Code的SSH免密登录方法 在开始SSH远程链接以前 xff0c 您需要完成以下步骤 xff1a 1 Windows配置SSH xff1a 1 以Windows平台为例 xf
  • Linux云服务器防止暴力破解(三道SSH安全策略)

    前言 新购入的服务器 xff0c 往往用户名默认为root xff0c ssh默认开放22端口 xff0c 且配置SSH服务时往往同时允许密码和公钥二重登录 然而 xff0c 许多非法服务器运行着暴力破解程序 xff0c 通过访问用户名ro
  • Git快速入门(图文教程)

    前言 xff1a Git是目前最流行的版本控制工具之一 xff0c 它可以帮助我们更好地管理代码 xff0c 协作开发 xff0c 以及保证代码的安全性 在学习Git之前 xff0c 我们需要先了解几个概念 xff1a workspace