当前位置: 首页 > news >正文

小白入职 必要熟悉 Git / tortoiseGit 工具

1.安装Git

1.1 了解Git

  • Git是分布式版本控制系统,没有中央服务器的
  • 每个人的电脑就是一个完整的版本库,工作时无需联网
  • 可多人协作,只需把各自的修改推送给对方,就可以互相看到对方的修改了

分布式版本控制工具管理方式: 

1.2  git 工作流程

一般工作流程如下:

  1. 从远程仓库中克隆 Git 资源作为本地仓库
  2. 从本地仓库中checkout代码然后进行代码修改
  3. 在提交前先将代码提交到暂存区
  4. 提交修改,提交到本地仓库(保存修改的各个历史版本)
  5. 在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库

2.TortoiseGit 软件安装

2.1 tortoisegit的介绍:

  • 完全兼容Git的命令行操作
  • 可以用于执行常规任务,如提交、查看日志、差异比较、创建分支和标签、创建补丁
  • 它还支持与远程仓库的交互,如推送(push)和拉取(pull)操作

2.2 下载

官方下载地址:https://download.tortoisegit.org/tgit/ 

3.安装中文语言包

安装完一般要重启一下电脑

4.使用 git 管理文件版本 

4.1 创建版本库(repository)

  1. 版本库又名仓库,英文名repository
  2. 可简单理解成一个目录,其中每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”
  3. 由于git是分布式版本管理工具,所以git在不需要联网的情况下也具有完整的版本管理能力

4.2 创建一个版本库

首先,创建一个空目录(D:\Work\git\repository)。在当前目录中点击右键中选择Git Bash来启动

概念:

  • 版本库:“.git ” 目录就是版本库
    • 将来文件都需要保存到版本库中
  • 工作目录:包含“.git”目录的目录
    • 也就是 .git 目录的上一级目录就是工作目录
    • 只有工作目录中的文件才能保存到版本库中

另外一种创建版本库的方式,使用TortoiseGit

4.3 设置用户信息4.4 github 上创建share仓库

仓库名:share

 echo "# share" >> README.mdgit initgit add README.mdgit commit -m "first commit"git branch -M maingit remote add origin https://github.com/heheda102410/share.gitgit push -u origin main

(1)从远程仓库中克隆 Git 资源作为本地仓库 

从URL: https://github.com/heheda102410/share.git 克隆现有的版本库

(2)从本地仓库中checkout代码然后进行代码修改 

在本地创建新的分支,叫做branch_01:

  • 命令是:git checkout -b branch_01 

可以从下图看出创建分支的同时,也切换到了branch_01分支了 

注意:使用git checkout命令切换分支的时候,工作区里未受控的文件不变(比如新文件,以及未add的文件更新)

(3)在提交前先将代码提交到暂存区

(4)提交修改,提交到本地仓库(保存修改的各个历史版本)

 git add .git commit -m "创建新分支branch_01初始状态"

 git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支

Git跟踪并管理的主要目标是修改变更,而非单个文件本身,比如,某次 commit是多个文件的更新,包括新建文件。

注意:如果文件被修改了,但是没有add,是不会被commit到存储库中的

 

当然这个步骤可以用tortoiseGit 来完成同样的效果:

首先,先回退一下版本,Git允许我们在版本的历史之间穿梭,使用

  • 命令git reset --hard commit_id

我们想知道commit_id ,可以从tortoiseGit查看,也可以在git bash中用命令查看:

SHA-1: 6f0033c564c9e788416d39a64469372f37e36320
SHA-1: b7e41e1596094a36c85324cb7941afe221dd0fd8
  • 要重返未来,用git reflog【另外一条类似命令为:git log --pretty=oneline】查看命令历史,以便确定要回到未来的哪个版本 
$ git log --pretty=oneline

命令git reset --hard commit_id$ git reset --hard b7e41e1596094a36c85324cb7941afe221dd0fd8

之前:

回退commit后:

现在,我们已经体验了一把回退版本的美妙,我们继续来探索其他的命令是什么功能吧!

首先,先回到我们新建了一个文本heheda_test.txt的版本

执行完以上命令后,已经出现了有heheda_test.txt这个版本了。接着在当前目录中,新增两张图片,然后在空白处右键点击tortoiseGit“Git commit(提交)...”

  • HEAD指向的版本就是当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100 
