包新的Git安装与使用教程(2024九月更新)

目录

一、安装git

1.下载git

2.git安装

3.环境变量配置与测试

 二、使用教程

1.创建版本库

2.版本回退

3.删除和恢复文件


一、安装git

1.下载git

官方下载地址:https://git-scm.com/download

 

然后进入以下页面,点击下载链接即可(windows一般都是64位)。 

下载完毕后打开安装包进入安装步骤。 

2.git安装

选择自己的安装路径,如下:

3.环境变量配置与测试

安装完之后进行环境配置,在命令行输入以下内容:

git config --global user.name "your_name"

按回车后接着输入:

git config --global user.email "your_email"

完成后如下图:

 注意:要填自己真实的邮箱

因为 Git 是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识,git config --global 参数,有了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
这样,我们的 Git 客户端就下载并安装完成了。

 二、使用教程

1.创建版本库

(1)通过命令git init把这个目录变成git可以管理的仓库

首先要新建一个目录(注意:这里可以在盘里面直接创建新的文件目录,也可以使用命令mkdir file_name进行创建)进行示范,这里演示第二种方法:

先将路径切换到你自己的盘里面,命令如下:

随后创建自己的文件夹,用命令mkdir file_name进行创建:

然后进入文件夹所在位置查看自己是否创建成功,创建成功如下图所示:

接着进入新创建的文件夹目录中,这样便在D盘目录下创建了一个git_file版本库,如下:

但此时它还不是 git 可以管理的仓库,于是便要执行git init命令才行,如下:

此时你的git_file文件目录下便会多一个.git的文件夹,这个文件夹这个目录是 Git 来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则会把 git 仓库给破坏了,如下:

(2)把文件添加到版本库中

在版本库git_file目录下新建一个记事本文件readme.txt,并输入一些内容在里面,比如:11111

第一步:使用命令 git add readme.txt 添加到暂存区里面去,如下:

如果没有任何提示,说明已经添加成功了。

第二步:用命令 git commit -m "注释" (注释里面的内容不设要求,自己能明白就行)告诉 Git,把文件提交到仓库。

此时已经提交成功了,接下来我们可以看一下是否还有文件没有提交,使用命令git status,如下:

如果出现这样的字样,说明文件已经全部提交了。

当我们对readme.txt文件进行修改,在其内容后面添加一行22222的内容,继续使用git status进行状态查看,如下:

从提示的内容可知,readme.txt文件的内容已经被修改,但是还未提交到仓库里面,如果想要查看文件里面究竟修改了什么内容,可以使用命令git diff readme.txt进行查看,如下:

可以看到,红色字体部分是修改前的内容,绿色部分是修改之后的内容。

确认修改了什么内容后我们就可以放心提交到仓库了,提交修改过后的文件和前面说的提交文件是一样的操作,第一步是把文件放入暂存区,使用命令git add 文件名 ,第二部是提交文件到仓库,使用命令git commit -m "注释",如下:

以上两步完成以后可以再看一下是否还有文件没有提交,使用git status进行查看,如下:

2.版本回退

我们对readme.txt文件再次进行修改,在后面添加一行内容33333,并提交到仓库,如下:

如果我们不想要当前的版本,怎样才能换回以前的呢?

我们可以使用git log来查看一下之前的历史记录,使用命令git log即可查看,如下:

我们可以看到,历史记录从上到下是从修改时间由近到远排列的,在上面可以看到修改的时间以及修改人的信息,如果觉得信息太多的话,我们可以使用命令git reflog或者git log --pretty=oneline进行简化,如下:

回到之前所说的问题,我们怎样才能回退到之前的版本呢?这里推荐两种方法:

第一种:使用命令git reset --hard HEAD^,这条命令的作用是回退到上一个版本,如果要回退到上上个版本,要使用命令git reset --hard HEAD^^,以此类推;

第二种:第一种方法只适用于要退回的版本不远的情况,如果要退回前100个版本的话是非常不方便的,此时我们可以使用git reset --hard HEAD~100命令即可。

接下来我们做个示范,这是目前的readme.txt文件:

现在退回上一个版本,如下:

现在我们用git log看一下历史记录:

现在已经没有刚才那个版本了,文件里面的内容也改变了,如果要恢复刚才的版本该怎么办呢?

