TortoiseGit入门教程(个人用 存在问题)
TortoiseGit入门教程(个人用 可能存在问题)
git是什么
是版本控制系统 是一个记录某个文件的各个变动版本并有详细注释 如下面表格就是记录了 修改人 修改时间修改内容 这样在我们需要找到一些历史版本的时候就清晰明了
版本 | 文件名 | 用户 | 说明 | 日期 |
---|---|---|---|---|
1 | service.doc | 张三 | 删除了软件服务条款5 | 7/12 10:38 |
2 | service.doc | 张三 | 增加了License人数限制 | 7/12 18:09 |
3 | service.doc | 李四 | 财务部门调整了合同金额 | 7/13 9:51 |
4 | service.doc | 张三 | 延长了免费升级周期 | 7/14 15:17 |
老师使用word的例子也很形象的描述了git
我们用word写报告 随着情况变化 有些地方需要再调整 但是原来的东西未必之后不会用上 所有我们就另存为 一个新word 名字叫 报告2020年10月9日 12:08:46.word 后面又遇到更多的情况 为了安全自然继续另存为 结果到最后就会出现这样
版本控制系统的分类
- 集中式 如cvs svn
- 分布式 git
集中式和分布式的区别
集中式是需要一台服务器专门存储文件和历史备份 每次程序员都需要从服务器上下载代码下来 修改完毕再上传上去 一切的操作实际上都围绕这台服务器来进行
分布式是没有一台服务器专门存储文件和历史备份 或者说 程序员每个人的电脑都是一个存储文件和历史备份的服务器(本地仓库) 需要更新修改和备份 电脑之间相互推送下自己的修改和备份给其他人就可以了 实际上很多时候会选出一个电脑(或者是gitub或者gitee)作为远程仓库 在这个平台上只是负责存储各个的备份
安装配置git和TortoiseGit
- git下载地址 windows下安装 下一步下一步就好 没什么要说的
- git和TortoiseGit的区别:Git本身就是Git,然后Github for windows和TorToiseGit都是Git的一个Gui包装(理解为是git的一个插件) 一般情况下我们都是通过TortoiseGit的图形界面 来操作git操作 而不是git本身 或者直接git命令行
- TortoiseGit下载(git小乌龟) 下载TortoiseGit本体和简体中文语言包 自然是先装本体然后再安装语言包
- Git小乌龟的安装及使用
- 更详细的可以看开头的教程链接 包含安装期间的注意事项和初始配置 语言包的安装等等 2020黑马Git教程(2小时从入门到精通)【已完结】 的第三节 有完整的流程
git的四个区域和相互关系
-
workspace 工作区
- 作用:我们编辑修改代码的地方
- 位置:在生成git版本庫的指定文件夾下 除了隱藏的.git目錄 剩下的都是工作區
-
reposiroty 本地仓库(版本库)
- 作用:自然是存储文件和对应的各个版本快照 还有一些其他的内容
- 位置:在自己的机器 就是整个的.git隐藏目录 在index暂存区 commite 到本地仓库存储
- 包含的内容:
- index暂存区(stage)
- 分支
- HEAD指针 默认指向master分支
- 各个文件快照
-
index 暂存区
- 作用 :版本库的一部分 工作区中修改完毕后 git add命令把代码送到暂存区存放 等到这批修改都放入暂存区再统一的用commit压入到本地仓库 不过在TortoiseGit中暂存区的存在感想当的薄弱 因为提交命令是add+commit 提交直接到了本地仓库 省略了中间过程
- 位置:实际是放在.git目录下的index文件 该文件会记录该暂存区所记录的文件及变动
- 查看:用git status 来查看当前暂存区的内容
-
remote 远程仓库
-
作用:本地仓库使用git push来提交信息到这里 也可以pull从远程仓库拉取
-
位置:可能是其他电脑 也可以是github 或者gitee等等
-
-
本地闭环结构和之间的相互关系
-
完整的闭环结构
git文件的4种状态和三种图标
工作区下的三种文件图标:
- 红色叹号表示 文件有变动 而且没有被commit
- 蓝色加号表示已经添加添加到了暂存区 但是没commit
- 绿色对勾表示文件已经被commit
状态:
-
Unknown:新增的文件,也不在版本库
-
Added:新增的文件,在版本库
-
Modified:文件修改,在版本库
-
Missing:文件被删除,在版本库有快照 但是工作区下已经删除没了
基本流程
- 从远程仓库拉取最新变动的工程到本地仓库
- 在工作区对文件添加、修改文件;
- 将修改后的文件放入暂存区域;
- 将暂存区域的文件提交到本地仓库;
- 将本地仓库的修改推送到远程仓库。
TortoiseGit下的基本操作(非命令行)
-
创建本地仓库
- 打开TortoiseGit:注意TortoiseGit在windows下是附着在资源管理器上的 只需要打开资源管理器 然后鼠标右键选择TortoiseGit的操作就可以进行对应操作了
- 创建本地仓库流程:选择要创建本地仓库的目录- 鼠标右键 -选择Git在这里创建版本库 - 弹出窗口千万不要勾选制作纯版本库- 点击确定 - 弹出提示初始化空本地仓库的窗口 - 创建成功
- 查看本地版本库的存储的文件和目录:选中版本库目录 - 鼠标右键 - TortoiseGit - 版本库浏览器 -- 可以查看目前在版本库中存储的文件
- 克隆远程仓库到本地生成本地仓库:
- 注意本地文件夹不能有.git目录 不然不会出现克隆选项
- 从github或者gitee上 克隆下载 按钮 点击 找到 链接 是https还是ssh可以选择 复制链接
- 本地文件夹 - 右键 - 克隆 - 窗口里面填写 复制的链接 设置下载的本地文件夹 点确定就行
-
添加文件到本地仓库
- 添加的文件要求:该文件必须在本地版本库目录内才可以添加
- 添加文件流程:首先把文件放置到本地版本库目录内 - 鼠标右键 -TortoiseGit - 添加 - 加入完成窗口 - 点击确定按钮 (这里点确定只是把文件送到暂存区 如果点击了提交了才直接送到本地仓库)
-
修改文件并提交到本地仓库
-
继续提交文件到本地仓库:接上面的操作 选中文件 - 鼠标右键 - 提交 XXXX - 出现提交窗口 - 写上该文件的日志信息 - 最好勾选 作者和日期 - 点击提交按钮 - 点击关闭按钮即可
-
查看某个文件的历史快照:选中该文件 - 鼠标右键 - TortoiseGit - 显示日志 - 可以查看过往的历史快照
-
-
将工程整个添加到本地仓库
- 忽略某些工程文件 不添加到本地仓库:
- 忽略某些文件目录的原因:要添加某个工程到本地仓库 工程里面的有些私人文件或者文件夹是不能添加到本地仓库的 因为很可能后面上面上传到远程仓库被大家都看到 泄露隐私
- 忽略文件目录流程:进入工程目录内 找到要忽略的文件或者目录 鼠标右键 - TortoiseGit - 添加到忽略列表 - 选择文件或者目录名而不是扩展名 - 出现忽略窗口 - 一般都选择递归忽略和忽略文件放到文件目录所在目录 - 点击确定 - 在本地就会生成一个忽略列表文件来记录哪些是被忽略的 - 注意 这个自动生成的忽略文件也要提交到本地仓库 不要忘记了
- 工程文件夹添加进本地仓库:
- 把工程文件夹复制到本地仓库目录里面 因为只有到了本地仓库目录 才能把他们添加到本地仓库 否则连添加都没法添加
- 设置忽略文件或者目录 生成忽略文件
- 选中工程目录 - 鼠标右键 - TortoiseGit - 添加 - 添加整个工程文件夹到暂存区 然后根据需要提交到本地仓库 即可
- 忽略某些工程文件 不添加到本地仓库:
-
删除本地仓库的文件
-
从版本库中彻底删除文件: 在资源管理器中直接删除或者TortoiseGit下的删除 然后把这改动提交到本地仓库就行
在版本库目录下 - 鼠标右键 - GIt提交 master - 出现提交窗口 - 窗口下方有文件呈现缺失状态 勾选它- 写入删除日志 - 提交 - 即可从版本库中完全删除
-
误删文件但是想还原:在版本库目录下 - 鼠标右键 - TortoiseGit - 还原 其实是从本地仓库的该文件的历史快照还原了一下而已
-
删除版本库里面的该文件对应的历史快照 但是不删除本地文件:选中该文件 - 鼠标右键 - TortoiseGit - 删除并保留本地副本 然后再 鼠标右键 - GIt提交 master - 出现提交窗口 - 窗口下方有文件呈现缺失状态 勾选它- 写入删除日志 - 提交 -
-
-
查看文件的历史快照和还原指定版本
-
快速找到需要的历史快照:日志信息窗口的最上部那行 可以选择提交时间段 备注关键字 作者名 标签等等很多条件查询
-
查看历史快照的文件内容和文件变动 :日志信息窗口 - 选中历史快照 - 右键 - 和工作副本比较 - 就可以看到历史快照的该文件和当前工作区的对应文件的比较 文件变动 日志信息窗口 - 选中历史快照 下面是涉及到的文件变化列表
-
对比不同的历史快照的文件内容差异: 日志信息窗口-按住 Ctrl -> 选中两个历史版本 -> 鼠标右键 -> 比较版本差异 - 出现比较差异窗口 下面双击文件名 就可以查看详细的对比;
-
还原指定历史版本(版本回溯): 选中该文件 - 鼠标右键 - TortoiseGit - 显示日志 - 选择你要回溯的历史快照-- 右键 - 重置master到此版本 - 重置窗口 - 选择硬重置hard选项 ( 注意的是 这个选择会让工作区的文件和结构也会返回历史快照的状态 会覆盖当前的工作区文件内容 如果有需要备份当前工作区的文件内容 以防万一) - 点确定 - 还原指定历史版本完成(临时贮藏本地文件 :这里临时备份下工作区文档 可以使用 鼠标右键 - TortoiseGit - 贮藏更改 - 等到还原完毕了 再 鼠标右键 - TortoiseGit -弹出贮藏 - 就可以恢复工作区的原来内容了)
-
还原历史快照的操作日志的查看: 鼠标右键 - TortoiseGit 显示引用记录 可以查看
-
本地仓库还原历史版本对远程仓库推送的影响:因为远程仓库是最新的 本地仓库还原到老版本 把本地老版本推送到远程仓库的最新版本 自然会失败 如果想执意把远程仓库更新到本地的老版本 不要使用同步窗口来推送 用 在版本库目录下 - 鼠标右键 - TortoiseGit - 推送 出现推送界面勾选 强制 已知变更 (意思就是强制推送 强制让远程仓库更新到本地还原的那个版本)- 确定 即可 但是要慎用 因为会覆盖掉远程仓库的数据
-
-
推送本地仓库到远程仓库 以gitee为例
-
创建远程仓库之gitee
- 注册gitee账号 登录进入
- 创建远程仓库 右上有+号 点开 - 选择 新建仓库- 输入你要创建的版本库名字和版本库描述信息 - 选择public 如果选择private会收费毕竟违背开源精神 不要勾选任何预置文件 比如readme之类的统统不要 要一个干净的版本库 -创建
- 查看远程仓库 登录进来右上最右边的三角点开 - 个人主页 - 仓库
-
选择连接方式配置连接远程仓库
-
常见的ssh https方式介绍
-
ssh的作用:本身是一个网络协议 主要是实现安全远程登录 安全的通讯协议 基于密钥的安全 需要创建2个 私钥加密 公钥解密 公钥私钥的知识 私钥保留下来 不要发送给别人 非对称加密
-
ssh的基本原理:图解SSH原理
-
https的作用:是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性
-
https和ssh的区别:
1、前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
2、https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
-
-
https方式连接远程仓库(推荐简单直接 ssh配置有点复杂)
- 登录gitee获取 账号密码 进入要连接的 远程仓库 右侧的 橘色按钮 克隆下载 点击可以查看到https方式连接的url 复制
- 鼠标右键 - TortoiseGit - 设置 - 选择git左侧栏 - 输入用户和email - 选择 远端 - 输入远端名 和刚才复制的url 因为不是ssh 无需设置密钥 要标签 点确定 尝试连接 第一次连接会要gitee的账号和密码
-
ssh方式连接远程仓库
- 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC 详细流程直接看这个
- 用putty生成密钥对 获得公钥私钥
- 在gitee上传公钥 获取ssh地址
- 在tortository上配置用户名 email 和 远端的名字 连接地址 和对应的putty的私钥文件
- 配置好后开始推送尝试 注意第一次推送会要gitee的账号和密码 记得写好 一旦报错 可以直接控制面板找凭证管理器 里面找到gitee的账号密码信息 修改为正确的就行
-
-
推送到远程仓库
-
没什么说的 鼠标右键 - TortoiseGit - 推送 - 窗口里面 选择要推送的本地分支 一般都是master 下面还要选择 远端 -点确定
-
同步界面来推送 鼠标右键 - 同步 (推荐使用这个来) 主要是和远程仓库进行同步操作的 包含了 拉取 获取 推送 提交 查看日志 历史文件比较 查看等待提交 等待推送 的内容等等功能 是一个综合性的界面 非常值得仔细研究
-
-
常见遇到的问题
-
推送失败的常见原因图示 其实很多时候拉取失败也是类似的问题 代码冲突也和这个沾边
-
一般都是推送失败的情况 可以把失败的反馈 搜索下 基本就有解决办法 比如本地仓库还原到了历史快照 但是远程仓库却还是最新的 会出现无法推送到远程仓库 这类情况就强制推送 推送界面勾选 强制 已知变更 然后推送 这就是最终手段 会覆盖远程仓库的数据 慎用
-
比较常见的推送失败处理流程: 先贮藏下当前工作区的改动(鼠标右键 - TortoiseGit - 贮藏更改) 然后从远程仓库拉取一下最新的的版本库- 然后再弹出贮藏 - 可能会出现代码冲突 - 冲突文件上编辑冲突 - 查看冲突和解决冲突 - 保存标记冲突解决 - 提交 - 再推送**到远程仓库 具体细节可以看代码冲突部分
-
-
-
拉取远程仓库到本地仓库
- 鼠标右键 - TortoiseGit - 拉取 或者 鼠标右键 - 同步 使用同步界面拉取
- 推荐拉取 因为拉取其实是2个命令 一个是fetch 一个是merge(合并) 而获取fetch只是单单获取而已 但是拉取有点不好的是会自动把同名文件的不同内容自动合并到一起了 从而产生代码冲突
- 拉取失败 搜索错误关键字吧 或者也是用 贮藏的路子试试
-
出现代码冲突问题的解决
-
其他冲突可以自行百度必应 而且反馈的错误信息并不难懂
-
代码冲突基本出现在多人同时对一个项目进行操作的情况下 一般出现在推送 拉取 还原历史快照 本质上是同一个文件被多个人同时修改而内容产生了差异导致TortoiseGit不知道如何处理这些差异
-
代码冲突测试(人工模拟一次代码冲突)
-
直接在gitee上修改1,txt文件内容为0123
0 1 2 3
-
在本地工作区的1.txt文件内容改为0224
0 2 2 4
-
然后在尝试从gitee上拉取工程到本地仓库 结果是
随后有一个弹窗提示
-
如何找到这个冲突文件呢。鼠标右键 - TortoiseGit - 解决冲突(不是编辑冲突) - 出现冲突窗口 列表里面就显示当前出现代码冲突的文件 - 双击文件
-
官方处理流程
-
冲突窗口双击冲突文件打开默认的差异对比工具
-
切换差异部分来编辑合并后的1.txt内容 直到满意为止 这里把合并的内容随便改为了0 2 4 8
-
点击标记为已解决 然后在点击保存 关闭 对比工具
-
再次提交 这次的合并修改操作 出现一个意外提示 提示强调这次的提交涉及到代码合并 千万确定好了再提交之类的balabala..... 点击确定 - 重写提交的日志信息 - 提交到本地仓库
-
顺便推送到远程仓库就好
-
-
自己处理流程 (官方流程很好 但是需要用到官方工具来处理冲突 使用起来不太顺手 还是使用语言对应的编辑工具处理比较好)
-
依然是打开冲突窗口找到冲突文件 在资源管理器里面找到了该文件 用对应的编辑器打开他 这里用notepad演示
-
直接把内容改为我们需要的内容 保存
-
鼠标右键 - TortoiseGit - 解决冲突(不是编辑冲突) - 出现冲突窗口 勾选冲突文件 点击确定 - 点击提交 (这步其实就是设置冲突已解决而已)
-
出现提交窗口和一个提醒当前是合并代码的提交balabala之类的 写提交日志 点提交按钮 - 提交完毕
-
顺便推送到远程仓库 完毕
-
-
-
分支的各种操作 没搞明白 后面再说吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!