You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TortoiseGit中拉取更新后保留本地修改的变更状态?

解决方法

核心思路

你需要把上游更新的合并提交和你的自定义修改分离开:先让主分支同步到GitHub最新版本(包含冲突解决),再把你的自定义修改恢复为未提交的变更状态。以下是两种便捷实现方式:


方式一:利用补丁回溯自定义修改

步骤1:定位关键提交

打开TortoiseGit的「日志」,找到两个关键提交:

  • 你提交自定义修改的那个版本(记为Commit-My,复制它的哈希值)
  • 拉取上游更新后的合并版本(如果已提交,记为Commit-Merge)

步骤2:重置到自定义提交状态

如果已经提交了合并结果,先把仓库重置到Commit-My:

git reset --hard <Commit-My的哈希值>

如果还没提交合并结果,先撤销合并:

git merge --abort

步骤3:同步上游最新版本

在TortoiseGit中执行「拉取」,拉取GitHub最新代码,解决冲突后提交这个合并结果。此时你的主分支已经和上游完全同步,且包含冲突解决的内容。

步骤4:恢复自定义修改为未提交状态

命令行方式:

生成自定义修改的补丁文件:

git diff <Commit-My的父提交哈希> <Commit-My的哈希> > my-custom.patch

然后在主分支上应用补丁:

git apply my-custom.patch

TortoiseGit图形界面方式:

在日志中选中Commit-My,右键选择「导出补丁」保存为文件;切换到主分支后,右键选择「应用补丁」,选择刚才保存的补丁文件即可。


方式二:用分支分离修改与上游更新

步骤1:创建自定义修改分支

从Commit-My创建新分支,专门保存你的自定义修改:

git branch my-custom-changes <Commit-My的哈希值>

或者在TortoiseGit日志中右键Commit-My,选择「创建分支」。

步骤2:同步主分支到上游最新

切换回主分支,拉取GitHub最新代码:

git checkout main
git pull origin main

如果拉取时出现冲突,解决后提交合并结果。

步骤3:合并自定义分支并保留未提交状态

将自定义分支的修改合并到主分支,但不自动提交:

git merge my-custom-changes --no-commit

此时工作区会显示你的所有自定义修改(包括冲突解决后的内容),而主分支已经是上游最新状态,这些修改会保持未提交的变更状态,符合你的需求。


注意事项

  • 操作前务必备份本地仓库(复制整个仓库文件夹),避免误操作丢失数据。
  • 若使用TortoiseGit图形界面,所有命令都可以通过右键菜单找到对应功能,无需完全依赖命令行。

内容的提问来源于stack exchange,提问作者user3161924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 17:42:43