跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

TortoiseGit 客户端使用详解

TortoiseGit 在 Windows 下的安装配置及核心功能使用。内容包括 Git 环境搭建、TortoiseGit 设置(如密码保存、右键菜单)、基本操作(克隆、提交、拉取、推送)、分支管理(新建、切换、合并、删除)、版本回滚、暂存操作以及冲突解决流程。旨在帮助用户通过图形化界面高效进行代码版本控制。

月光旅人发布于 2026/3/29更新于 2026/7/2159 浏览
TortoiseGit 客户端使用详解

1. 概述

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

2. Git 安装与配置

下载 Git 官方安装包,完成 Git 的安装与配置。

Git 安装后,涉及到的主要命令可视化如图所示。

[图示:Git 安装后的主界面]

3. TortoiseGit 安装与配置

3.1 TortoiseGit 介绍

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

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

3.2 TortoiseGit 下载与安装

在官网下载 TortoiseGit 及中文简体语言包。

[图示:TortoiseGit 下载页面]

客户端与语言包的安装方法,一直下一步默认选择即可。

3.3 TortoiseGit 配置

  1. 首先,选定一个存放 Git 项目的目录,这样管理方便。如:D:\work,然后打开到指定目录。
  2. 在空白处点击鼠标右键,可以看到右键菜单中多了几个选项。选择 TortoiseGit -> Settings,然后就可以看到配置界面。
  3. 点击 General 进行简单配置。Language 可以切换语言 (可以中英文之间切换使用)。不要勾选自动升级的复选框。可能还需要指定 Git.exe 文件的安装路径,如 "C:\Program Files\Git\bin"。完成后,点击应用,确定关闭对话框。

[图示:General 配置界面]

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

[图示:右键菜单配置]

  1. 设置记住密码

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

进入设置,点选左边的 Git 标签。可以发现,右边可以配置用户的名字与 Email 信息。

[图示:Git 标签配置]

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

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

[credential]
    helper = store

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

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

4. TortoiseGit 使用

4.1 使用示例

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

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

[图示:Git Clone 对话框]

在 URL 中填写项目的访问地址。

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

[图示:克隆成功提示]

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

[图示:项目根目录右键菜单]

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

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

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

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

[图示:Add 操作]

[图示:Commit 对话框]

[图示:提交确认]

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

[图示:提交成功提示]

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

  • Unknown:新增的文件,也不在版本库
  • Added:新增的文件,在版本库
  • Modified:文件修改,在版本库
  • Missing:文件被删除,在版本库

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

提交前:

[图示:提交前状态]

提交后:

[图示:提交后状态]

4.1.3 查看 log 日志

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

[图示:Log 日志界面]

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

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

[图示:文件变更详情]

4.1.4 代码提交到远程

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

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

[图示:Git Push 对话框]

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

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

4.1.5 忽略提交设置

有时候我们一些文件是不需要提交的比如说 idea/eclipse,或者说本地记录的一些简要说明,不是正式提交的 README.md 这种文件,或者开发的代码自动生成的配置文件,如何设置为不提交呢?

[图示:忽略文件设置]

按照提示方式,标记 a.txt 或全部 .txt 为可忽略文件,此时我们根目录下会生成一个.gitignore 文件。

[图示:.gitignore 文件]

忽略文件如何阅读,常见格式如下:

# 所有以.a 结尾的文件讲被忽略 (递归)
*.a

# 不管其他规则怎样,强制不忽略 lib.a
!lib.a

# 只忽略 文件 TODO (注意这里是文件)
/TODO

# 忽略 build 文件夹下所有内容 (递归) 这里是文件夹
build/

# 忽略 doc 目录下以 *.txt 结尾的文件 (不递归)
doc/*.txt

# 忽略 doc 目录下以 *.pdf 结尾的文件 (递归)
doc/**/*.pdf

4.2 分支管理

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

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

4.2.1 查看分支

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

