TortoiseGit 使用技巧大全:从入门到高效进阶(1)
告别命令行恐惧症——用好这只"小乌龟",Git 操作可以全程鼠标流,但效率绝不输命令行。
目录
一、基础配置篇
1.1 SSH 密钥配置:让"小乌龟"记住你的身份
在 TortoiseGit 中配置 SSH 密钥,可以免去每次 Pull/Push 都输入账号密码的烦恼。
操作步骤:
- 在任意文件夹右键 → TortoiseGit → 设置 → 网络
- 在 SSH 客户端处确认已选择
TortoiseGitPlink.exe - 右键 → TortoiseGit → 设置 → 重新运行首次启动向导
- 在向导中生成密钥对(生成时需要晃动鼠标,否则进度条会卡住不动——这可不是 Bug,而是为了收集随机信息来增强密钥安全性)
- 将生成的公钥粘贴到 Git 服务器(GitHub/GitLab/Gitee 等)的 SSH Keys 设置中

有趣的小例子: 想象一下,你着急 Push 代码赶项目上线,结果弹出一个登录框让你输密码——而你的密码是三个月前设置的 MyCatLovesTuna2024!,你早忘了。配置好 SSH 密钥,你的"小乌龟"就像拥有了 VIP 通行证,每次推拉都畅通无阻。
1.2 中文语言包:告别英文菜单
- 从 TortoiseGit 官网 下载与你的 TortoiseGit 版本一致的中文语言包
- 安装语言包后,右键 → TortoiseGit → Settings → General → Language,选择"简体中文"
- 确定后即可享受全中文界面
如果下拉框中没有中文选项,说明语言包版本和 TortoiseGit 版本不匹配——重新下载对应版本即可。
1.3 全局用户信息:给你的提交"署名"
右键 → TortoiseGit → 设置 → Git,填写:
| 字段 | 说明 | 示例 |
|---|---|---|
| 用户名 (Name) | 提交日志中显示的名字 | 张三 |
| 邮箱 (Email) | 关联 Git 平台的邮箱 | zhangsan@example.com |
配置后,每次提交都会带上你的"签名"——方便同事在出问题时精准找到你(或者甩锅时精准避开你 😄)。
1.4 自动记住密码:免去反复输入
点击"编辑全局 .git/config",在文件末尾添加:
[credential]
helper = store
保存后,第一次输入密码后就会被记住,之后不用再重复输入。
二、日常提交篇
2.1 只提交某个文件夹下的改动
场景: 你同时改了 src/ 下的业务代码和 docs/ 下的文档,但只想提交业务代码。
做法: 不要右键根目录 → Commit,而是进入 src/ 文件夹,右键空白处 → Git Commit。这样弹出的提交对话框会自动过滤,只显示 src/ 下的改动。
2.2 Amend:修改最近一次未推送的提交
场景: 你刚提交完,发现 Commit 消息里有个错别字,或者漏了一个文件没勾选。
做法: 右键 → Git Commit,在提交对话框中勾选 "Amend 上一次提交"(修正上一次提交)。
| 能做什么 | 不能做什么 |
|---|---|
| 修改 Commit 消息 | 修改已 Push 的提交(除非强制推送,不推荐) |
| 补选遗漏的文件 | — |
| 从提交中移除某个文件 | — |
注意:Amend 只对尚未 Push 的提交有效。如果已经 Push 了再用 Amend,下次 Pull 时那次提交还会"回来"。
2.3 Git Sync:推送前先看"发车清单"
场景: 提交了一大堆代码,但不确定有多少个 Commit 还没 Push,直接 Push 心里没底。
做法: 右键 → TortoiseGit → Git Sync(同步)。
Sync 对话框会清晰展示:
- 尚未 Push 的 Commit 列表
- 远程仓库领先的 Commit 列表(需要先 Pull)
- 每个 Commit 涉及的文件

