当前位置: 首页 > news >正文

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 等。

相关文章:

git的使用(简洁版)

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

使用命令行创建 Maven 项目

本指南将引导您通过命令行创建一个简单的 Maven 项目。本教程假设您已经在您的机器上安装了 Maven 和 JDK 21。 第一步:验证 Maven 和 Java 安装 在开始之前,我们需要验证 Maven 和 Java 是否已正确安装在您的系统上。 验证 Maven 安装 打开命令行终…...

JVM_栈详解一

1、栈的存储单位 **栈中存储什么?**, 每个线程都有自己的栈,栈中的数据都是以栈帧(Stack Frame)的格式存在。在这个线程上正在执行的每个方法都各自对应一个栈帧(Stack Frame)。 栈帧是一个内存…...

Linux 金仓数据库安装和使用

文章目录 Linux 金仓数据库安装和简单使用 一、下载二、安装三、启动法1. 通用启动方式法2. 系统服务启动方式 四、测试五、DB管理工具1. 启动DB管理工具2. DB管理工具的常用功能 六、卸载 Linux 金仓数据库安装和简单使用 一、下载 打开官网 https://www.kingbase.com.cn/xzz…...

STM32笔记(串口IAP升级)

一、IAP简介 IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 通常实…...

C++网络编程:select IO多路复用及TCP服务器开发

C网络编程:使用select实现IO多路复用 一、什么是 IO 多路复用?二、IO多路复用器 select三、相关接口3.1、fd_set 结构体3.2、宏和函数 四、select 实现 TCP 服务器五、总结 一、什么是 IO 多路复用? 在网络编程中,最容易想到的并…...

部署 L2JMobius 天堂2芙蕾雅版本

首先下载所需要的服务器端 “L2J_Mobius.zip” 和芙蕾雅客户端(三个压缩文件), 我的网盘下载:https://pan.baidu.com/s/1XdlcCFPvXnzfwFoVK7Sn7Q?pwdavd4 所有文件都在“芙蕾雅”目录下,也可以加入企鹅交流裙 87470…...

C#开发合集

用C#轻松搞定m3u8视频下载与合并 嘿,程序员们!今天咱们来聊聊如何用C#写个小程序,轻松下载和合并m3u8视频文件。没错,就是那种分段的流媒体视频。准备好了吗?让我们开始吧! 准备工作 在动手之前&#xf…...

鸿蒙面试 --- 性能优化

性能优化可以从三个方面入手 感知流畅、渲染性能、运行性能 感知流畅 在应用开发中,动画可以为用户界面增添生动、流畅的交互效果,提升用户对应用的好感度。然而,滥用动画也会导致应用性能下降,消耗过多的系统资源,…...

React的基础知识:Context

1. Context 在 React 中,Context 提供了一种通过组件树传递数据的方式,无需手动在每个层级传递 props。这在处理一些全局应用状态时非常有用,比如用户认证、主题、语言偏好等。 如何使用 Context 创建 Context:首先,…...

微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)

通过bdf号查看 -s (bus) lspci -s 03:00.0通过vendor id或者device id等设备查看 -d (device) lspci -d 15b3: #这里是vendor号,所以在前面 lspci -d :1021 #这里是设备号,所以要:在前vendorid和deviceid…...

【Kubernetes 集群核心概念:Pod】pod生命周期介绍【五】

5.1 Pod生命周期 Pod的生命周期指的是从Pod创建到终止的整个过程。它分为以下两种常见情况: 长期运行Pod: 例如运行HTTP服务的Pod,它在正常情况下会一直运行,但可以手动删除或终止。短期运行Pod: 例如执行计算任务的…...

c++的虚继承说明、案例、代码

虚继承的基本概念 在 C 中,虚继承主要用于解决多继承时可能出现的菱形继承问题。菱形继承是指一个类有两个(或更多)子类,而这两个子类又同时继承自一个共同的基类,当这些子类又被另一个类继承时,就形成了菱…...

小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你

说在前面 之前我们体验过妙享中心,里面就有互联互通的全部能力,现在有了小米电脑管家,老款的笔记本竟然用不了,也可以理解,毕竟老款笔记本做系统研发的时候没有预留适配的文件补丁,至于其他品牌的winPC小米…...

介绍SSD硬盘

SSD硬盘(固态硬盘,Solid State Drive)是一种利用闪存技术存储数据的存储设备,与传统的机械硬盘(HDD)不同,SSD没有任何活动部件,因此其性能和耐用性较为优越。以下是SSD硬盘的一些主要…...

CMAKE常用命令详解

NDK List基本用法 Get–获取列表中指定索引的元素 list(Get list_name index output_var)解释 list_name: 要操作集合的名称index: 要取得的元素下标output_var: 保存从集合中取得元素的结果 栗子 list(GET mylist 0 first_element) # 获取第一个元素APPEND–在列表末尾…...

Vue3的通灵之术Teleport

前言 近期Vue3更新了一些新的内容&#xff0c;我都还没有一个一个仔细去看&#xff0c;但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。 官方对 Teleport 的解释是&#xff1a;<Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传…...

ue5第三人称闯关游戏学习(一)

视频资料38 - Compilers and Editors_哔哩哔哩_bilibili 上一个第一人称射击项目做完 接下来要更深入学习。 引入资产与C来创建第三人称闯关游戏 这次要引入的资产有两个分别是 Unreal Learning Kit&#xff1a;Game和stylized character kit: casual 01 不过有个比较麻…...

IIC 随机写+多次写 可以控制写几次

verilog module icc_tx#(parameter SIZE 2 , //用来控制写多少次 比如地址是0000 一个地址只能存放8bit数据 超出指针就会到下一个地址0001parameter CLK_DIV 50_000_000 ,parameter SPEED 100_000 ,parameter LED 50 )( input wire c…...

controller中的参数注解@Param @RequestParam和@RequestBody的不同

现在controller中有个方法&#xff1a;&#xff08;LoginUserRequest是一个用户类对象&#xff09; PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...