git的使用(简洁版)

什么是 Git?

Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者能够轻松地管理代码库的变更历史。

Git 的核心概念

  1. Repository(仓库):存储项目代码和版本历史的地方。可以是本地仓库,也可以是远程仓库。
  2. Commit(提交):一个代码变更的记录,包含了作者、时间、描述和变更内容。
  3. Branch(分支):从主分支(通常是 master 或 main)分出来的独立开发线。允许多个开发者同时工作在不同的特性或修复上。
  4. Merge(合并):将一个分支的变更合并到另一个分支的过程。
  5. Clone(克隆):从一个远程仓库复制一份完整的代码库到本地。
  6. Pull(拉取):从远程仓库获取最新的变更并合并到本地分支。
  7. Push(推送):将本地分支的变更推送到远程仓库。
  8. Status(状态):查看当前工作目录中文件的变更状态。

 

  1. 用户A从服务端仓库中获取最新的代码和文件,这个过程称为“Pull”。通过这种方式,他们可以在自己的计算机上获得项目的最新状态。
  2. 在完成一些修改或添加新功能后,用户A会将自己的更改推送到服务端仓库,这就是所谓的“Push”操作。这样做的目的是确保其他团队成员也能看到这些更新。
  3. 同样地,用户B和用户C也会执行类似的流程——先从服务端仓库拉取数据,然后再将他们的工作成果上传回去。

  1. 抓取/克隆 (fetch/clone):首先,你需要从一个远程仓库(Remote)中获取代码。这个操作通常通过git clone命令完成,它会将远程仓库的所有内容复制到你的本地计算机上。

  2. 检出 (checkout):在本地仓库(Repository)中,你可以使用git checkout命令切换到不同的分支或提交记录。这样可以让你在一个安全的环境中测试和修改代码。

  3. 添加 (add):当你对文件进行了更改并希望将其纳入版本控制时,需要使用git add命令将这些文件添加到暂存区(Index)。这是提交前的一个必要步骤。

  4. 提交 (commit):接下来是执行git commit命令来正式保存你所做的所有改动。此时,Git会创建一个新的快照,并附带一条描述此次变更的信息。

  5. 拉取 (pull):为了确保你的本地副本是最新的,可以通过运行git pull命令来合并任何来自远程仓库的新提交。此操作相当于先执行git fetch以下载最新的数据,然后用git merge将它们整合进当前分支。

  6. 推送 (push):最后一步是使用git push命令将你在本地做出的修改推送到远程服务器上。这样其他团队成员就可以看到并使用你的更新了。

Git 快速入门

1. 安装 Git
  • Windows: 下载并安装 Git for Windows。
  • macOS: 使用 Homebrew 安装,brew install git
  • Linux: 使用包管理器安装,例如在 Ubuntu 上使用 sudo apt-get install git
2. 配置 Git

在开始使用 Git 之前,你需要配置你的用户名和邮箱地址,这些信息将会出现在你的提交记录中。

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

3. 创建新仓库

你可以通过两种方式创建一个新的 Git 仓库:

创建本地仓库的方法有两种:

  • 一种是创建全新的仓库:git init,会在当前目录初始化创建仓库。
  • 另一种是克隆远程仓库:git clone [url]
  • 从零开始创建一个新的仓库

    # 初始化一个新的 Git 仓库
    git init my-project
    cd my-project
    
  • 克隆一个已有的远程仓库

    git clone https://github.com/username/my-project.git
    cd my-project
    

创建完多出了一个被隐藏的.git目录,这就是本地仓库Git的工作场所。

4. 添加文件

可以简单理解为,git add命令就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到仓库。

# 创建一个新文件
echo "Hello, World!" > README.md

# 将文件添加到暂存区
git add README.md

# 查看状态
git status

修改文件“R.md”,未暂存:

执行git add .暂存:

5. 提交变更

当你完成了一些工作,可以通过创建一个提交(Commit)来记录这些变更。

# 提交变更
git commit -m "Initial commit"

提交时,-m 参数后面跟随的是提交信息,用于描述这次变更的内容。

6. 查看提交历史

你可以使用 git log 命令查看仓库的提交历史。

git log

7. 创建分支