形象类比: Sync 就像你发快递前的"包裹清单"——先看一眼清单,确认没有寄错东西,再"发货"(Push)。
2.4 提交时排除特定文件(Change List)
场景: 你改了 10 个文件,但其中有 2 个是本地调试用的临时配置,不想提交。
做法: 在 Commit 对话框中,取消勾选不想提交的文件即可。也可以在 TortoiseGit 设置中创建 Change List(变更列表),将文件按类别分组管理。
三、分支与合并篇
3.1 三种合并策略:选对姿势不踩坑
TortoiseGit 提供了三种合并方式:
| 合并方式 | 操作路径 | 效果 | 适用场景 |
|---|---|---|---|
| 普通 Merge | 右键 → Merge → 选择分支 | 生成一个合并提交,保留分支历史 | 标准的分支合并 |
| No Fast Forward | Merge 时勾选"No Fast Forward" | 即使能快进也强制生成合并提交 | 需要保留"合并"这个动作的记录 |
| Squash Merge | Merge 时勾选"Squash" | 把分支上所有提交压缩成一个提交 | 功能分支提交太零碎,想整理后再合入主分支 |
有趣类比:
- 普通 Merge = 把一整本论文附录到主文档后面,每一页都在,历史完整
- No Fast Forward = 明明可以直接把两段文字接在一起,但非要加一句"此处合并了张三的修改"——多一个节点,但更清晰
- Squash Merge = 把一叠零散的便利贴誊写成一条完整的备注——只看结果,不关心过程

3.2 Cherry Pick:跨分支"摘樱桃"
场景: 你在 feature-A 分支上写了一个很棒的 util 函数,commit 了。现在 feature-B 分支也需要这个函数,但你不想把整个 feature-A 合并过来。
做法:
- 切换到目标分支(比如
feature-B) - 右键 → TortoiseGit → Show Log
- 找到那个 commit,右键 → Cherry Pick this commit
- 搞定!那个 commit 的内容现在也属于
feature-B了
命令行等价操作:
git cherry-pick <commit-hash>
Cherry Pick 就像从一棵树上摘一颗最好的樱桃放到另一棵树上——精准、优雅。
3.3 Rebase:让你的提交历史"一条直线"
场景: 你的分支和主分支各自前进了好几个提交,直接 Merge 会产生一个分叉的"Y 形"历史图,看起来很乱。
做法:
- 切换到你的功能分支
- 右键 → TortoiseGit → Rebase
- 选择目标分支(比如
master) - TortoiseGit 会把你的提交"平移"到目标分支最新提交的后面
Rebase 会重写提交历史,如果分支已经 Push 且被其他人使用,请勿 Rebase——否则你的同事会想请你喝咖啡(带火药的那种)。
3.4 右键拖拽:隐藏的分支创建方式
在某个提交记录上右键拖拽到文件夹中,TortoiseGit 会弹出一个上下文菜单,允许你直接基于该提交创建分支。
四、历史追溯篇
4.1 Show Log:你的"代码时光机"
右键 → TortoiseGit → Show Log 是 TortoiseGit 最强大的功能之一。
在 Log 对话框中你可以:
- 查看每一次提交的作者、时间、消息
- 点击任意提交,在底部窗格看到该提交改动了哪些文件
- 双击文件:查看具体代码改动(Diff)
- 选中两个提交(按住 Ctrl):查看两个版本之间的差异
- 右键选中的提交 → 选择 Compare revisions(比较版本)

4.2 Blame:每一行代码都有"案底"
场景: 你打开一个文件,看到一段莫名其妙的代码,心想"这是谁写的?为什么这么写?"
做法: 右键文件 → TortoiseGit → Blame。
Blame 会在每行代码左侧显示:
- 最后修改这行的作者
- 修改日期
- 所属的 Commit Hash
把鼠标悬停在某一行上,还能看到完整的提交信息。点击某一行,可以直接跳转到对应的 Commit。
有趣用法: 当你发现一个 Bug,用 Blame 定位到引入它的提交和作者,然后在 Commit 对话框里 @ 那个人——"师兄,你三个月前的这行代码好像有个小问题 😅"。

