Git客户端(TortoiseGit)使用详解

news2024/11/20 18:46:01

1.概述

使用TortoiseGit比直接使用git 客户端和命令实现代码版本管理更为方便,本文根据实际使用情况作一些记录,特别是对于解决冲突的处理。

2.Git安装与配置

下载 Git - Downloads, 可参考Git安装步骤完成Git的安装与配置。

3.TortoiseGit安装与配置

3.1 TortoiseGit介绍

TortoiseGit是TortoiseSVN的Git版本,是一个在Windows系统下使用的Git版本控制客户端。它提供了图形用户界面,操作简单,同时完全兼容Git的命令行操作。

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

3.2 TortoiseGit下载与安装

在官网下载 Download – TortoiseGit – Windows Shell Interface to Git, 以及中文简体语言包

 客户端与语言包的安装方法,一直下一步默认选择,具体做法此处省略。可参考TortoiseGit安装与配置(图文详细)_tortoisegit安装及配置教程-CSDN博客Git客户端TortoiseGit使用 

3.3 TortoiseGit配置

 1. 首先,选定一个存放Git项目的目录,这样管理方便. 如: D:\work , 然后打开到指定目录。

 2. 在空白处点击鼠标右键,可以看到右键菜单中多了几个选项。选择 --> TortoiseGit --> Settings,然后就可以看到配置界面。

 3. 点击General进行简单配置。Language可以切换语言(可以中英文之间切换使用)。不要勾选自动升级的复选框。可能还需要指定 Git.exe 文件的安装路径,  如 "C:\Program Files\Git\bin"。完成后,点击应用,确定关闭对话框。如下所示:

  4、配置右键菜单.。在设置对话框中,点选左边的"Context Menu",设置常用的右键菜单。本人比较常用的是如下选项:

 5. 设置记住密码

  !!!密码会明文保存在 C:\Users\Administrator\.git-credentials 这种文件中, 请小心使用.

  进入设置, 点选左边的Git标签.可以发现,右边可以配置用户的名字与Email信息. 如下图所示:

若在某个本地Git项目下打开配置对话框,那么这个按钮就可用,然后可编辑此项目的一些属性。

点击 “Edit global .git/config(O)”按钮,会使用记事本打开全局配置文件,在全局配置文件中,在后面加上下面的内容:

     [credential]
         helper = store

  完成后保存,关闭记事本,确定即可。

     当你推送项目到GitHub等在线仓库或托管的仓库时,会记住你输入的用户名和密码。

4.TortoiseGit使用

4.1 使用示例

 4.1.1 克隆项目(从仓库获取)

 在工作目录下,如D:\work,空白处右键,选择: Git clone,则会弹出克隆对话框,如下图所示:

在URL中填写项目的访问地址,或者比如从GitHub:https://github.com/goodfeli/adversarial.git

根据项目大小,时间会不一样。克隆完成后,如果没有错误,会给出提示:

 进入克隆下的文件夹中,如D:\work\opt,空白处右键,弹出如下菜单:

 其中,Git Pull是从远端拉取最新的代码,Git Fetch是从远端拉取最新的分支,Git Push是将本地仓库的代码提交到远端

 Git Commit ->”master”,将本地代码提交到本地版本库(默认的分支是master)。

4.1.2 本地代码提交到本地仓库

  创建一个文件,如test.txt, 先add再提交到本地版本库(因为不涉及发送到远端,这个步骤可在离线状态操作)

    

   填写提交备注message(不填写不允许提交),勾选需要提交的文件,点击commit,即可将本地代码提交到本地版本库。出现如下弹框,表示本地提交成功:

  

 其中,提交时,会发现上图中的Status有几种值:

  Unknown:新增的文件,也不在版本库

  Added:新增的文件,在版本库

  Modified:文件修改,在版本库

    Missing:文件被删除,在版本库

注意:提交成功后,本地的test文件的提示符号“”变为绿色的“ 表示修改版本已提交到位。

提交前:       提交后:      

4.1.3 查看log日志

