如何在Sourcetree合并时预览并丢弃非冲突文件?是否有对应UI操作?
解决方案
一、合并前预览并筛选文件的方法
方法1:先查看分支差异,手动排除文件后合并
- 在Sourcetree中选中待合并的源分支,右键选择**「Diff Against Current Branch」**,即可查看两个分支间所有文件的差异,标记出无需合并的文件。
- 切换回目标分支,对标记出的文件执行重置操作:选中文件右键选择**「Reset to HEAD」**,将文件恢复为当前分支的最新版本,覆盖合并会带来的更改;也可执行命令
git checkout HEAD -- 路径/文件名实现相同效果。 - 完成上述操作后再执行合并,这些文件就不会被合并过来。
方法2:启动合并但不提交,在暂存区处理文件
这是你提到的命令行思路的可视化实现:
- 右键点击待合并的源分支,选择**「Merge into Current Branch」**。
- 在弹出的合并对话框中,勾选**「No Fast-forward」,点击「Advanced Options」后勾选「Do not commit merge」**。
- 执行合并后,Sourcetree会完成合并但不自动提交。此时在「Unstaged Files」或「Staged Files」列表中,选中不需要的文件:
- 右键选择**「Reset to HEAD」**,丢弃合并带来的更改;
- 若为新增文件,直接删除后右键选择**「Stage Removed」**。
- 处理完所有目标文件后,点击**「Commit」**完成合并提交。
二、Sourcetree对应git merge --no-ff --no-commit的UI选项
有的,就是上述方法2中的操作:合并时勾选「No Fast-forward」+ 高级选项里的「Do not commit merge」,两者组合完全等价于git merge --no-ff --no-commit $SOURCE_BRANCH。
额外优化:自动排除固定文件
如果有长期无需合并的固定文件(如开发环境配置),可在项目根目录添加.gitattributes文件,设置merge=ours属性,Git会自动保留当前分支的版本,无需每次手动处理:
# 示例:让dev.env文件合并时始终保留当前分支版本 dev.env merge=ours
内容的提问来源于stack exchange,提问作者Chizuoka
相关产品推荐
相关产品推荐

