Git教程-Git的基本使用
Git是一个强大的分布式版本控制系统,它不仅用于跟踪代码的变化,还能够协调多个开发者之间的工作。在软件开发过程中,Git被广泛应用于协作开发、版本管理和代码追踪等方面。以下是一个详细的Git教程,我们将深入探讨Git的基本概念和常用命令,以帮助大家更好地利用这一工具进行版本控制。
1. 安装Git
首先,确保你的计算机上已经安装了Git。你可以从Git官方网站下载并按照说明进行安装。

2. 配置Git
安装完成后,配置你的Git用户名和邮箱,这将用于标识你的提交记录。
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
3. 创建新仓库
3.1 在本地创建新仓库
在本地创建一个新的Git仓库,可以通过以下命令实现:
mkdir my_project
cd my_project
git init

可以看到我们初始化仓库之后,文件夹里面多一个 .git 的隐藏文件夹。

3.2 克隆远程仓库
如果你想获取远程仓库的代码副本,可以使用以下命令克隆远程仓库:
git clone remote_repository_url
4. 基本工作流
4.1 添加和提交更改
在进行代码更改后,需要将更改提交到Git仓库中。首先将更改添加到暂存区,然后提交更改:
git add filename # 将文件添加到暂存区
git commit -m "Your commit message" # 提交暂存区的更改
我们测试新建一个 test.md 文件,并把它添加到暂存区和提交。

4.2 查看状态和日志
你可以使用以下命令查看工作区和暂存区的状态,以及提交记录:
git status # 查看工作区和暂存区的状态
git log # 查看提交记录

5. 分支管理
5.1 创建和切换分支
Git支持分支管理,你可以创建新分支并在不同分支之间切换:
git branch branch_name # 创建新分支
git checkout branch_name # 切换到指定分支

5.2 合并分支
将指定分支的更改合并到当前分支:
git checkout main # 切换到主分支
git merge branch_name # 将指定分支的更改合并到主分支
我们在分支上修改 test.md的内容,然后将该分支的更改合并到主分支。

