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

Git 基本使用

目录

Git 安装与设置

在 Windows上安装 Git

git 的配置

Git 原理

git 的四个区域

git 工作流程

git 文件的状态

Git 操作

创建仓库

免密登录

基本操作

版本回退

本地仓库整理

分支命令

合并分支

解决冲突


Git 安装与设置

在 Windows上安装 Git

在 Windows上使用 Git,可以从 Git 官网直接 下载安装程序,然后按默认选项安装即可。

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

git 的配置
# 设置当前目录下的用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"# 查看配置列表
git config -l

Git 原理

git 的四个区域

本地 3 个区域 + 远程 git 仓库

  • Workspace:工作区,即当前工作目录,存放代码的位置。
  • Stage/Index:暂存区,临时存放改动,事实上是一个文件,保存即将提交的文件列表信息
  • Repository:仓库区(版本库),存放提交的所有版本的数据, HEAD 指向最新的版本。
  • Remote Directory:远程仓库,托管代码的服务器
git 工作流程

  1. 在工作目录中添加、修改文件
  2. 将需要进行版本管理的文件放入暂存区 git add 文件名
  3. 将暂存区域的文件提交到仓库 git commit -m "提交信息"
  4. 本地仓库的修改 push 到远程仓库 git push origin master,如果失败则执行第5步 
  5. 将远程仓库的修改拉取到本地 git pull origin master,修改冲突,回到第3步 
git 文件的状态

文件的各状态转化如图所示:

  • Untracked:未跟踪。文件未入仓库,不参与版本控制。
  • Unmodify:文件已入仓库但未修改,即工作区与仓库中的文件一致。
  • Modified:文件已被修改,即工作区与仓库中的文件不一致。
  • Staged:暂存状态

Git 操作

创建仓库
  • git init:将当前文件夹作为 Git 仓库,并在该文件夹中生成一个 .git目录,该目录包含了资源的所有元数据,不可修改里面的内容。
  • git init --bare:在当前目录生成不带 .git 的项目文件,即把 .git 文件夹的内容直接生成到当前目录
  • git init myProject:新建一个 myProject 文件夹作为 Git 仓库,并在 myProject 文件中新建一个 .git目录
  • git init --bare myProject:新建一个 myProject 文件夹作为 Git 仓库,并把 .git 文件夹的内容直接生成到 myProject 文件中
  • git clone <repo> <directory>:克隆一个仓库到指定目录

git init --bare 创建时不带 .git 文件夹,事实上它不带工作目录,而是作为服务器仓库供各开发者push、pull 数据,实现数据共享和同步,不保存文件,只保存历史提交的版本信息。

免密登录

使用协议 (http, ssh, git等) 来实现远端仓库和本地仓库的交互。

使用 ssh 公钥免密登录 git 服务器

 # 1、本地生成公钥和私钥 ssh-keygen -t rsa​# 2、复制公钥内容到远端 git 服务器# 本地:拷贝本地公钥 id_rsa.pubcat ~/.ssh/id_rsa.pub# 远端:复制到 git 服务器的 authorized_keysvim .ssh/authorized_keys​# 3、远端仓库克隆到本地git clone  <git仓库路径>