我们可以通过上面所说的版本号回退,使用命令git reset --hard 版本号,版本号用命令git reflog进行查看(上面有提过),如下:

现在我们可以使用命令git reset --hard 1a90bde来恢复了,演示如下:

使用cat readme.txt来查看文件里面的内容,如下:

可以看到,目前已经恢复成最新的版本了。

3.删除和恢复文件

现在我们在版本库git_file目录里面添加一个文件c.txt,然后提交,如下:

如果我们要删掉c.txt这个文件的话,可以直接在文件目录中删掉它,或者使用rm 文件名命令删除,如果我想彻底从版本库中删掉了此文件的话,可以再执行commit 命令提交掉,现在目录是这样的:

只要没有commit之前,如果我想在版本库中恢复此文件如何操作呢?可以使用如下命令git restore-- c.txt,如下所示:

这里有 2 种情况,如下:

1. readme.txt 自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
2. 另外一种是 readme.txt 已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。

4.远程仓库

现在我们已经在本地创建了一个 Git 仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。

常用的远程仓库就是 github:https://github.com/,接下来我们演示如何将本地代码同步到github。
在 github 上创建仓库,首先你得在 github 上创建一个账号,这个就不演示了。然后在 github 上创建一个仓库,创建好后即可创建一个仓库

点击“create repository”按钮仓库就创建成功了。
Github 支持两种同步方式“https”和“ssh”。
如果使用 https 很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。
如果使用 ssh 方式就需要客户端先生成一个密钥对,即一个公钥一个私钥。然后还需要把公钥放到 githib 的服务器上。

什么是 SSH?

SSH 为 Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

 5.ssh密钥的生成和配置

ssh密钥的生成

第一步:创建 SSH Key。在用户主目录下,看看有没有.ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:git bash,执行命令,生成公钥和私钥,命令: ssh-keygen -t rsa,如下:

然后我们可以根据路径找到我们的公钥私钥:

ssh 密钥配置

密钥生成后需要在 github 上配置密钥本地才可以顺利访问。

接着打开你的id_rsa.pub(公钥)文件,可以用记事本打开,并把里面的内容全部复制下来,粘贴在Key的部分,然后点击Add SSH key按钮完成配置。

6.同步到远程仓库

同步到远程仓库可以使用 git bash。
现在,我们根据 GitHub 的提示,在本地的git_file仓库下(D:\git_file)运行命令:

git remote add origin git@github.com:emily-xl/python_project.git
git push -u origin master 

如果出现如下错误:

这说明你之前已经连接过你的远程仓库了,我们可以执行git remote rm origin指令,再执行以上两条指令,效果如下:

把本地库的内容推送到远程,使用 git push 命令,实际上是把当前分支master 推送到远程。

之前创建仓库的时候如果你没有勾选“Add a README file”这个内容,那么你的仓库里面应该是空的,由于远程库是空的,我们第一次推送 master 分支时,加上了 –u 参数,Git不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的master 分支和远程的master 分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在 github 页面中看到远程库的内容已经和本地一模一样了,上面的要输入 github 的用户名和密码如下所示:

从现在起,只要本地作了提交,就可以通过如下命令:git push origin master把本地 master 分支的最新修改推送到 github 上了,现在你就拥有了真正的分布式版本库了。

7.如何从远程库克隆

当我们想从GitHub上面下载某个项目到我们本地仓库上面时,我们此时执行命令:git clone 项目的ssh地址,如下:

此时使用ls指令,就可以看到这个名叫masr的项目出现在我们当前仓库里面了。

8.团队协作项目

当我们想要指定某几个人才有访问权限并对这个项目进行修改时,我们可以进行如下操作:

输入你的密码:

进入界面之后点击绿色的按钮:

对方会接收到一封邮件,按照邮件上面的内容执行就行,随后就可以邀请你想要的人进行创作了。

9.创建和合并分支

在版本回填退里,你已经知道,每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支。HEAD 严格来说不是指向提交,而是指向 master,master 才是指向提交的,所以,HEAD 指向的就是当前分支。

首先,我们来创建 dev 分支,然后切换到 dev 分支上。如下操作:

