0

git update-index --assume-unchanged .\src\main\resources\application.properties我在本地目录中运行了该命令,正如我所料,该文件从 VS Code的部分中application.properties消失了。ChangesSource Control

但是,差异仍然显示红色删除和绿色添加,就好像文件仍在被跟踪一样。<-- 这显示在下面的屏幕截图中

我也阻止切换分支,因为“更改会覆盖该文件”

任何想法为什么会发生这种情况?我想在我的远程存储库中有一个基本版本,我可以在本地更改而不跟踪更改。

我看到了该--skip-worktree选项并尝试git update-index --skip-worktree .\src\main\resources\application.properties了,但得到了相同的结果。

这是 git 命令和输出

PS C:\r\Body-Tracking-Uploader> git update-index --assume-unchanged .\src\main\resources\application.properties
PS C:\r\Body-Tracking-Uploader> git status
On branch upload-exerciseInfo-aws
Your branch is up to date with 'origin/upload-exerciseInfo-aws'.

nothing to commit, working tree clean
PS C:\r\Body-Tracking-Uploader> git branch
  main
* upload-exerciseInfo-aws
PS C:\r\Body-Tracking-Uploader> git checkout main
error: Your local changes to the following files would be overwritten by checkout:
        src/main/resources/application.properties
Please commit your changes or stash them before you switch branches.
Aborting
PS C:\r\Body-Tracking-Uploader>

VS Code 中源代码管理选项卡/视图的屏幕截图

4

2 回答 2

3

您正在寻找一种方法来忽略对跟踪文件的更改,而您尝试过的两个选项都不起作用的原因是 Git 不支持,如Git FAQ 中所述

Git 没有提供这样做的方法。原因是如果 Git 需要覆盖这个文件,例如在结帐期间,它不知道对文件的更改是否宝贵并且应该保留,或者它们是否无关紧要并且可以安全地销毁。因此,它必须采取安全路线并始终保护它们。

尝试使用 git update-index 的某些功能是很诱人的,即假设未更改和跳过工作树位,但是这些不能正常工作,因此不应该以这种方式使用。

如果您正在寻找一种方法来处理配置文件中的配置,这就是您正在做的事情,那么常见问题解答概述了如何做到这一点:

如果您的目标是修改配置文件,则将文件签入存储库通常会很有帮助,该文件是模板或一组默认值,然后可以在旁边复制并根据需要进行修改。这第二个修改过的文件通常会被忽略,以防止意外提交它。

于 2021-07-08T19:29:06.007 回答
-1

我不完全确定问题出在哪里,但我采取了以下步骤

  1. 将 application.properties 的内容复制到单独的位置
  2. 还原 application.properties 以匹配远程版本
  3. 提交/推送所有与我的进度相关的代码更改
  4. 将此功能分支合并到main(它还没有功能完整,但在其当前状态下运行)
  5. 在远程存储库中创建了一个新功能分支main(以继续之前的 WIP 功能)
  6. 将最新的拉到main我的本地
  7. git update-index --skip-worktree .\src\main\resources\application.properties
  8. 查看新创建的功能分支
  9. 恢复了对 application.properties 文件的本地更改

现在更改不会显示在源代码控制视图中,它们不会阻止我在本地分支之间移动。

于 2021-07-08T18:13:14.390 回答