基本操作
# 1、暂存,工作区 -> 暂存区
git add <文件名>​
# 2、提交,暂存区 -> 本地仓库,提交到仓库的文件才真正被 git 追踪记录
git commit -m "提交信息"
-a 把当前暂存区里所有的修改(包括删除操作)都提交,未添加到暂存区的内容是不提交​
# 3、推送,本地仓库 -> 远端仓库
git push origin master​
# 拉取合并
git pull origin master
# 查看状态
git status# 对比文件差异
git diff <commitID>​
# 查看日志,显示每次提交的相关信息,包括 commitID、提交作者、提交日期、备注信息
git log [option]
git log --all 显示所有分支
git log --pretty=oneline 将提交信息显示为一行
git log --abbrev-commit 使得输出的commitId更简短
git log --graph 以图的形式显示# 忽略文件
# 目录下创建.gitignore文件,添加文件至忽略列表
版本回退
  • 从工作区回退,工作区 -> null,清空工作区的的修改
    # 从本地仓库或暂存区中检出文件,并且覆盖工作目录的内容
    # 也就是说放弃本地的所有修改,但是工作区新创建的文件不会被删除
    git checkout
  • 从暂存区回退,暂存区 -> 工作区
    git resore -S
  • 从本地仓库回退
    # 使用该 commit 做回滚操作
    git reset commitId / HEAD^
    ​
    # 1、本地仓库 -> 暂存区,暂存区和工作区都不会被改变
    git reset --soft commitId / HEAD^​
    # 2、本地仓库 -> 工作区,暂存区同步到指定的commit,工作区不改变
    git reset --mixed commitId / HEAD^​
    # 3、本地仓库 -> null,修改的内容被清除,暂存区和工作区都同步到指定的提交
    git reset --hard  commitId / HEAD^
  • 从远端仓库回退
     git revert commitIdfix conflictgit commitgit push 
本地仓库整理

注意:修改某个结点导致从该结点往后的所有结点的 commitId 发生变化,会引起其他人冲突,要确保没有人基于你的分支开发。

  • 整理上一次的提交
    git commit -amend
  • 整理多次提交:本地 commit 直接使用 git rebase -i 。 push 到远端的 commit 需要使用 git log 查看 commit id,来确定要修改的区间范围。
     git rebase -i <commitId>

当你执行 `git rebase -i <commit>` 命令时,Git 会打开一个文本编辑器,列出从 `<commit>` 到当前 HEAD 的所有 commit。每个 commit 的前面都有一个命令,用于告诉 Git 对这个 commit 进行什么操作。你可以修改这个命令来改变 Git 对这个 commit 的操作。

可用的命令包括:

  • - `p` 或 `pick`:使用这个 commit
  • - `r` 或 `reword`:使用这个 commit,但需要修改 commit 信息
  • - `e` 或 `edit`:使用这个 commit,但会停下来让你修改这个 commit(你可以修改文件内容,添加或删除文件,等等)
  • - `s` 或 `squash`:使用这个 commit,但会将这个 commit 和前一个 commit 合并在一起
  • - `f` 或 `fixup`:和 `squash` 类似,但会丢弃这个 commit 的 commit 信息
  • - `d` 或 `drop`:不使用这个 commit

在编辑器中修改命令后保存并关闭编辑器,Git 就会开始执行 rebase,按照你指定的命令对 commit 进行操作。在 rebase 过程中,Git 可能会停下来让你解决合并冲突,或者让你修改 commit。你可以按照 Git 的提示进行操作,然后继续 rebase。

分支命令
# 查看分支
git branch
# 创建分支
git branch 分支名
# 创建并切换分支
git checkout -b 分支名 
# 切换分支
git checkout 分支名
git switch 分支名
# 删除分支,不能删除当前分支,只能删除其他分支
git branch -d b1
# 合并分支
git merge
git rebase
合并分支

参考:图解 Git 基本命令 merge 和 rebase

HEAD 指向当前所在的分支,当分支切换时,HEAD 会跟着切换到对应分支。

解决冲突

冲突的产生原因:不同分支修改了同一文件的同一行或者相邻行。

解决:

  1. 合并分支: git merge / git rebase,合并前先 git pull 更新代码
  2. git add
  3. git commit
  4. git push

相关文章:

Git 基本使用

目录 Git 安装与设置 在 Windows上安装 Git git 的配置 Git 原理 git 的四个区域 git 工作流程 git 文件的状态 Git 操作 创建仓库 免密登录 基本操作 版本回退 本地仓库整理 分支命令 合并分支 解决冲突 Git 安装与设置 在 Windows上安装 Git 在 Windows上使…...

LabVIEW使用PID 控制器有哪些应用场景?

如何在LabVIEW中创建PID控制器? LabVIEW为各种控制工程任务提供了内置函数和库&#xff0c;包括PID控制器编程。这些功能位于控制设计和仿真调色板中&#xff0c;其中有用于不同类型控制器的子调色板。要在LabVIEW中创建PID控制器&#xff0c;需要将PID函数从PID子调色板拖放…...