git branch -a # 查看所有分支
git branch # 查看本地分支
git branch -r # 查看远程分支

方法一:

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

[图示:Switch/Checkout 界面]

方法二:

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

[图示:Show Log 界面]

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

[图示:Log 中的分支列表]

[图示:分支结构展示]

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

[图示:Create Branch]

[图示:Branch 命名]

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

[图示:当前分支显示]

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

[图示:修改文件状态]

[图示:新增文件状态]

[图示:文件图标变化]

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

[图示:分支提交]

[图示:提交完成]

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

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

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

[图示:切换分支]

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

[图示:切换后文件状态]

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

4.2.3 分支合并

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

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

  1. 本地版本先切换到 master 分支。
  2. 然后右键-->TortoiseGit-->Merge,选择被合并的分支,即 dev-0430。如下图

[图示:Merge 选择]

[图示:Merge 确认]

点击 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 到远端。

关于代码提交的终极简化:

总结:

a) 不管什么场景,先 commit 提交到本地仓库再说

b) pull 更新合并本地代码,保证本地版本的新鲜度

c) push 提交代码

commit:commit

pull:commit+pull

push:commit+pull+push

一言以蔽之:一提(commit)二拉(pull)三推(push)

4.5 版本回滚

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

[图示:日志回滚定位]

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

[图示:Reset 操作]

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

[图示:Reset 类型选择]

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

[图示:回滚后文件消失]

4.6 暂存操作

4.6.1 暂存的切换

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

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

Stash Changes – TortoiseGit 允许你将工作目录的脏状态保存到堆栈中,以便稍后重新应用。

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

[图示:Stash Changes]

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

[图示:Stash 消息]

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

[图示:Stash 成功]

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

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

[图示:Stash List]

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

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

[图示:Stash 恢复定位]

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

[图示:Revert 确认]

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 解决冲突

对于实际开发过程,经常涉及在多个分支之间切换与合并,有可能出现版本冲突导致提交不成功。

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

常见的几种冲突主要有如下几种场景:

场景一:本地相同文件冲突
  • 冲突场景:开发者 A 和开发者 B 修改、拉取相同文件
场景二:服务端相同文件冲突
  • 冲突场景:开发者 B 和开发者 A 修改、提交、推送相同文件
场景三:服务端不同文件冲突
  • 冲突场景:开发者 B 和开发者 A 修改、提交、推送不同文件
场景四:服务端文件名冲突
  • 冲突场景:开发者 B 和开发者 A 重命名同一文件

4.8 解冲突补充说明

在 tortoise 内解冲突相对来说对比不太直观,实际处理冲突可按如下步骤进行:

  1. 在本地开发的自有分支比如 test 分支,完成具体功能的开发,commit 提交本地版本
  2. tortoise 切换到 master 或相应的主分支,pull 最新代码
  3. switch/checkout 切换回到 test 分支,右击选中代码仓库文件夹,merge 后弹出如下窗口

在 from 中选取主分支,实现主分支往本地开发分支 merge

[图示:Merge 冲突界面]

完成分支的 merge 后,可能会出现冲突的界面,双击选中其中冲突的文件之一,弹出来对比的窗口后,再关闭之。此时文件夹出现一个感叹号。

  1. 安装并打开 vscode,打开到本地的开发分支文件夹,此时可看到标记红色的文件或文件夹,进入具体的文件窗口内,根据冲突位置,解冲突后保存
  2. 完成上述步骤后,再使用 tortoise commit 一次本地分支的最新版本,此时提交成功或可以忽略不属于冲突的文件,完成最终合并。
  3. 将 merge 后的版本提交到 remote 主分支,完成代码的提交与 push.

4.9 其他补充

4.9.1 修改 commit 日志

具体来说修改 commit 日志可分为 3 种情况:

第一种情况,如果需要修改的 commit 是当前分支的最新的一个 commit,

在版本库中,右键菜单,提交

在提交的界面,选择 Amend Last Commit