Git 的分支功能非常强大,允许你在不影响主分支的情况下进行开发。

# 创建并切换到新分支
git branch my-feature
git checkout my-feature

或者使用一行命令:

git checkout -b my-feature

8. 合并分支

当你在分支上完成了开发工作,可以将该分支的变更合并到主分支。

# 切换回主分支
git checkout main

# 合并 my-feature 分支到 main 分支
git merge my-feature

9. 删除分支

当你不再需要某个分支时,可以将其删除。

git branch -d my-feature

10. 远程仓库操作

Git 支持与远程仓库交互,例如 GitHub、GitLab 等。

  • 添加远程仓库

    git remote add origin https://github.com/username/my-project.git
    
  • 推送本地分支到远程仓库

    git push -u origin main
    

    -u 参数表示将本地分支与远程分支关联,这样以后可以直接使用 git push 而不需要指定远程分支。

  • 从远程仓库拉取更新

    git pull origin main
    

常用 Git 命令

  • git init: 初始化一个新仓库。
  • git clone [url]: 克隆一个远程仓库到本地。
  • git add [file]: 将文件添加到暂存区。
  • git commit -m "message": 提交暂存区的变更。
  • git status: 查看工作目录的状态。
  • git log: 查看提交历史。
  • git branch: 查看分支。
  • git checkout [branch]: 切换分支。
  • git merge [branch]: 合并指定分支到当前分支。
  • git push [remote] [branch]: 推送变更到远程仓库。
  • git pull [remote] [branch]: 从远程仓库拉取并合并变更。

更多 Git 功能

  • git diff: 查看工作目录和暂存区之间的差异。
  • git stash: 临时保存当前工作目录的变更,便于切换分支或处理紧急任务。
  • git rebase: 将一个分支的变更应用到另一个分支上,通常用于保持提交历史的整洁。
  • git tag: 为特定的提交打上标签,通常用于标记发布版本。

总结

Git 是一个强大的工具,通过掌握这些基本的命令,你可以开始使用 Git 管理你的代码。随着使用的深入,你还可以学习更多高级的 Git 功能,如 rebasestashtag 等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用于高吞吐量和低延迟的 JVM 性能调优

Java 虚拟机 (JVM) 调优是调整默认参数以满足我们的应用程序需求的过程。这包括通过选择合适的垃圾回收器来使用优化版本的 getter 来调整堆的大小等简单调整。 了解 Java 虚拟机 (JVM) 什么是 JVM? Java 虚拟机 &…

django authentication 登录注册

文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言 之前,写了django制作简易登录系统,这次利用django内置的authentication功能实现注册、登录 提示&#xff…

Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)

我们在做数据之前要知道几个问题 1、在代码层面怎么来数据驱动 2、yaml文件是什么 3、怎么用yaml文件实现对应的数据驱动 我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p…

WaveForms™ SDK 参考手册(翻译笔记与总结)

概述 WaveForms 提供了一个接口,允许用户与 Digilent Analog Design 硬件进行交互,例如 Analog DiscoveryTM、Analog Discovery 2TM、Analog Discovery ProTM、Digital DiscoveryTM、Discovery Power SupplyTM 和 Electronics ExplorerTM。虽然 WaveForm…

Python基础学习-12匿名函数lambda和map、filter

目录 1、匿名函数: lambda 2、Lambda的参数类型 3、map、 filter 4、本节总结 1、匿名函数: lambda 1)语法: lambda arg1, arg2, …, argN : expression using arg 2) lambda是一个表达式,而不是一个语…

pyqt5+yolo模型+多线程

界面开发 开发主窗口界面 from PyQt5 import QtWidgets from PyQt5 import QtCore,QtGui import sysclass MainWindow(QtWidgets.QMainWindow):def __init__(self):super().__init__()self.initUI()self.toolbar()# 创建菜单栏def initUI(self):menubar self.menuBar()file_m…

交通流量预测:基于交通流量数据建立模型

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

[Java]微服务配置管理

介绍 代码拆分为微服务后, 每个服务都有自己的配置文件, 而这些配置文件中有很多重复的配置, 并且配置变化后需要重启服务, 才能生效, 这样就会影响开发体验和效率 配置管理服务可以帮助我们集中管理公共的配置, 并且nacos就可以实现配置管理服务 配置共享 我们可以把微服务共…