UTC与GPS时间转换-[week, sow]

UTC与GPS时间转换-[week, sow] utc2gpsgps2utc测试参考 Ref: Global Positioning System utc2gps matlab源码 function res utc2gps(utc_t, weekStart)%% parameterssec_day 86400;sec_week 604800;leapsec 18; % 默认周一为一周的开始if nargin < 2weekStart d…...

JVM性能调优:内存模型及垃圾收集算法

JVM内存结构 根据Java虚拟机规范&#xff0c;JVM内存主要划分为以下区域&#xff1a; 年轻代&#xff08;New Generation&#xff09; 包括Eden空间&#xff0c;用于存放新创建的对象。Survivor区由两个相同大小的Survivor1和Survivor2组成&#xff0c;用于存放经过初次垃圾回…...

不靠后端,前端也能搞定接口!

嘿&#xff0c;前端开发达人们&#xff01;有个超酷的消息要告诉你们&#xff1a;MemFire Cloud来袭啦&#xff01;这个神奇的东东让你们不用依赖后端小伙伴们&#xff0c;也能妥妥地搞定 API 接口。是不是觉得有点不可思议&#xff1f;但是事实就是这样&#xff0c;让我们一起…...

如何秒杀Promise面试题

如何秒杀Promise面试题 如果你在面试的时候技术面给你出了点关于Promise的面试题首先不要慌&#xff0c;先问候他爹妈一套问候语&#xff01; 然后切记不要(ps:这是病句别在意!&#x1f923;) 自己想 找他要纸和笔 首先关于promise的面试题无非就是 promise 的状态和宏队列、…...

linux文件权限常用知识点,基于Linux(openEuler、CentOS8)

目录 知识点常用实例 知识点 真实环境文件显示 解读 常用实例 文件所有者 chown -R nginx:nginx /home/source目录权限(R选填必须大写<遍历子文件夹及文件>) chmod -R 755 /home/sourcechmod -R 777 /home/source...

【前端笔记】记录一个能优化Echarts Geo JSON大小的网站

前端在使用Echarts等可视化图表库会不可避免遇到的问题&#xff0c;渲染地图的数据太大。 而有那么一个网站能给予这个问题一个解决方案&#xff1a;链接在此 使用方法很简单&#xff0c;首先先进入网站&#xff0c;如果进入了会是这个页面&#xff1a; 接着&#xff0c;选择一…...

车与网络之间(V2N)简介

车与网络之间&#xff08;V2N&#xff09;简介 一、定义与概述 V2N&#xff0c;全称为Vehicle-to-Network&#xff0c;是指车辆与网络之间的通信和连接技术。这种技术使得车辆能够与互联网进行无缝连接&#xff0c;进而实现导航、娱乐、防盗等多种应用功能。在智能交通系统领…...

.Net Core WebAPI参数的传递方式

Controller继承自ControllerBase&#xff0c;只不过增加了视图相关的方法&#xff0c;一般mvc项目选用Controller而Web API项目选择ControllerBase即可。 给服务器传递参数的时候&#xff0c;有URL、QueryString、请求报文体3种方式 请求路径/Student/GetAll/school/MIT/class…...

10款免费黑科技软件,强烈推荐!

1.AI视频生成——巨日禄 网页版https://aitools.jurilu.com/ "巨日禄 "是一款功能强大的文本视频生成器&#xff0c;可以快速将文本内容转换成极具吸引力的视频。操作简单&#xff0c;用户只需输入文字&#xff0c;选择喜欢的样式和模板&#xff0c; “巨日禄”就会…...

DFS:解决二叉树问题

文章目录 了解DFS1.计算布尔二叉树的值思路代码展示 2.求根节点到叶节点数字之和思路代码展示 3.二叉树剪枝思路代码展示 4.验证二叉搜索树思路分析代码展示 5.二叉搜索树中第k小元素思路&#xff1a;代码展示 6.二叉树的所有路径思路分析代码展示 总结 了解DFS 所谓DFS就是就…...

