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://xiahunao.cn/news/2815290.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

npm ERR! code ERESOLVE

1、问题概述? 执行npm install命令的时候报错如下: tangxiaochuntangxiaochundeMacBook-Pro stf % npm install npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resol…

C++ Primer 总结索引 | 第八章:IO库

1、IO类 1、已经使用过的IO类型和对象 都是 操纵char数据的。默认情况下,这些对象 都是关联到 用户的控制台窗口的 但是 不能仅从控制台窗口 进行IO操作,应用程序 需要 读写命名文件,使用IO操作 处理string中的字符 会很方便,此…

Netty入门指南:从零开始的异步网络通信

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Netty入门指南:从零开始的异步网络通信 前言Netty简介由来:发展历程:异步、事件驱动的编程模型: 核心组件解析通信协议高性能特性异步编程范式性能优化与…

Linux零基础快速入门

Linux的诞生 Linux创始人:林纳斯 托瓦兹 Linux 诞生于1991年,作者上大学期间 因为创始人在上大学期间经常需要浏览新闻和处理邮件,发现现有的操作系统不好用,于是他决心自己写一个保护模式下的操作系统,这就是Linux的原型,当时他…

【MySQL】DCL

DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。 1. 管理用户 在MySQL数据库中,DCL(数据控制语言)是用来管理用户和权限的语句集合。通过DCL语句,可以创建、修改、删…

leetcode 重复的子字符串

前要推理 以abababab为例,这里最主要的就是根据相等前后缀进行推导 s [ 0123 ] 如 t【 0123 】 f 【01 23 】 后两个分别是前后缀,第一个是总的字符串,然后可以推导 //首先还是算出…

Spring的定时任务不生效、不触发,一些可能的原因,和具体的解决方法。

1 . 未在启动类上加 EnableScheduling 注解 原因:未在Spring Boot应用主类上添加EnableScheduling注解或未在XML配置文件中配置定时任务的启用。解决方法:确保在应用的配置类上添加EnableScheduling注解,启用定时任务。 2 . cron 表达式书写…

P4859 已经没有什么好害怕的了(二项式反演+dp)

题录&#xff1a;P4859 已经没有什么好害怕的了 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<cstring> #include<cmath> #include<ctim…

Kubernetes剖析

Kubernetes剖析 前言 ​ 容器技术这样一个新生事物&#xff0c;完全重塑了整个云计算市场的形态。它不仅催生出了一批年轻有为的容器技术人&#xff0c;更培育出了一个具有相当规模的开源基础设施技术市场。 ​ 在这个市场里&#xff0c;不仅有 Google、Microsoft 等技术巨擘…

【GPTs分享】GPTs分享之Photo Multiverse,不唱、跳、RAP的坤坤能叫坤坤吗

今日GPTs分享&#xff1a;Photo Multiverse。Photo Multiverse 是一款基于先进人工智能技术的创意辅助工具&#xff0c;专为艺术家和创意人士设计&#xff0c;以探索和创造多元宇宙中的视觉艺术。它通过结合古老的艺术神秘主义和现代技术&#xff0c;帮助用户将他们的想象力变为…

linux gdb 调试工具

1.写程序 首先&#xff0c;我们先写出一个 .c 或者.cpp程序 如 然后 gcc -g hello.c -o hello 或者 g -g hello.cpp -o hello &#xff08;-g&#xff09;要加 2. gdb调试 用 gdb &#xff08;可执行程序&#xff0c;如hello&#xff09; 进入之后&#xff0c;有…

el-table 多选表格存在分页,编辑再次操作勾选会丢失原来选中的数据

el-table表格多选时&#xff0c;只需要添加type"selection"&#xff0c; row-key及selection-change&#xff0c;如果存在分页时需要加上reserve-selection&#xff0c;这里就不写具体的实现方法了&#xff0c;可以查看我之前的文章&#xff0c;这篇文章主要说一下存…

算法打卡day5|哈希表篇01|Leetcode 242.有效的字母异位词 、19.删除链表的倒数第N个节点、202. 快乐数、1. 两数之和

哈希表基础知识 哈希表 哈希表关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素&#xff1b;数组就是哈希表的一种 一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在班级里&#xff1a; 要枚举的话时间复杂度是O(n)&…

Linux服务器中文乱码如何解决

如果服务器上数字和英文均可正常展示&#xff0c;只有中文是奇奇怪怪的乱码&#xff0c;那么可以考虑是服务器本身字体输出有问题。 如何在服务器上安装中文宋体字体库呢&#xff0c;排查及安装字体库步骤如下&#xff1a; 使用 fc-list命令检查服务器是否安装字体库如果提示…

Docker部署Portainer图形化管理工具

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具&#xff0c;可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

模仿蜘蛛工作原理 苏黎世联邦理工学院研发牛油果机器人可在雨林树冠穿行

对于野外环境生物监测的研究人员来讲&#xff0c;收集生物多样性数据已成为日常工作重要组成部分&#xff0c;特别是对于热带雨林的茂密树冠当中活跃着非常多的动物、昆虫与植物。每次勘察都需要研究人员爬上茂密树冠收集数据&#xff0c;一方面增加了数据收集难度&#xff0c;…

性能测试-反编译jar

方法一&#xff0c;使用jd-gui 1、官网下载&#xff1a;Java Decompiler 2、下载mac版本后&#xff0c;解压&#xff0c;如下所示&#xff1a; 双击 JD_GUI&#xff0c;提示错误&#xff0c;如下所示&#xff1a; 已经安装了java 17&#xff0c;是java 1.8以上版本&#xff0…

milvus upsert流程源码分析

milvus版本:v2.3.2 整体架构: Upsert 的数据流向: 1.客户端sdk发出Upsert API请求。 import numpy as np from pymilvus import (connections,Collection, )num_entities, dim 4, 3print("start connecting to Milvus") connections.connect("default",…

程序员年龄增大后的职业出路是什么?

​新年刚过&#xff0c;返工在即。程序员们都收到大大小小的开门红&#xff0c;开启今年新征程。但是有人欢喜有人忧…… 本想着2024年Android行业会好过一些&#xff0c;还是避免不了裁员风险。在安卓历经了10多年的发展后&#xff0c;因为头部公司的稳定和相互的竞争情况下&a…

猜数字游戏,炸弹数,random

package com.zhang.random;import java.util.Random; import java.util.Scanner;public class RandomTest2 {public static void main(String[] args) {//随机生成一个1~100之间的数&#xff0c;提示用户猜测&#xff0c;猜大提示猜大&#xff0c;猜小提示小了&#xff0c;直到…