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始终是你值得信赖的伙伴。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React 模态框的设计(六)Draggable的整合

前一节课中漏了一个知识点,当内容很长时需要滚动,这个滚动条是很影响美观的。在MacOS下的还能忍,win系统下简直不能看。如何让长内容能滚动又不显示滚动条呢,我尝试过很多办法,最终下面这个方法目前来说是最完美的。我…

Mysql DATETIME与TIMESTAMP的区别

TIMESTAMP的取值范围小,并且TIMESTAMP类型的日期时间在存储时会将当前时区的日期时间值转换为时间标准时间值,检索时再转换回当前时区的日期时间值。 而DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。 DATETI…

数据结构——lesson4带头双向循环链表实现

前言✨✨ 💥个人主页:大耳朵土土垚-CSDN博客 💥 所属专栏:数据结构学习笔记​​​​​​ 💥双链表与单链表的区分:单链表介绍与实现 💥对于malloc函数有疑问的:动态内存函数介绍 感谢大家的观看…

tomcat安装步骤流程

安装tomcat是基于安装java的基础上的 JAVA 举例说明: 关闭防火墙 下载java [rootlocalhost ~]#yum install java -y rootlocalhost ~]#yum install epel-release.noarch -y [rootlocalhost ~]#yum provides */javac [rootlocalhost data]#yum install java-1.8.0-o…

半监督学习理解

半监督 少量有标注,大量无标注 1.三个假设: (1)连续性/平滑性假设:相近的数据点可能有相同的标签 (2)集群假设:在分类问题中,数据往往被组织成高密度的集群,同一集群的数据点可能具有相同的标签。因此&…

C/C++常见的字符串操作函数

2 字符串操作 ​ 由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志&#xff…

6.1 deeplabv3+的pth模型转换为rknn模型

和yolov5的pth模型转换为rknn模型类似,deeplabv3的pth模型转为rknn模型的步骤是: pth------>onnx-------->rknn 1.pth转为onnx 代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- # by [jackhanyuan](https://github.com/…

实现一个线程安全的单例模式

单例模式 单例模式能保证某个类在程序中只存在唯⼀⼀份实例,⽽不会创建出多个实例 某个类,在一个类,只应该创建出一个实例,使用单例模式,就可以对咱们的代码进行一个更严格的校验和检查 单例模式具体的实现⽅式有很多.最常⻅的是"饿汉"和"懒汉"两种单例…

Linux之定时任务01

简介 Linux定时任务是一种可执行的命令或者脚本,在特定的时间或者时间间隔下自动执行。通过在系统中预设一些需要执行的任务,可以让Linux定时任务自动执行并完成这些任务。定时任务可以用于自动备份、系统清理、监控、自动化维护等任务。 一、apache服务器监控 [rootlocalhost…

代码随想录算法训练营day27

题目:93.复原IP地址、78.子集、90.子集II 参考链接:代码随想录 93.复原IP地址 思路:本题的思路和上题切割回文串类似,也是先要写一个判断函数,然后一个个切割。对返回条件,如果路径长度已经为4&#xff…

DevEco Studio下载与安装(Windows)

下载地址: HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装时直接点击 next 即可。 运⾏已安装的DevEco Studio,⾸次使⽤,请选择Do not import settings,单击OK。 1.安装Node.js 如果本地有下载,可以…

前端JS 时间复杂度和空间复杂度

时间复杂度 BigO 算法的时间复杂度通常用大 O 符号表述,定义为 T(n) O(f(n)) 实际就是计算当一个一个问题量级(n)增加的时候,时间T增加的一个趋势 T(n):时间的复杂度,也就相当于所消耗的时长 O&#xff1…

乐吾乐Web可视化RTSP播放

背景 乐吾乐致力于物联网和智能制造等场景的Web可视化平台和解决方案,其中摄像头播放必不可少。 当前国内摄像头都以RTSP协议为主,而HTML不能直接读取RTSP协议,因此需要一个转流服务。乐吾乐Web可视化播放RTSP也是如此: RTSP协…

ArcGIS专用语言:Arcade详细介绍(一)

Arcade语言是专为在ArcGIS中使用而设计的。是一种可移植、轻量级且安全的表达语言,用于在ArcGIS应用程序中创建自定义内容。 与其他表达式语言一样,它可以执行数学计算、设置文本格式和计算逻辑语句,还支持多语句表达式、变量和流控制语句。…

理解计算着色器中glsl语言的内置变量

概要 本文通过示例的方式,着重解释以下几个内置变量: gl_WorkGroupSizegl_NumWorkGroupsgl_LocalInvocationIDgl_WorkGroupIDgl_GlobalInvocationID 基本概念 局部工作组与工作项 一个3x2x1的局部工作组示例如下,每个小篮格子表示一个工作项…

Vulnhub靶机:basic_pentesting_1

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.4) 靶机:basic_pentesting_1(10.0.2.6) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/en…

密码学——基本概念

引言 在计算机和通信技术发达的现代社会,密码已经成为防止信息被篡改,盗取等方面不可或缺的技术。可应用于:本人身份认证,网上交易加密和认证。保证文件不被篡改的电子签名。电子邮件的加密等等领域。 密码学术语: 密码 cipher 基本词汇: 明文P(Plain text)= 没有经…

TCP缓存

TCP缓存是指TCP协议在数据传输过程中使用的一种机制,用于临时存储和管理数据包。它主要有三个作用:提高网络性能、保证数据的可靠性和实现流量控制。 首先,TCP缓存可以提高网络性能。当发送端发送数据时,TCP协议会将数据分割成若…

如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

VR危险环境模拟介绍|VR虚拟现实设备

VR危险环境模拟是指利用虚拟现实技术来模拟和展现各种危险环境,以便训练人员应对紧急情况、提高安全意识和应急反应能力。这种模拟可以涉及到工业、医疗、紧急救援等多个领域,旨在帮助人们在真实环境中面对危险时能够做出正确的应对和决策。 VR危险环境…