这里一开始我搞错了主分支的名称,建议先查询主分支名称再执行操作。
5.3 查看分支上的文件
查看分支上的文件。
git show master:test.md # 查看 master 主分支上的 test.md 文件
git show branch_one:test.md # 查看 branch_one 分支上的 test.md 文件
5.4 解决冲突
在合并分支时可能会发生冲突,需要手动解决冲突后再提交。
这里介绍一下什么是冲突。冲突就是一个文件在提交时,当前版本的改动已经不是基于远端仓库里的文件,即仓库里的文件在此次提交之前,已经被其他版本更新,导致两个版本在部分代码上发生矛盾,比如提交的版本中 A改成了B,但是远端仓库版本里已经由 A改成了C。这时候,我们就需要手动解决冲突。
下面,我们来模拟冲突:
我们先在 branch_one 分支上修改 test.md 的内容,再修改 master 主分支为不同的内容,将 branch_one 分支的更改合并到主分支。
解决冲突,我们手动选择一个需要保留的版本就可以了。
6. 远程仓库
6.1 添加远程仓库
将本地仓库与远程仓库关联,可以使用以下命令:
git remote add origin remote_repository_url
6.2 推送和拉取更改
推送本地仓库的更改到远程仓库,以及拉取远程仓库的更改到本地仓库:
git push origin branch_name # 推送更改到远程仓库
git pull origin branch_name # 拉取远程仓库的更改
7. 撤销更改
7.1 撤销工作区的更改
撤销工作区的更改,可以使用以下命令:
git checkout -- filename
7.2 撤销暂存区的更改
撤销暂存区的更改,可以使用以下命令:
git reset HEAD filename
7.3 撤销提交
撤销指定提交的更改,可以使用以下命令:
git revert commit_hash # 创建一个新的提交,撤销指定提交的更改
8. 高级主题
8.1 标签
创建标签并推送到远程仓库:
git tag tag_name # 创建标签
git push origin tag_name # 推送标签到远程仓库
8.2 子模块
Git子模块允许在一个Git仓库中嵌套另一个Git仓库:
git submodule add submodule_repository_url
9. 总结
在学习本教程的过程中,你已经建立了一个扎实的Git基础,理解了版本控制的核心概念以及如何通过Git有效地管理项目。Git不仅仅是一个版本控制系统,更是一项强大的工具,为团队协作和代码管理提供了全面而灵活的解决方案。
通过深入学习Git,你将不仅仅是一个Git用户,更是一个版本控制的专家。你将能够更加灵活地处理分支管理,合理规划项目的版本历史,轻松解决可能出现的冲突。随着你的实践经验不断积累,你会发现Git的强大之处不仅仅在于它的命令行,更在于它所提供的多样化而高效的工作流程。
在团队协作中,Git的分支策略将成为你的得力助手,你可以通过巧妙的分支管理实现功能的独立开发,降低代码集成的风险。同时,Git的远程仓库机制使得团队成员之间的协作更加紧密,不同开发者可以轻松地共享代码,推送和拉取更改。
总体而言,通过本教程的学习,你将不仅仅拥有Git的基本操作技能,更具备了解决实际项目中复杂场景的能力。Git作为开发者工具的重要性不言而喻,它的广泛应用使得它成为现代软件开发不可或缺的一部分。希望这个教程为你提供了一个坚实的Git入门,引领你在版本控制的道路上越走越远。在你的编码之旅中,愿Git始终是你值得信赖的伙伴。
相关文章:
Git教程-Git的基本使用
Git是一个强大的分布式版本控制系统,它不仅用于跟踪代码的变化,还能够协调多个开发者之间的工作。在软件开发过程中,Git被广泛应用于协作开发、版本管理和代码追踪等方面。以下是一个详细的Git教程,我们将深入探讨Git的基本概念和…...
Java解决长度为K子的数组中的的最大和
Java解决长度为K子的数组中的的最大和 01 题目 给你一个整数数组 nums 和一个整数 k 。请你从 nums 中满足下述条件的全部子数组中找出最大子数组和: 子数组的长度是 k,且子数组中的所有元素 各不相同 。 返回满足题面要求的最大子数组和。如果不存在子…...
【手机端测试】adb基础命令
一、什么是adb adb(Android Debug Bridge)是android sdk的一个工具 adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作。 Android的初衷是用adb这样的一个工具来协助开发人…...
【数据结构】深入探讨二叉树的遍历和分治思想(一)
🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:数据结构 🔥该文章主要讲述二叉树的递归结构及分治算法的思想。 目录: 🌍前言:🌍…...
jQuery AJAX get() 和 post() 方法—— W3school 详解 简单易懂(二十四)
jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。 HTTP 请求:GET vs. POST 两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。 GET - 从指定的资源请求数据POST - 向指定的资源提交要处理的数据 GET 基本…...
Linux中如何进行LVM逻辑卷扩容?
#注意:如果lv所在的vg有空间直接扩容就ok了! 1.创建pv pvcreate /dev/sdb 执行以上命令得到以下内容: Physical volume "/dev/sdb" successfully created. 2.直接vgextend扩容 vgextend vg1 /dev/sdb #卷组名字,将…...
现代企业架构框架——应用架构
现代企业架构框架——应用架构。 现代企业架构中的应用架构是指企业在构建和维护应用系统时所采用的一种架构框架。应用架构旨在实现应用系统的可扩展性、灵活性、可维护性和可重用性,以满足企业在数字化时代对应用系统的快速交付和持续创新的需求。下面将详细介绍应用架构的…...
期货开户保证金保障市场正常运转
期货保证金是什么?在期货市场上,采取保证金交易制度,投资者只需按期货合约的价值,交一定比率少量资金即可参与期货合约买卖交易,这种资金就是期货保证金。期货保证金(以下简称保证金〕按性质与作用的不同。…...
WebGIS----wenpack
学习资料:https://webpack.js.org/concepts/ 简介: Webpack 是一个现代化的 JavaScript 应用程序的模块打包工具。它能够将多个 JavaScript 文件和它们的依赖打包成一个单独的文件,以供在网页中使用。 Webpack 还具有编译和转换其他类型文…...
【Maven】Maven 基础教程(二):Maven 的使用
《Maven 基础教程》系列,包含以下 2 篇文章: Maven 基础教程(一):基础介绍、开发环境配置Maven 基础教程(二):Maven 的使用 😊 如果您觉得这篇文章有用 ✔️ 的话&#…...
mirthConnect忽略HTTPS SSL验证
mirthConnect SSL忽略验证 1、下载https网站证书 点击不安全---->证书无效 2、查看mirth 秘钥库口令 在mirthConnect 的conf目录下面keystore.storepass 3、导入证书到本地 在jdk的bin目录下面执行 keytool -importcert -file "下载的网站证书路径" -keysto…...
libvirt命名空间xmlns:qemu的使用
示例xml <domain type{domain_type} xmlns:qemuhttp://libvirt.org/schemas/domain/qemu/1.0><qemu:commandline><qemu:commandline><qemu:arg value-newarg/><qemu:env nameQEMU_ENV valueVAL/></qemu:commandline></domain>"…...
ywtool check命令及ywtool clean命令
一.ywtool check命令 1.1 ywtool check -I 1.2 ywtool check all 1.3 ywtool check io 1.4 ywtool check elk 1.5 ywtool check php 1.6 ywtool check mysql 1.7 ywtool check nginx 1.8 ywtool check system 1.9 ywtool check docker_nbip [容器名称] 1.10 ywtool check 1.10…...
java009 - Java面向对象基础
1、类和对象 1.1 什么是对象 万物皆对象,客观存在的事物皆为对象。 1.2 什么是面向对象 1.3 什么是类 类是对现实生活中一类具有共同属性和行为的事物抽象。 特点: 类是对象的数据类型类是具有相同属性和行为的一组对象的集合 1.4 什么是对象的属…...
MWC 2024 | 广和通携手意法半导体发布智慧家居解决方案
世界移动通信大会2024期间,广和通携手横跨多重应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,以下简称ST;纽约证券交易所代码:STM)发布支持Matter协议的智慧家居解决方案。该方案在广和…...
threejs 大场景下,对小模型进行贴图处理
接上篇小模型的删除☞threeJS 大模型中对小模型进行删除-CSDN博客 针对已有模型,根据数据状态进行贴图处理,例如:机房内电脑告警状态、电脑开关机状态下的不同状态贴图等 示例模型还是以丛林小屋为例:针对该模型中的树干进行贴图…...
云畅科技携手飞腾打造智慧园区信创低代码综合解决方案
01 方案概述 随着国家对信创产业的日益重视与大力支持,信创行业的产业化进程正在不断加快。智慧园区,作为信创产业蓬勃发展的核心载体与战略平台,正日益凸显其重要性。与此同时,在政策引导和市场需求的双重驱动下,智慧…...
Dell R730 2U服务器实践1:开机管理
新入手一台Dell R730 2U服务器,用来做FreeBSD下的编译工作和Ubuntu下简单的AI学习和调试。 服务器配置: CPU:E5 2680V4 2 14核心 内存:DDR4 ECC 16G2 2133 MHz 网卡:双千双万 Intel(R) 2P X540/2P I350 rNDC 硬盘…...
『大模型笔记』Sora:探索大型视觉模型的前世今生、技术内核及未来趋势
Sora:探索大型视觉模型的前世今生、技术内核及未来趋势 文章目录 一. 摘要二. 引言原文:Sora: A Review on Background, Technology, Limitations, and Opportunities of Large Vision Models译文:Sora探索大型视觉模型的前世今生、技术内核及未来趋势 [译]图 3: 视觉领域生…...
python中的字符串处理
无极低码 :https://wheart.cn 字符串常量 此模块中定义的常量为: string.ascii_letters 下文所述 ascii_lowercase 和 ascii_uppercase 常量的拼连。 该值不依赖于语言区域。 string.ascii_lowercase 小写字母 abcdefghijklmnopqrstuvwxyz。 该值不依…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