git checkout 命令加上 –b 参数表示创建并切换,相当于如下 2 条命令:
git branch dev
git checkout dev
git branch 查看分支,会列出所有的分支,当前分支前面会添加一个星号。

我们在 dev 分支的readme.txt文件上添加一行44444,我们先来查看下 readme.txt 内容:

接着提交(以下的dev2应是dev):

再切换回master分支,效果如下:

可以看到两条分支上面的内容并不一样,现在我们可以把 dev 分支上的内容合并到分支 master 上了,可以在 master 分支上,使用如下命令 git merge dev (以下dev2为dev)如下所示:

现在两条分支上面的内容完全一样了。

合并完后,我们可以接着删除 dev 分支了,操作如下:

这样就算是删除好了。

总结创建与合并分支命令如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name

10.其他

出现这种问题多半是因为你的电脑名称时以中文命名的,打开设置修改电脑名称即可:

然后重启电脑就会发现乱码没有了。

---END

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

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

相关文章

中望3D 2026亮点速递(1)-全新槽功能螺纹功能,减少繁琐操作

本文为CAD芯智库整理,未经允许请勿复制、转载!中望3D 2026全新的槽功能,包括:(1)可快速生成多种槽形;(2)快速生成一个或多个槽;(3)支持…

2025毫米波雷达技术白皮书:智能汽车与物联网的感知核心

随着人工智能、物联网(IoT)和智能汽车产业的迅猛发展,毫米波雷达技术正成为感知领域的核心驱动力。毫米波雷达凭借其高精度、全天候和强抗干扰能力,广泛应用于智能汽车的自动驾驶、物联网的环境感知以及工业自动化。2025年&#x…

用 React-Three-Fiber 实现雪花下落与堆积效果:从零开始的 3D 雪景模拟

在 Web3D 开发中,自然现象模拟一直是极具吸引力的主题。本文将基于 React-Three-Fiber(R3F)框架,详解如何实现一个包含雪花下落、地面堆积的完整雪景效果。我们会从基础粒子系统入手,逐步完善物理交互逻辑,…

从抓包GitHub Copilot认证请求,认识OAuth 2.0技术

引言 在现代开发工具中,GitHub Copilot 以智能、嵌入式的人工智能代码补全能力著称。作为一项涉及用户敏感数据和付费授权的服务,其认证授权流程尤为值得技术研究。本文基于实际抓包 VS Code 中的 Copilot 登录认证请求,系统梳理其 OAuth 2.…

Linux操作系统之线程:分页式存储管理

目录 前言: 一、分页式存储管理 二、二级页表的地址转化 三、缺页中断 总结 前言: 我们上篇文章简单介绍了线程的一些知识点,但是还有很多坑没有给大家填上,包括页表部分我们还没为大家说明。 本篇文章我将会继续为大家讲解…

xss1-8

Level-1<script>alert()</script>基础反射型 无任何过滤Level-2"> <script>alert()</script> <"闭合属性&#xff1a;">用来闭合当前标签的value属性注入新标签&#xff1a;闭合属性后&#xff0c;插入独立的<script>…

51c嵌入式~单片机~合集1

自己的原文哦~ https://blog.51cto.com/whaosoft/11897656 一、STM32的启动模式配置与应用 三种BOOT模式 所谓启动&#xff0c;一般来说就是指我们下好程序后&#xff0c;重启芯片时&#xff0c;SYSCLK的第4个上升沿&#xff0c;BOOT引脚的值将被锁存。用户可以通过设…

Typecho分类导航栏开发指南:从基础到高级实现

文章目录 Typecho分类导航栏深度解析:父分类与子分类的完美呈现 引言 一、Typecho分类系统基础 1.1 Typecho分类结构 1.2 获取分类数据的基本方法 二、基础分类导航输出 2.1 简单的平铺式导航 2.2 带计数器的分类导航 三、层级分类导航实现 3.1 递归输出父子分类 3.2 使用Type…

C++异步编程工具 async promise-future packaged_task等

深入探讨 C11 中引入的四个核心异步编程工具&#xff1a;std::async, std::future, std::promise, 和 std::packaged_task。它们共同构成了 C 现代并发编程的基础。 为了更好地理解&#xff0c;我们可以使用一个餐厅点餐的类比&#xff1a; std::future (取餐凭证)&#xff1…