右键选择Git Show Log(这个菜单可以通过上面的的配置出来)。在日志中,可以通过日期、文件名、提交人等等过滤查询。

 通过日志,可以很直观的看到提交相关记录。比如提交人、提交时间、提交了哪些文件等等。这些信息便于以后进行文件对比或者版本对比,甚至版本回滚(后面将会介绍)。

点击test.txt,可以看到本次提交,对test文件进行了哪些操作(也就是添加了一行 Hello World):

 4.1.4 代码提交到远端

   将代码推送(push)到远端,这里演示的是本人的代码托管仓库。

 右键空白处,选择Git Push,出现如下弹框:

这里可以看到是本地哪个版本库提交到远端哪个版本。至此,文件的整个提交过程就完成了。

PS:首先commit提交到本地仓库,然后pull拉取一下合并代码,确保push为最新的版本代码。

4.2 分支管理

上述介绍的都是一些基本用法,使用小乌龟的优势主要是体现在版本控制与分支管理上。下面介绍分支与版本管理。

对于通常的项目开发,比如想新加一个功能进去的时候,可以先新建一个分支,例如名字叫dev-0430,然后在分支中把新功能加上去,如果OK,将代码合并到master分支上,如果新功能失败,还可以回退到master分支上来,在dev-0430写的代码,不至于影响master分支。

4.2.1 查看分支

查看分支,包括查看本地已拉取的分支和远端全部提交的有效分支。对应的就是命令

  1. $ git branch -a #查看所有分支

  2. $ git branch  # 查看本地分支

  3. $ git branch -r #查看远程分支

 方法一:

右键-->TortoiseGit-->Switch/ Checkout 看到的是全部的分支,远端分支前有remotes字样。

方法二:

右键-->TortoiseGit-->Show log,

在打开的窗口中,比如选中左上角master(当前的本地分支),弹出的窗口中heads就是本地已拉取的分支,remotes显示的就是远程的所有分支。

4.2.2 新建与切换分支

1. 选中刚刚拉取的文件夹D:\zzwork\opt, 右键-->TortoiseGit-->Create Branch,如果是在已经建好的另外一个分支开发,则选中Switch/Checkout

2. 在开发目录下右键或选中文件夹D:\zzwork\opt,会发现当前的分支为你新建的dev-0430分支了

 3. 接下来,可以新增具体的功能,比如我们在test.txt文件中再添加一行文字,新增一个文件test2.txt,添加一行文字,内容如下,其中test.txt的图标由“变为了“ ”,表示修改后没有commit,而test2是新增加的,图标是黑色。

 

4. 提交我们的代码到dev-0430分支的本地仓库,具体可参考之前的4.1.2章节关于提交的部分,

提交完成后,图标都变为绿色,表示版本已经commit到位。

5.  如果突然发现该功能有bug,想回到之前的master分支,应该怎么办呢?

右键-->TortoiseGit-->Switch/Checkout,选择master即可。如下图:

 6. 空白处右键,会发现已经切换到master分支了。此时发现test2.txt并没有带过来,再来看看test.txt文件是否回到了从前呢?

 结果显示,无论是修改还是添加,都没有影响master分支上的文件,这就是分支的作用。

4.2.3 分支合并

分支的合并就是我们说的分支merge,如果此时发现dev-0430分支上的功能是有效的,希望能合并到master,又该怎么操作呢?

PS:在合并分支前,一定要确认dev-0430分支上的代码全部提交到本地版本库了.

右键-->TortoiseGit-->Merge,选择被合并的分支,即dev-0430。如下图

点击Ok按钮,会出现下图弹框。弹框中会列出被合并的文件。如下图所示:

自此,我们发现test2.txt文件被合并过来了,打开test文件,发现内容正好是在dev-0430分支上修改的内容。至此,分支合并完成。

PS:分支合并完成后,根据实际需要,可将本地合并的最终版本push到远程分支,具体可参照章节4.1.4执行。

4.2.4 分支删除

分支被合并后并不会被自动删除,如果该分支已经完成它在开发阶段的使命,则可以大胆地将其删除。不过,一般情况下建议保留一段时间再删除。