【C++】入门【三】

本节目标 一、类的6个默认成员函数 二、 构造函数 三、析构函数 四、拷贝构造函数 五、赋值运算符重载 六、const成员函数 七、取地址及const取地址操作符重载 一、类的6个默认成员函数 如果类里一个成员都没有,简称空类空类中真的什么都没有吗?并不不是…

D78【 python 接口自动化学习】- python基础之HTTP

day78 pycharm创建项目并进行接口请求 学习日期:20241124 学习目标:http定义及实战 -- pycharm创建项目并进行接口请求 学习笔记: 安装requests 安装方式:pip/pip3 install requests 官网教程:Requests: HTTP fo…

UE5 实现组合键触发事件的方法

因为工作原因。 需要用大括号{和}来触发事件 但是在蓝图中搜了一下,发现键盘事件里根本就没有{}这两个键。 花费了一下午,终于找到解决的方法了,也就是增强输入的弦操作 首先创建一个项目 纯蓝图或者C都可行 进入到内容浏览器的默认页面 …

rabbitmq原理及命令

目录 一、RabbitMQ原理1、交换机(Exchange)fanoutdirecttopicheaders(很少用到) 2、队列Queue3、Virtual Hosts4、基础对象 二、RabbitMQ的一些基本操作:1、用户管理2、用户角色3、vhost4、开启web管理接口5、批量删除队列 一、Ra…

硬件基础22 反馈放大电路

目录 一、反馈的基本概念与分类 1、什么是反馈 2、直流反馈与交流反馈 3、正反馈与负反馈 4、串联反馈与并联反馈 5、电压反馈与电流反馈 二、负反馈四种组态 1、电压串联负反馈放大电路 2、电压并联负反馈放大电路 3、电流串联负反馈放大电路 4、电流并联负反馈放大…

新型大语言模型的预训练与后训练范式,苹果的AFM基础语言模型

前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内的完整…

网络知识1-TCP/IP模型

从用户端到服务端,tcp/ip模型可分为应用层、传输层、网络层、网络接口层 以下使用寄快递为例进行解释 应用层职责: 只关注与为用户提供应用功能,如HTTP、FTP、telnet、DNS、SMTP等 ,应用层的职责就像我们寄快递时将快递给快递员…

【计算机视觉】图像基本操作

1. 数字图像表示 一幅尺寸为MN的图像可以用矩阵表示,每个矩阵元素代表一个像素,元素的值代表这个位置图像的亮度;其中,彩色图像使用3维矩阵MN3表示;对于图像显示来说,一般使用无符号8位整数来表示图像亮度&…

爬虫与反爬-旋转验证码突破方案(知名短视频、TK海外版 及 某东等等)

概述:文本对旋转验证码进行了突破及讲述了实现原理,代码使用纯算法 OpenCV,使用代价较小同时不用安装一大堆AI训练相关的模组,方便且能够快速上手 当前亲自验证了能够支持的网站:国内知名短视频平台、海外版 以及 某东…

STM32C011开发(1)----开发板测试

STM32C011开发----1.开发板测试 概述硬件准备视频教学样品申请源码下载参考程序生成STM32CUBEMX串口配置LED配置堆栈设置串口重定向主循环演示 概述 STM32C011F4P6-TSSOP20 评估套件可以使用户能够无缝评估 STM32C0 系列TSSOP20 封装的微控制器功能,基于 ARM Corte…

达梦数据库文件故障的恢复方法

目录 1、概述 1.1 概述 1.2 环境介绍 2、使用备份集的恢复方法 2.1 实验准备 2.2 误删除“用户表空间数据文件” 2.3 误删除SYSTEM.DBF 2.4 误删除ROLL.DBF 2.5 REDO日志文件 3、无备份集的恢复方法 3.1 误删除“表空间数据文件” 3.2误删除控制文件 3.3 误删除RO…

JVM:即时编译器,C2 Compiler,堆外内存排查

1,即时编译器 1.1,基本概念 常见的编译型语言如C,通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译,处处运行”的特性,把编译的过程分成两部分,首先它会先由javac编译成通用的…