Linux-网络管理

网络管理1. 网络基础1.1 TCP/IP 协议栈&#xff08;四层模型&#xff09;1.2 网络设备配置与基础概念1.3 网络接口命名规则1.4 网络配置文件位置2. 常用网络配置命令2.1 查看网络接口信息2.2 配置 IP 地址2.3 启用/禁用网卡2.4 修改网卡 MAC 地址2.5 配置网卡的 MTU&#xff08…

Linux锁的概念及线程同步

目录 1.常见锁概念 死锁 死锁四个必要条件 避免死锁 避免死锁算法 2. Linux线程同步 条件变量 同步概念与竞态条件 条件变量函数 初始化 销毁 等待条件满足 唤醒等待 简单案例&#xff1a; 条件变量使用规范 1.常见锁概念 死锁 死锁是指在一组进程中的各个进程均占有不会释放的…

docker更换国内加速器-更换华为加速器2025-717亲测可用docker 拉取镜像出错

[rootlocalhost ~]# docker pull nginx Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)报错原因就是…

Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案

Unity VR多人手术模拟恢复2&#xff1a;客户端移动同步问题分析与解决方案 &#x1f3af; 问题背景 在开发基于Unity Mirror网络架构的VR多人手术模拟系统时&#xff0c;我们遇到了一个复杂的客户端移动同步问题&#xff1a; 主要操作者&#xff08;第一个客户端&#xff09;&a…

uni-app开发的页面跳转全局加载中

uni-app开发的页面跳转全局加载中首先需要下载插件创建加载中页面组件app.vue页面中监听跳转首先需要下载插件 https://ext.dcloud.net.cn/plugin?id20613 创建加载中页面组件 <!-- 全局自定义加载中 --> <template><view v-if"visible" class&qu…

XXE漏洞4-XXE无回显文件读取-PentesterLab靶场搭建

一.PentesterLab靶场搭建(实验环境搭建)介绍&#xff1a;PentesterLab 是一个全面的漏洞演示平台&#xff0c;但是它是收费的&#xff0c;我们这里只使用它的 xxe 演示案例。安装 PentesterLab 虚拟机:下载好镜像&#xff1a; 1.打开VMware新建虚拟机&#xff0c;选择典型就行。…

【机器学习】图片分类中增强常用方式详解以及效果展示

图片增强常用方式详解 引言 图片数据的质量和多样性对模型的训练效果起着至关重要的作用。然而&#xff0c;实际获取的图片数据往往存在数量不足、分布不均衡等问题。图片增强技术应运而生&#xff0c;它通过对原始图片进行一系列变换&#xff0c;生成更多具有多样性的图片&…

【URL 转换为PDF】HTML转换为PDF

1、方法1 pdfkit 安装依赖 # 安装 wkhtmltopdf&#xff08;系统级&#xff09; # Ubuntu/Debian sudo apt install wkhtmltopdf# macOS brew install wkhtmltopdf# Windows 下载安装&#xff1a;https://wkhtmltopdf.org/downloads.html# 安装 Python 库 pip install pdfkitimp…

单链表的定义、插入和删除

一、定义一个单链表 struct LNode{ //定义单链表节点类型ElemType data; //存放节点数据元素struct LNode *next; //指针指向下一个结点 }; //增加一个新节点&#xff1a;在内存中申请一个结点所需空间&#xff0c;并用指针p指向这个结点 struct LNode * p (struc…

Nextjs官方文档异疑惑

第一个区别&#xff1a;不同的页面对应的路由器设定&#xff01; 继续用 app 路由器&#xff08;推荐&#xff0c;Next.js 未来主流&#xff09; 路由规则&#xff1a;app 目录下&#xff0c;文件夹 page.tsx 对应路由。例如&#xff1a; app/page.tsx → 对应 / 路由&#xf…

突破AI模型访问的“光标牢笼”:长上下文处理与智能环境隔离实战

> 当AI模型面对浩瀚文档却只能处理零星片段,当关键信息散落各处而模型“视而不见”,我们该如何打破这堵无形的墙? 在自然语言处理领域,**输入长度限制**(常被称为“光标区域限制”)如同一个无形的牢笼,严重制约了大型语言模型(LLM)在真实场景中的应用潜力。无论是分…