步骤一:在相应的本地代码库里面 ,点击switch/Checkout/首先切换到比如master分支上(注意如果你想删除dev-0430,首先应切换到别的分支,只要不是dev-0430就行,否则会报错)依次如下:

 步骤二:进入下图的对话框中注意左边的分支目录点选heads是本地的分支 ,选中dev-0430分支,选择删除分支,,弹出对话框点击是,完成了dev-0430的删除。

步骤三:选择remotes远程分支按照同样的步骤执行操作弹出对话框选择是就成功的删除了远程分支。由于上文提到的dev-0430并未实际提交到远端相应分支,所以此处这一步不用执行

步骤四:执行上述步骤后,看一下本地的仓库,发现dev-0430分支已被删除。

4.3 版本管理与对比 

比如本地的某个文件发生了变更,但不确定与已提交的版本中对应文件发生了哪些变更,那么可以右键-->TortoiseGit--> Show -log,选中某个提交的版本,再右键Compare with working tree,

在下面的path路径下选中对应的文件,选中 Compare with working tree(工作区未提交版本),或者Compare with base(已拉取的本地最新未变更版本),就可以在弹出的窗口中左右对比内容

4.4 拉取(pull)远端最新

 此时,我们团队还有另一个成员B,他需要获取我最新修改的内容,该怎么操作呢?

 首先B切换到跟我同一分支,然后右键-->Git Pull,点击确认即可,就可将我修改的内容拉取到他的本地版本库。

PS:其他成员能够拉取到最新的前提时,任何人本地的修改都已经 push 到远端。

4.5 版本回滚

先查看日志:右键-->TortoiseGit--> Show -log,确定想回滚到哪个版本(这时就体现出添加message的好处了吧)

 比如想回滚到创建test.txt文件前,则点击该步操作所对应的message之前的那一个日志(origin/HEAD),然后右键-->Reset “master” to this…,表示将当前master分支上的文件回滚到这个版本,如下图

 选择之后,弹出如下弹框,在Reset Type下选择你回退的类型(通常个人一般选择Hard:Reset working…..),点击OK即可

会发现,此时test.txt和 test2.txt文件都消失了,也就是回退到最初没有作任何修改时,如下图:

4.6 暂存操作

4.6.1 暂存的切换

比如我本地修改了多个文件内容,但是远程仓库上也有人更新了其中部分文件或者全部文件,这个时候,我不想将本地全部修改的文件直接上传至远程仓库,只想更新修改的多个文件里的一部分。

或者比如说我本地临时修改了部分代码,现在还没有修改到位,暂时不方便直接提交版本,但是现在有紧急的事情需要切换分支,那么怎么办呢?这时可以先把本地修改的中间版本暂存起来,

Stash Changes – TortoiseGit

Often, when you’ve been working on part of your project, things are in a messy state and you want to switch branches for a bit to work on something else. The problem is, you don’t want to do a commit of half-done work just so you can get back to this point later. The answer to this issue is the git stash command.

Stashing takes the dirty state of your working directory — that is, your modified tracked files and staged changes — and saves it on a stack of unfinished changes that you can reapply at any time (even on a different branch).

步骤1:在自己的工程项目文件夹下,鼠标右键菜单中选择【Stash changes】

步骤2:弹出的窗口中的Message文本输入框中输入自己需要的描述信息,然后点击OK

步骤3:步骤2后,弹出下图所示的处理界面,等待成功(Success)后,点击Close按钮,关闭该窗口。

步骤4:临时修改的代码暂存完毕,接下来在项目根目录下鼠标右键菜单中选择【Switch/checkout】,可以切换当前的分支,在其他分支上进行处理。

步骤5: 或者鼠标右键菜单中选择【Stash List】查看暂存代码的列表。

步骤6:在处理完成紧急事情后,如果需要再次切换到暂存的版本状态,应该怎么办呢:

鼠标右键菜单中选择【Show-log】,然后stash message信息选中暂存的版本,在下面的path中选中对应版本的,[Diff with parent],就能自动选中所有需要回退的代码版本

然后选中后,右键【Revert to this version】,在弹出的窗口点击【确定】就能切换到之前暂存的版本代码。