【相机开发问题总结】曝光补偿ExposureCompensation未生效异常分析及解决

问题描述 做一款相机应用时&#xff0c;用户反馈相机预览界面太暗了&#xff0c;由于我们是嵌入式设备&#xff0c;没有手机那么高大上得闪光灯补光&#xff0c;因此只能考虑从软件层面提高界面亮度&#xff0c;还好找到了曝光补偿&#xff0c;但是开发过程中发现曝光补偿未生…...

Flutter 中的 DateRangePickerDialog 小部件:全面指南

Flutter 中的 DateRangePickerDialog 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;日期和时间的选择是一项常见的用户交互需求。DateRangePickerDialog 是一个方便的小部件&#xff0c;它提供了一个对话框界面&#xff0c;允许用户选择日期范围。这个小部件…...

MCS-51伪指令

上篇我们讲了汇编指令格式&#xff0c;寻址方式和指令系统分类&#xff0c;这篇我们讲一下单片机伪指令。 伪指令是汇编程序中用于指示汇编程序如何对源程序进行汇编的指令。伪指令不同于指令&#xff0c;在汇编时并不翻译成机器代码&#xff0c;只是会汇编过程进行相应的控制…...

vue3 vant4实现抖音短视频功能

文章目录 1. 实现效果2. 精简版核心代码3. 完整功能点&#xff08;本文章不写&#xff0c;只写核心代码&#xff09; 1. 实现效果 2. 精简版核心代码 使用的 vue3 vant4组件使用van-swipe进行轮播图切换实现 <template><div :style"{width: width px,overflo…...

C#结合JS实现HtmlTable动态添加行并保存到数据库

目录 需求 效果视频演示 范例运行环境 准备数据源 数据表设计 UI及表结构Json配置 Json数据包提交配置 设计实现 前端UI Javascript 脚本 Jquery引用 C# 服务端操作 小结 需求 在 Web 应用项目中&#xff0c;实现一对多录入的数据管理功能是一项常见的应用。因此…...

Unity Render Streaming 云渲染 外网访问

初版&#xff1a; 日期&#xff1a;2024.5.20 前言&#xff1a;临时思路整理&#xff0c;后期会详细补充 环境&#xff1a; 1. 阿里云服务器 需要安装好nodejs 、npm 2. windows电脑&#xff0c;需安装好 nodejs 、npm 3.Unity 2021.3.15f1 4.Unity Render Streaming …...

美易官方:Copilot全面升级!

Copilot的全面升级&#xff0c;无疑在科技界掀起了一场革命性的浪潮&#xff01;微软在一夜之间推出的这50余项AI更新&#xff0c;不仅彰显了其在人工智能领域的深厚底蕴&#xff0c;更是让全球用户见证了计算机理解人类能力的一次飞跃。 在微软2024年Build开发者大会的主题演…...

深入了解FreeRTOS:实时操作系统的核心概念和应用

前言&#xff1a; 在当今数字化世界中&#xff0c;嵌入式系统扮演着至关重要的角色&#xff0c;从工业自动化到智能设备&#xff0c;无所不在。而实时操作系统&#xff08;RTOS&#xff09;则是这些系统的核心引擎&#xff0c;它们负责管理任务、资源和时间&#xff0c;确保系统…...

FHIR资源序列化性能骤降73%?揭秘C# Newtonsoft.Json在医疗JSONB场景下的隐性崩溃点(附Benchmark实测对比)

第一章&#xff1a;FHIR资源序列化性能骤降73%&#xff1f;揭秘C# Newtonsoft.Json在医疗JSONB场景下的隐性崩溃点&#xff08;附Benchmark实测对比&#xff09;问题现场&#xff1a;FHIR Bundle序列化耗时从12ms飙升至43ms 某三甲医院临床数据平台升级FHIR R4接口后&#xff0…...

Gemma-3 Pixel Studio一文详解:Indigo Pixel配色系统与可访问性(WCAG)

