我正在使用 Visual Studio(Professional 2019)和通过 Git Changes 进行的 Git 集成。我一直在使用 TFS,但我们决定在新开发上使用 Git 项目。我在 .gitignore
文件中添加了一些东西,例如忽略 .vs
文件夹等。它似乎可以工作 只要事情还没有添加之前。到目前为止,还不错。
但现在我们遇到了一个问题,我们对 launchSettings.json
和 appsettings.Development.json
文件以及 App_Data 等文件进行了不同的更改
文件夹。
我不明白的问题是我们都希望这些文件在 Git 中被控制,存在于 repo 中。但我们希望排除本地更改不会被推送到任何地方。
于是我们找到了关于.git/info/exclude
文件的信息。那太好了。但是好像并没有解决问题,因为一旦一个文件被控制了,我们就不能排除我们自己对那个文件的修改。它仅适用于文件完全不受控制的情况。这是我完全不确定的地方,但似乎是这样。
当我们使用 TFS 控件时,我们可以从 Visual Studio 中右键单击该文件并选择“排除”,它会出现在“排除的更改”列表中并且不会被 checkin 与变更集。
但这在 Git 中是不可能的。至少不是来自 Visual Studio。除了 Blame(注释)和 Stage 之外,唯一可用的选项是撤消更改。但是我们不想撤消我们的更改。我们只想推送我们的更改而不包含更改。
我在这里做错了什么?请赐教。我显然在这里遗漏了一些东西。
最佳答案
Team Foundation 版本控制 (TFVC) 是一个集中式版本控制系统。同时,Git 是一个分布式版本控制系统。它们是不同的版本控制系统,因此具有不同的操作。请参阅:Choosing the right version control for your project了解详情。
在 TFVC 存储库中,我们可以右键单击该文件并选择“排除”,然后我们将除该文件之外的所有更改都 checkin 此线程:How to ignore files/directories in TFS for avoiding them to go to central source repository?描述。
但是,此操作在 Git 存储库中不可用,我们可以关注此线程:How to stop tracking and ignore changes to a file in Git?正如 PWND 建议使用 Git 命令来实现它。或者我们可以使用 Git stage 命令来避免按照 fredrik 的建议提交此文件,请参阅:https://www.nobledesktop.com/learn/git/stage-commit-files了解详情。
此外,您可以尝试设置branch policies , 所以 merge 到 master 的代码必须通过 pull request , 然后保护目标文件。
关于git - 排除 Git 中受控文件的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66852072/