上一个版本就是HEAD^$ git reset --hard HEAD^

上上一个版本就是HEAD^^$ git reset --hard HEAD^^

上上一个版本就是HEAD^^$ git reset --hard HEAD~2

  • 使用git log --graph --pretty=oneline --abbrev-commit可以以图形的方式查看分支提交记录。比如:
git log --graph --pretty=oneline --abbrev-commit

多条commit合并成一条

$ git push --set-upstream origin branch_01

再创建一个分支,branch_02

推荐和参考文章:

切换为“合并分支”版本,那就会撤回1个视频

$ git push --force

$ git push --force-with-lease

使用 `-force` 被认为是有害的;了解 Git 的 `-force-with-lease` 命令_--force-with-lease-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/LeviDing/article/details/76789443 

对比branch_01仓库和main仓库,我们可以发现各自的存储内容都不太一样!

Git基础入门二:工作区和暂存区-CSDN博客

Git基础入门三:创建版本库和添加修改文件基本命令_使用git只添加修改文件的命令的是-CSDN博客

Git基础入门四:版本回退(撤销修改)_git clean -xdf 怎么撤回-CSDN博客

Git基础入门五:分支管理_branch 'dev' set up to track remote branch 'dev' f-CSDN博客

Git基础入门六:标签管理(git tag)_git label-CSDN博客

Git基础入门七:Git高级命令之Rebase_rebase是什么意思-CSDN博客

Git的安装和本地仓库基本操作使用详解(一)_tortoisegitplink,basedonputty;optimizedfortortoise-CSDN博客

如何使用TortoiseGit指北,一篇讲清 - 知乎 (zhihu.com)

相关文章:

小白入职 必要熟悉 Git / tortoiseGit 工具

1.安装Git 1.1 了解Git Git是分布式版本控制系统,没有中央服务器的每个人的电脑就是一个完整的版本库,工作时无需联网可多人协作,只需把各自的修改推送给对方,就可以互相看到对方的修改了 分布式版本控制工具管理方式&#xff…...

春秋CVE-2022-23906

简介 CMS Made Simple v2.2.15 被发现包含通过上传图片功能的远程命令执行 (RCE) 漏洞。此漏洞通过精心制作的图像文件被利用。 正文 1.进入靶场2.进入登录界面,弱口令admin/123456 3.进入后台,文件上传点 4.上传一句话木马图片 5.复制图片&#xf…...

JavaFX安装与使用

前言 最近学习了javafx,开始时在配置环境和导包时遇到了一些麻烦,关于网上很多方法都尝试过了,现在问题都解决了,和大家分享一下我是怎么实现javafx的配置,希望大家可以通过这个方法实现自己的环境配置! 🙈个人主页: 心.c 🔥文章专题:javafx &#x1f49…...

漫画|基于SprinBoot+vue的漫画网站(源码+数据库+文档)

漫画网站 目录 基于SprinBootvue的漫画网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大…...

python-项目实战

项目实战 1.外星人入侵小游戏 2.数据可视化 3.web应用开发 一、外星人入侵小游戏 需求: 开发大型项目时,做好规划后再动手编写项目很重要。规划可确保你不偏离轨道,从而提高项目成功的可能性。 在游戏《外星人入侵》中,玩家控制着一艘最…...

单片机原理及技术(一)—— 认识单片机(C51编程)

目录 一、单片机概述 1.1 什么是单片机 1.2 单片机的发展历史 1.3 单片机的特点 1.4 MCS-51 系列与 AT89S5x 系列单片机 1.4.1 MCS-51 系列单片机 1.4.2 AT89S5x 系列单片机 1.5 各种衍生品种的8051单片机 1.5.1 STC 系列单片机 1.5.2 C8051Fxxx 系列单片机 一、单片…...

白嫖的在线工具类宝藏网站清单,快点击进来收藏一波

简单整理了一下自己日常经常使用的10个免费工具网站,建议点赞关注收藏,快点分享给小伙伴们! 1.奶牛快传:用户体验更好的网盘工具。 https://cowtransfer.com/ 今年开始使用的一款网盘工具,和百度网盘类似,叫奶牛快传,如…...