然后根据需要修改日志信息,包括 commit message,日期,作者

[图示:Amend Last Commit]

4.9.2 保存 stash 并合入

如果存在本地出现了修改还未提交,但 remote 对应分支已出现了更新,那么可以先将本地修改保存为 stash changes。

[图示:Stash Changes]

[图示:Stash 确认]

保存 stash 后,可以拉取远程分支的更新到本地代码。

然后选中 stash pop 弹出本地 stash 代码。

[图示:Stash Pop]

把弹出的 stash 提交,commit 到当前分支,完成修改版本的合并。

[图示:Stash 合并提交]

目录

  1. 1. 概述
  2. 2. Git 安装与配置
  3. 3. TortoiseGit 安装与配置
  4. 3.1 TortoiseGit 介绍
  5. 3.2 TortoiseGit 下载与安装
  6. 3.3 TortoiseGit 配置
  7. 4. TortoiseGit 使用
  8. 4.1 使用示例
  9. 4.1.1 克隆项目(从仓库获取)
  10. 4.1.2 本地代码提交到本地仓库
  11. 4.1.3 查看 log 日志
  12. 4.1.4 代码提交到远程
  13. 4.1.5 忽略提交设置
  14. 所有以.a 结尾的文件讲被忽略 (递归)
  15. 不管其他规则怎样,强制不忽略 lib.a
  16. 只忽略 文件 TODO (注意这里是文件)
  17. 忽略 build 文件夹下所有内容 (递归) 这里是文件夹
  18. 忽略 doc 目录下以 *.txt 结尾的文件 (不递归)
  19. 忽略 doc 目录下以 *.pdf 结尾的文件 (递归)
  20. 4.2 分支管理
  21. 4.2.1 查看分支
  22. 4.2.2 新建与切换分支
  23. 4.2.3 分支合并
  24. 4.2.4 分支删除
  25. 4.3 版本管理与对比
  26. 4.4 拉取(pull)远端最新
  27. 4.5 版本回滚
  28. 4.6 暂存操作
  29. 4.6.1 暂存的切换
  30. 4.6.2 暂存的合并
  31. 4.6.3 更新项目到本地
  32. 4.7 解决冲突
  33. 场景一:本地相同文件冲突
  34. 场景二:服务端相同文件冲突
  35. 场景三:服务端不同文件冲突
  36. 场景四:服务端文件名冲突
  37. 4.8 解冲突补充说明
  38. 4.9 其他补充
  39. 4.9.1 修改 commit 日志
  40. 4.9.2 保存 stash 并合入
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 正则表达式入门:基础语法与 re 模块实战
  • C 语言、Java、Python 的选择与未来指南
  • 慎用 ArrayList 的 contains 方法,优先使用 HashSet
  • 马斯克开源 Grok 协议解析及大模型时代程序员发展机会
  • DeepSeek + 通义万相制作 AI 视频流程与工具介绍
  • Python 实现 MCP 客户端调用高德地图天气查询示例
  • Python 常用数据结构:列表操作与生成式详解
  • AI 安全实战:基于 PGD 的 Stable Diffusion 视觉提示词注入研究
  • 网络安全攻防:黑客攻击简要流程
  • 飞算 JavaAI 工具实战测评:重塑 Java 开发体验
  • 2015 款 MacBook Pro 运行最新 macOS 技术指南
  • Layui 集成 Unity WebGL 时 Tab 切换导致黑屏的修复方案
  • 跨平台 Web 字体渲染方案与性能优化实践
  • 数据库索引类型与结构详解
  • 大数据 OLAP 中的近似聚合算法
  • Git 版本控制系统入门与核心命令
  • DeepSeek 与通义万相结合制作 AI 视频实战详解
  • 最新 ACM Fellow 名单发布,4 名中国大陆学者当选,中国机构入选人数第二
  • GitHub 开发者画像深度解析与效能提升指南
  • 飞算 JavaAI:智能辅助开发工具评测与功能解析

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online