4.3 Bisect:二分法揪出引入 Bug 的提交
场景: 一个月前功能还是好的,今天突然坏了。这中间有 200 个提交,怎么找到是哪一个提交引入的 Bug?
做法:
- 右键 → TortoiseGit → Bisect → Start
- 指定一个好的提交(比如一个月前的版本)和一个坏的提交(比如当前版本)
- TortoiseGit 会自动切换到中间某个版本
- 你测试一下这个版本有没有 Bug,然后标记 good 或 bad
- 重复几次,TortoiseGit 就能精确定位到"罪魁祸首"提交
形象类比: Bisect 就像在字典里查单词——你不会从第一页翻起,而是一翻翻到中间,看当前的单词是前面还是后面,再二分找下去。200 个提交,最多 8 次就能定位。
4.4 日志消息搜索与过滤
在 Show Log 对话框顶部,有一个搜索/过滤框:
- 输入关键词:实时过滤包含该关键词的提交消息
- 输入作者名:只看某个人的提交
- 输入日期范围:锁定特定时间段的提交
- 配合正则表达式:更灵活的搜索
技巧: 在 Log 对话框中使用 Ctrl+F,可以打开高级搜索对话框,支持按作者、日期、分支名等条件组合搜索。
4.5 Reference Log:挽救"丢失"的提交
场景: 你执行了 Reset --hard,发现误删了几个重要的提交。git log 已经看不到它们了,但它们真的消失了吗?
做法: 右键 → TortoiseGit → Show Reference Log(引用日志)。
Reflog 记录了本地仓库的所有 HEAD 移动历史——即使是已经被 Reset 掉的提交,只要没有被 Git 垃圾回收,都能在这里找到。找到目标提交的 Hash 后,可以新建一个分支指向它,然后 Cherry Pick 回来。
救命稻草: 只要你能在 Reflog 中找到那个提交的 Hash,代码就还有救。Reflog 默认保留 90 天。
五、撤销与回滚篇
5.1 Revert:安全的"后悔药"
场景: 你 Push 了一个提交,后来发现这个改动不该上——比如把 API 密钥明文写进了配置文件(危险!)。
做法: 右键 → Show Log → 找到那个"坏"提交 → 右键选择 "Revert change by this commit"(恢复此提交所做的更改)。
TortoiseGit 会自动生成一个反向提交——你添加的代码会被删除,你删除的代码会被加回来。然后你只需要提交这个反向修改并 Push 即可。
| 对比 | Revert | Reset |
|---|---|---|
| 是否改变历史 | 不改变,新增一个反向提交 | 改变,移除已有的提交 |
| 已 Push 后可用? | ✅ 安全可用 | 危险,需要 Force Push |
| 合作开发时推荐? | ✅ 推荐 | 不推荐 |
5.2 Reset:三种模式的选择
右键 → Show Log → 选择目标版本 → 右键 → "Reset 'xxx' to this",弹出三种选项:
| 模式 | 效果 | 使用场景 |
|---|---|---|
| Soft | 撤销提交,但保留暂存区和工作区改动 | "这个提交拆成两个比较好" |
| Mixed | 撤销提交和暂存区,保留工作区改动 | "提交了但还想再改改" |
| Hard | 全部撤销——提交、暂存区、工作区都回到目标状态 | "这堆代码我不要了,从头来过" |
Soft: 提交回到暂存区(git add 状态)
Mixed: 提交回到工作区(未 git add 状态)
Hard: 提交直接删除(代码也回退)
如果你是团队协作且已经 Push,请用 Revert 而不是 Reset + Force Push——Force Push 是"重写历史",会让同事的本地仓库和远程产生冲突。
5.3 撤销未提交的修改
- 撤销单个文件的修改: 右键文件 → TortoiseGit → Revert → 勾选文件 → OK
- 撤销整个工作区: 右键根目录 → TortoiseGit → Revert → 勾选所有文件 → OK
相当于命令行的:
git checkout -- <file>
未完待续!

浙公网安备 33010602011771号