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.hqwc.cn/news/496781.html

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

相关文章

Linux配置JDk环境

下载jdk 官网地址:Java Downloads | Oracle 将下载的jdk上传到服务器 不管你使用什么工具和方法,只要将安装包上传到服务器就可以了 解压文件 tar -xvf jdk-8u341-linux-x64.tar.gz 配置环境变量 用vim /etc/profile进入编辑状态,加入下边…

【DDD】学习笔记-领域驱动设计体系

从统一语言到限界上下文,从限界上下文到上下文映射,从领域分析建模到领域设计建模,再从领域设计建模到领域实现建模,我将软件架构设计、面向对象设计、场景驱动设计和测试驱动开发有机地融合起来,贯穿于领域驱动设计的…

成人年龄判断(个人学习笔记黑马学习)

结合前面学习的input输入语句,完成如下案例: 1.通过input语句,获取键盘输入,为变量age赋值。(注意转换成数字类型) 2.通过if判断是否是成年人,满足条件则输出提示信息,如下: 欢迎来到黑马儿童游乐场&#x…

个人建站前端篇(七)vite + vue3企业级项目模板

一、vite命令行创建项目 npm create vitelatest根据提示选择模板,选择vite vue3 ts即可。 二、项目连接远程仓库 git init git remote add origin https://gitee.com/niech_project/vite-vue3-template.git git pull origin master git checkout -b dev三、项目…

JavaScript作用域及预解析

文章目录 1. 作用域介绍2. 变量的作用域*3. JS中没有块级作用域4. 作用域链5. 预解析预解析案例 1. 作用域介绍 全局作用域局部作用域相同的变量名称在不同的作用域中是不会相互影响的! 2. 变量的作用域 全局变量:在全局下都可以使用;局部变…

【GameFramework框架内置模块】6、实体(Entity)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

React UI框架Antd 以及 如何按需引入css样式配置(以及过程中各种错误处理方案)

一、react UI框架Antd使用 1.下载模块 npm install antd -S 2.引入antd的样式 import ../node_modules/antd/dist/reset.css; 3.局部使用antd组件 import {Button, Calendar} from antd; import {PieChartTwoTone} from ant-design/icons; {/* 组件汉化配置 */} import l…

PyTorch概述(六)---View

Tensor.view(*shape)-->Tensor 返回一个新的张量同之前的张量具有相同的数据,但是具有不同的形状;返回的张量同之前的张量共享相同的数据,必须具有相同数目的元素,可能具有不同的形状;对于经过view操作的张量&…

Java 反射机制

​ 更多内容,前往IT-BLOG ​ 反射Reflection被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。反射是一种功能强大且复杂的机制。使用它的主要人员是工具构…

uniapp腾讯地图JavaScript Api,H5端和原生APP端可用

因项目需要,在uniapp中集成使用腾讯地图,为了方便维护,希望通过一套代码实现H5和APP同时可用。H5显示相对简单,APP端比较麻烦,记录下实现过程 一、集成步骤 1.使用 renderjs script标签使用renderjs,因为…

Vue项目 快速上手(如何新建Vue项目,启动Vue项目,Vue的生命周期,Vue的常用指令)

目录 一.什么Vue框架 二.如何新建一个Vue项目 1.使用命令行新建Vue项目 2.使用图形化界面新建Vue项目 三.Vue项目的启动 启动Vue项目 1.通过VScode提供的图形化界面启动Vue项目 2.通过命令行的方式启动Vue项目 四.Vue项目的基础使用 常用指令 v-bind 和 v-model v…

SpringCloud认识微服务

文章目录 1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 微服务架构是一种架构模式&…