Gemma-3 Pixel Studio一文详解&#xff1a;Indigo Pixel配色系统与可访问性&#xff08;WCAG&#xff09; 1. 产品概述 Gemma-3 Pixel Studio是基于Google最新开源的Gemma-3-12b-it模型构建的高性能多模态对话终端。这款产品不仅继承了Gemma系列强大的逻辑推理能力&#xff0…...

Qwen3.5-9B行业应用:法律文书生成(起诉状/答辩状/代理词)+类案推送

Qwen3.5-9B行业应用&#xff1a;法律文书生成&#xff08;起诉状/答辩状/代理词&#xff09;类案推送 1. 法律AI助手的新选择 在法律行业&#xff0c;文书撰写和案例检索占据了律师大量工作时间。传统方式下&#xff0c;一份标准的起诉状可能需要3-4小时完成初稿&#xff0c;…...

会计岗位学习数据分析的价值分析

一、会计岗位数据分析能力需求上升的背景数字化转型浪潮席卷各行各业&#xff0c;传统会计职能从核算记录向决策支持转变。企业财务数据量激增&#xff0c;手工处理效率低下&#xff0c;需要借助数据分析工具挖掘数据价值。国际财务报告准则&#xff08;IFRS&#xff09;和税务…...

Qwen-Image-Edit效果展示:模糊老照片修复前后对比,惊艳!

Qwen-Image-Edit效果展示&#xff1a;模糊老照片修复前后对比&#xff0c;惊艳&#xff01; 1. 老照片修复技术的新突破 当我们翻出泛黄的老照片&#xff0c;那些模糊不清的面孔常常让人感到遗憾。传统的老照片修复需要专业设计师花费数小时进行手工修复&#xff0c;而现在&a…...

云容笔谈·东方红颜影像生成系统:剖析计算机组成原理与AI图像生成的底层关联

云容笔谈东方红颜影像生成系统&#xff1a;剖析计算机组成原理与AI图像生成的底层关联 你有没有想过&#xff0c;当你输入一段文字&#xff0c;AI就能为你生成一幅精美画作&#xff0c;这个过程和一台电脑运行程序有什么相似之处&#xff1f;今天&#xff0c;我们就来聊聊这个…...

从“手扫感应灯”拆解开始:聊聊三极管放大电路在生活中的那些实用设计

从“手扫感应灯”拆解开始&#xff1a;聊聊三极管放大电路在生活中的那些实用设计 每次深夜回家&#xff0c;摸黑找开关的体验总让人抓狂。直到我在玄关装了一盏挥手即亮的感应灯&#xff0c;这个不到50元的小玩意儿彻底改变了我的生活习惯——无需触碰&#xff0c;手在灯前轻轻…...

别再傻傻分不清:DNS、RANS、LES到底该用FDM还是FVM来算?

湍流模拟方法选择指南&#xff1a;DNS、RANS、LES与FDM、FVM的实战搭配策略 在计算流体力学&#xff08;CFD&#xff09;的实际工程应用中&#xff0c;选择合适的湍流模型与数值方法是每个工程师都会面临的挑战。面对复杂的流体流动问题&#xff0c;如何在计算精度、资源消耗和…...

仅限首批200名开发者获取:PHP低代码表单引擎v1.0内测版+商业授权白名单通道(含Figma组件库+Swagger自动文档生成)

第一章&#xff1a;PHP低代码表单引擎v1.0内测版概览与接入指南 PHP低代码表单引擎v1.0内测版是一款面向中小规模Web应用的轻量级表单构建与渲染框架&#xff0c;基于原生PHP 8.1开发&#xff0c;不依赖Composer自动加载&#xff0c;支持零配置快速嵌入现有项目。引擎核心由表单…...

OpenClaw技能扩展指南:为Qwen3-4B-Thinking添加公众号发布模块

OpenClaw技能扩展指南&#xff1a;为Qwen3-4B-Thinking添加公众号发布模块 1. 为什么需要公众号发布技能 上周我尝试用OpenClaw自动整理技术文档时&#xff0c;突然想到个痛点&#xff1a;每次写完文章都要手动复制到公众号后台&#xff0c;调整格式、上传封面、设置摘要&…...