【机器学习300问】97、机器学习中哪些是凸优化问题,哪些是非凸优化问题?

在机器学习的领域中,多数模型的参数估计问题实质上可以转化为优化问题。鉴于机器学习模型的多样性,不同的模型会对应着不同的损失函数,进而形成各具特色的优化问题。了解优化问题的形式和特点,对于提升我们求解模型参数的效率和准…...

两种盒模型

在CSS中,有两种主要的盒模型(Box Model),它们决定了元素的尺寸计算方式: 标准盒模型(W3C Box Model) 在标准盒模型中,元素的总宽度和总高度分别由以下几个部分组成: Cont…...

【C++】类型转换

目录 前言一、C语言中的类型转换二、为什么C需要四种类型转换三、C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast3.5 RTTI 前言 本篇文章讲解的是C中对于C语言类型转换做出的一些更好的规范问题,同时也保证了在一些特殊场景下进…...

Redis RDB 持久化问题

前言 Redis 是内存数据库,它将自己的数据储存在内存里面,如果不想办法将储存在内存中的数据保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据也就没了。 因此,Redis 提供了 RDB 持久化功能,这个功能…...

windows 下nginx常用命令

1、启动,目录cmd,后 start nginx.exe 2.重新加载 nginx -s reload 3.查看状态 tasklist /fi “imagename eq nginx.exe” 4.关闭 nginx -s quit...

xjoi题库一级1-10段题解(c语言版)

xjoi题库一级一段 xjoi题库一级二段 xjoi题库一级三段 xjoi题库一级四段 xjoi题库一级五段...

1.int 与 Integer 的简单区别

蓝桥杯刷题从此开始: 第一题就是两个数的和,个人看来主要考察 int与integer 的区别; 这是我提交的答案,竟然会报错: import java.util.*; //输入A、B,输出AB。 class add {public static void main(String …...

单片机原理及技术(二)—— AT89S51单片机(一)(C51编程)

目录 一、AT89S51单片机的片内硬件结构 二、AT89S51的引脚功能 2.1 电源及时钟引脚 2.2 控制引脚 2.3 并行 I/O口引脚 三、AT89S51的CPU 3.1 运算器 3.1.1 算术逻辑单元(ALU) 3.1.2 累加器A 3.1.3 程序状态字寄存器(PSW&#xff09…...

某方protobuf闲谈

问题 当我们去看某方的时候,搜索了关键词svm,然后通过抓包查看,请求的Request Payload是一串看不懂的乱码,并且返回的数据也大部分是乱码 观察请求的Content-Type是application/grpc-web+proto,没错数据的传输是protobuf的形式了 protobuf的相关概念和原理,网上有很多教…...

专为汽车内容打造的智能剪辑解决方案

汽车内容创作已成为越来越多车主和汽车爱好者热衷的活动。然而,如何高效、便捷地将行车途中的精彩瞬间转化为高质量的视频作品,一直是困扰着广大用户的一大难题。美摄科技凭借其深厚的视频处理技术和智能分析能力,推出了专为汽车内容记录而生…...

【C语言】二叉树的实现

文章目录 前言⭐一、二叉树的定义🚲二、创建二叉树🎡三、二叉树的销毁🎉四、遍历二叉树1. 前序遍历2. 中序遍历3. 后序遍历4. 层序遍历 🌲五、二叉树的计算1. 计算二叉树结点个数2. 计算二叉树叶子结点的个数3. 计算二叉树的深度4…...

在ubuntu22.04里网站源码连不上mysql数据库

在ubuntu22.04里网站源码连不上mysql数据库。后来找到了原因。 连不上的时候有报错信息: ERROR 1698 (28000): Access denied for user rootlocalhost 用在网上搜索该报错信息,找到了两篇有用的文章,用这两篇文章里的处理方法解决了问题。 …...

博客说明 5/12~5/24【个人】

博客说明 5/12~5/24【个人】 前言版权博客说明 5/12~5/24【个人】对比最后 前言 2024-5-24 13:39:23 对我在2024年5月12日到5月24日发布的博客做一下简要的说明 以下内容源自《【个人】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

macOS 终端智能代理检测

🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...

JDK 17 序列化是怎么回事

如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...