4.6.2 暂存的合并

如果本地未完成版本已经暂存了,且添加了相应的message,现在需要先暂时放置暂存的临时版本,需要把当前的代码拉取到最新版本,应该怎么办呢?

由于当前的暂存版本没有有效提交,直接拉取最新代码进行本地合并,势必可能出现合并冲突,为了版本的管理方便起见,可以先按照上述步骤回退到一个之前最新的有效提交版本。

然后在这个有效版本基础上,

4.6.3 更新项目到本地

采用拉取/pull命令更新最新的项目到本地。

方法一:

pull命令用于从远程获取代码并合并本地的版本。本地没有修改时可直接pull,如果存在修改,需要先commit后,再pull拉取合并(否则会出现失败或者本地修改丢失的情况)。

方法二:

1. 提交或暂存本地更改(如果有必要)。

2. 右键点击仓库的文件夹,选择"TortoiseGit" -> "获取(Fetch)"。

3. 在获取对话框中,点击"确定"。

4. 右键点击仓库的文件夹,选择"TortoiseGit" -> "重置(Reset)"。

PS:如果只有1,2,3步骤,并不能通过fetch拉取最新代码,而是还需要有reset

4.7 解决冲突

对于实际开发过程中,经常涉及在多个分支之间切换与合并,会有可能出现版本冲突导致提交不成功,下文介绍几种常见情况。

4.7.1 同一分支开发

通常情况下开发需要在本地新建的dev分支上进行,但有时版本的快速迭代时期,比如项目组多个成员在指定的时间内反复提交多个改进版本,那么可能就会出现远程的分支与本地分支相同,多人在各自本地开发的分支也是相同的,那么将如何保证版本的有效提交与管理呢?

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

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

相关文章

【最大公约数 排序】2344. 使数组可以被整除的最少删除次数

本文涉及知识点 最大公约数 排序 LeetCode2344. 使数组可以被整除的最少删除次数 给你两个正整数数组 nums 和 numsDivide 。你可以从 nums 中删除任意数目的元素。 请你返回使 nums 中 最小 元素可以整除 numsDivide 中所有元素的 最少 删除次数。如果无法得到这样的元素&a…

Java设计模式 _结构型模式_组合模式

一、组合模式 1、组合模式 组合模式(Composite Pattern)是这一种结构型设计模式。又叫部分整体模式。组合模式依据树形结构来组合对象,用来表示部分以及整体层次关系。即:创建了一个包含自己对象组的类,该类提供了修改…

校园二手|基于SprinBoot+vue的微信小程序的校园二手平台(源码+数据库+文档)

校园二手平目录 目录 基于SprinBootvue的微信小程序的校园二手平台 一、前言 二、系统设计 三、系统功能设计 1搜索功能、分类功能测试 2商品购买功能测试 3用户注册功能测试 4商品信息管理功能测试 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…

【网站项目】木里风景文化管理平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

电脑装了两个Win10系统,怎么修改其名称方便识别?

前言 有小伙伴在上一期的双系统教程上留言说怎么修改双系统引导时候显示的名称 不然看起来两个系统好像都没啥分别,如果是Windows10Windows11的方案还好说,但如果是两个Windows10或者是两个Windows11,有时候还真的很不好分辨。 万一想要启动…

【stomp 实战】Spring websocket 用户订阅和会话的管理源码分析

通过Spring websocket 用户校验和业务会话绑定我们学会了如何将业务会话绑定到spring websocket会话上。通过这一节,我们来分析一下会话和订阅的实现 用户会话的数据结构 SessionInfo 用户会话 用户会话定义如下: private static final class Sessio…

第三节课,功能2:开发后端用户的管理接口-- postman--debug测试

一、如何使用postman 网址: https://www.postman.com/downloads/ 【Postman小白教程】五分钟学会如何使用Postman~_哔哩哔哩_bilibili postman安装使用_bowser agent在postman哪里-CSDN博客 二、下载后 登录,开始测试 2.1 关于postman 报错&#…

IOT-9608I-L 的GPIO应用

