TortoiseGit 使用技巧大全:从入门到高效进阶(1)

告别命令行恐惧症——用好这只"小乌龟",Git 操作可以全程鼠标流,但效率绝不输命令行。

目录


一、基础配置篇

1.1 SSH 密钥配置:让"小乌龟"记住你的身份

在 TortoiseGit 中配置 SSH 密钥,可以免去每次 Pull/Push 都输入账号密码的烦恼。

操作步骤:

  1. 在任意文件夹右键 → TortoiseGit → 设置 → 网络
  2. 在 SSH 客户端处确认已选择 TortoiseGitPlink.exe
  3. 右键 → TortoiseGit → 设置 → 重新运行首次启动向导
  4. 在向导中生成密钥对(生成时需要晃动鼠标,否则进度条会卡住不动——这可不是 Bug,而是为了收集随机信息来增强密钥安全性)
  5. 将生成的公钥粘贴到 Git 服务器(GitHub/GitLab/Gitee 等)的 SSH Keys 设置中

load-putty-key

有趣的小例子: 想象一下,你着急 Push 代码赶项目上线,结果弹出一个登录框让你输密码——而你的密码是三个月前设置的 MyCatLovesTuna2024!,你早忘了。配置好 SSH 密钥,你的"小乌龟"就像拥有了 VIP 通行证,每次推拉都畅通无阻。

1.2 中文语言包:告别英文菜单

  1. TortoiseGit 官网 下载与你的 TortoiseGit 版本一致的中文语言包
  2. 安装语言包后,右键 → TortoiseGit → Settings → General → Language,选择"简体中文"
  3. 确定后即可享受全中文界面

如果下拉框中没有中文选项,说明语言包版本和 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 涉及的文件

GitSync

形象类比: 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 = 把一叠零散的便利贴誊写成一条完整的备注——只看结果,不关心过程

Merge

3.2 Cherry Pick:跨分支"摘樱桃"

场景: 你在 feature-A 分支上写了一个很棒的 util 函数,commit 了。现在 feature-B 分支也需要这个函数,但你不想把整个 feature-A 合并过来。

做法:

  1. 切换到目标分支(比如 feature-B
  2. 右键 → TortoiseGit → Show Log
  3. 找到那个 commit,右键 → Cherry Pick this commit
  4. 搞定!那个 commit 的内容现在也属于 feature-B

命令行等价操作:

git cherry-pick <commit-hash>

Cherry Pick 就像从一棵树上摘一颗最好的樱桃放到另一棵树上——精准、优雅。

3.3 Rebase:让你的提交历史"一条直线"

场景: 你的分支和主分支各自前进了好几个提交,直接 Merge 会产生一个分叉的"Y 形"历史图,看起来很乱。

做法:

  1. 切换到你的功能分支
  2. 右键 → TortoiseGit → Rebase
  3. 选择目标分支(比如 master
  4. TortoiseGit 会把你的提交"平移"到目标分支最新提交的后面

Rebase 会重写提交历史,如果分支已经 Push 且被其他人使用,请勿 Rebase——否则你的同事会想请你喝咖啡(带火药的那种)。

3.4 右键拖拽:隐藏的分支创建方式

在某个提交记录上右键拖拽到文件夹中,TortoiseGit 会弹出一个上下文菜单,允许你直接基于该提交创建分支。


四、历史追溯篇

4.1 Show Log:你的"代码时光机"

右键 → TortoiseGit → Show Log 是 TortoiseGit 最强大的功能之一。

在 Log 对话框中你可以:

  • 查看每一次提交的作者、时间、消息
  • 点击任意提交,在底部窗格看到该提交改动了哪些文件
  • 双击文件:查看具体代码改动(Diff)
  • 选中两个提交(按住 Ctrl):查看两个版本之间的差异
  • 右键选中的提交 → 选择 Compare revisions(比较版本)

LogMessages

4.2 Blame:每一行代码都有"案底"

场景: 你打开一个文件,看到一段莫名其妙的代码,心想"这是谁写的?为什么这么写?"

做法: 右键文件 → TortoiseGit → Blame

Blame 会在每行代码左侧显示:

  • 最后修改这行的作者
  • 修改日期
  • 所属的 Commit Hash

把鼠标悬停在某一行上,还能看到完整的提交信息。点击某一行,可以直接跳转到对应的 Commit。

有趣用法: 当你发现一个 Bug,用 Blame 定位到引入它的提交和作者,然后在 Commit 对话框里 @ 那个人——"师兄,你三个月前的这行代码好像有个小问题 😅"。

TortoiseBlame

4.3 Bisect:二分法揪出引入 Bug 的提交

场景: 一个月前功能还是好的,今天突然坏了。这中间有 200 个提交,怎么找到是哪一个提交引入的 Bug?

做法:

  1. 右键 → TortoiseGit → Bisect → Start
  2. 指定一个好的提交(比如一个月前的版本)和一个坏的提交(比如当前版本)
  3. TortoiseGit 会自动切换到中间某个版本
  4. 你测试一下这个版本有没有 Bug,然后标记 goodbad
  5. 重复几次,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>

未完待续!

posted @ 2026-05-18 23:11  only赟  阅读(192)  评论(0)    收藏  举报