如何在 Git diff 和 merge 期间忽略某些特定文件和文件夹

Posted

技术标签:

【中文标题】如何在 Git diff 和 merge 期间忽略某些特定文件和文件夹【英文标题】:How to ignore some specific files and folders during Git diff and merge 【发布时间】:2019-12-12 02:25:48 【问题描述】:

我在启用 SFDX 的项目中有 2 个分支。我的分支和发展。我想合并从开发中选择的更改,然后在 mybranch 中合并这些更改。 作为一个起点,我尝试使用 git diff 来查看开发中的所有额外内容,但是,它提到了 .forceignore、.gitignore 等文件。我只想比较 force-app 文件夹。有什么方法可以让 git diff 和 git merge 忽略一组文件和文件夹,因为 .gitignore 不起作用。仅供参考,我已经完成了以下操作,但对我没有帮助 - Git diff doesn't ignore specified files in .gitignore

感谢您对此的帮助。

【问题讨论】:

【参考方案1】:

如果您想比较特定文件夹或文件的差异/更改,请尝试以下命令:

git diff your_branch1:path/to/folder your_branch2:path/to/folder

如果你已经配置了difftool,那么你也可以使用:git difftool your_branch1:path/to/folder your_branch2:path/to/folder

更多信息您可以探索this

由于git 1.9,您可以做一些事情来排除特定文件或文件夹

git diff branch_name  -- . ':(exclude)file_path_to_ignore_1' ':(exclude)file_path_to_ignore_2'

注意:对于 windows 语法,请使用 git diff branch_name -- . ":(exclude)file_path_to_ignore_1"(双引号而不是单引号)

【讨论】:

您好 Naib,感谢您的反馈。但是,问题是,支持,我想比较一个文件夹,比如 force-app,它还有 3 个文件夹 - force-app/dir1、force-app/dir2 和 force-app/dir3 ...但是我想跳过比较 force-app/dir2 以使其保持完整。因此,我在考虑 .gitignore 另外,添加到它,最终我想根据 git diff 的 o/p 合并选定的更改(如果 .gitignore 对我有帮助)......你推荐我可以遵循的任何指导方针吗?我的场景? 如果你比较一个文件夹,它肯定会比较父文件夹的所有子文件夹/子文件夹。请至少尝试 您好 Naib,我一定会尝试...但我的意思是,是否有办法跳过任何子文件夹的比较。 是的,您可以这样做。请查看编辑后的答案:) 它类似于 git diff branch_name -- 。 ':(排除).gitignore'【参考方案2】:

嗯 .gitignore 用于忽略您不想推送到源的文件。

不要 git 添加你不想推送的文件。

尝试使用 git checkout -- 文件名,用于丢弃您对文件所做的更改。

【讨论】:

你好 Sagar,所以正如你所建议的,.gitignore 在 git diff 或 git merge 中不起作用? 这个答案遗漏了.gitignore 的许多关键方面,但是,@VarunSFDC,是的,.gitignore 在此处对差异或合并没有帮助。 .gitignore 根本不是关于 ignoring 文件(因此命名错误),但正确的名称会非常长:dot-Git-here-are-files-that-if-they- are-untracked-right-now-don't-complain-about-them-and-don't-auto-add-them-with-en-masse-add-operations,或类似的东西。

以上是关于如何在 Git diff 和 merge 期间忽略某些特定文件和文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Git - 使用命令和P4Merge进行diff

如何配置git mergetool配置

Git在Windows环境下配置Diff以及Merge工具---DiffMerge

git merge diff3 风格需要解释

配置TortoiseGit为git merge/diff tool

git的.gitkeep