目录 概述 1 GPIO接口介绍 2 板卡上操作IO 2.1 查看IO驱动 2.2 使用ECHO操作IO 2.2.1 端口选择 2.2.2 查看IO 2.2.3 echo操作IO 3 C语言实现一个操作IO的案例 3.1 功能介绍 3.2 代码实现 3.3 详细代码 4 测试 测试视频地址: IOT-9608I-L的一个简单测试&a…

探索APP分发的新趋势 - 内容包括小猪APP分发平

APP分发探索APP分发的新趋势 - 内容包括小猪APP分发平台的重要性 APP分发是移动互联网的核心环节探索APP分发的新趋势 - 内容包括小猪APP分发平台,它链接探索APP分发的新趋势 - 内容包括小猪APP分发平台了开发者和用户探索APP分发的新趋势 - 内容包括小猪APP分发平…

区块链 | 由外部实体导致的 NFT 安全问题

🦊原文: Understanding Security Issues in the NFT Ecosystem 🦊警告: 本文只记录了原文的第 6 节。 1 问题描述 NFT 所指向的数字资产(图片、视频等)必须是可以访问的,这样 NFT 才具有意义…

牛客网刷题 | BC70 计算单位阶跃函数

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi最近学习了信号…

慧言AIVoceChat实现在线客服及社区频道

原文链接:小回博客 慧言AI&VoceChat实现在线客服及社区频道 一、VoceChat 简介 官网:https://voce.chat VoceChat 是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上,部署简单,很少需要维护…

VS2022 .Net6.0 无法打开窗体设计器

拿Vs2022 建了个Demo&#xff0c;运行环境是net6.0-windows&#xff0c;无论双击或是右键都打不开窗体设计器 打开项目目录下的*.csproj.user <?xml version"1.0" encoding"utf-8"?> <Project ToolsVersion"Current" xmlns"htt…

变电站综合自动化系统:Modbus-PLC-645转IEC104网关方案

前言 电力行业作为关系国计民生的重要基础产业&#xff0c;是关系千家万户的公用事业。但是要做好电力行业安全保障工作的前提&#xff0c;是需要对应的技术人员详细了解电力工业使用的系统、设备以及各类协议的安全特性&#xff0c;本文将主要介绍IEC 104协议的定义和钡铼技术…

动手学深度学习——softmax分类

1. 分类问题 回归与分类的区别&#xff1a; 回归可以用于预测多少的问题&#xff0c; 比如"预测房屋被售出价格"&#xff0c;它是个单值输出。softmax可以用来预测分类问题&#xff0c;例如"某个图片中是猫、鸡还是狗&#xff1f;"&#xff0c;这是一个多…

Springboot+Vue项目-基于Java+MySQL的入校申报审批系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Tomact安装配置及使用(超详细)

文章目录 web相关知识概述web简介(了解)软件架构模式(掌握)BS&#xff1a;browser server 浏览器服务器CS&#xff1a;client server 客户端服务器 B/S和C/S通信模式特点(重要)web资源(理解)资源分类 URL请求路径(理解)作用介绍格式浏览器通过url访问服务器的过程 服务器(掌握)…

Python | Leetcode Python题解之第57题插入区间

题目&#xff1a; 题解&#xff1a; class Solution:def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:left, right newIntervalplaced Falseans list()for li, ri in intervals:if li > right:# 在插入区间的右侧且无交集…

ASP.NET数据存储与交换系统设计

摘 要 该系统以Microsoft Visual Studio 2003作为开发工具&#xff0c;选用SQL Server 2000数据库来实现数据存储&#xff0c;并设计开发了一种基于B/S模式的数据存储与交换系统。该系统完成了用户注册管理、后台管理和用户空间管理功能&#xff1b;为每个用户提供了个人的存…

企业家必须提升演讲口才的原因(3篇)

企业家必须提升演讲口才的原因&#xff08;3篇&#xff09; **篇&#xff1a;企业家必须提升演讲口才的原因——建立品牌影响力 一、引言 在当今竞争激烈的市场环境中&#xff0c;企业家作为企业的灵魂和代表&#xff0c;其个人形象和品牌影响力对于企业的成功至关重要。而演…