git - VS Code + Git 保留其他分支的文件
问题描述
我在 macOS 上使用 VS 代码 + git 版本 2.20.1。有时,当我在整个分支中切换时,其他分支的文件会错误地保留在当前分支中。
这些文件不存在,.gitignore
它们不是未提交的更改。
例如,如果我有那些提交的文件:
- 分支_a:文件1,文件2
- 分支_b:文件2
如果我在 VS Code 中签branch_a
出,我提交所有更改,然后切换到branch_b
,我仍然file1
在我的工作目录中。
奇怪的是,file1
它对 git 来说是“不可见的”。实际上,这不被认为是对branch_b
. 即使它实际上在文件系统上,它也会被忽略。让我从命令行的角度澄清这一点。
$ [git: branch_a] ls
file1 file2
$ [git: branch_a] git status
nothing to commit, working tree clean
$ git checkout branch_b
Switched to branch 'branch_b'
Your branch is up to date with 'origin/branch_b'.
$ [git: branch_b] ls
file1 file2
但是,file1
不应该在这里,但是...
$ [git: branch_b] git status
nothing to commit, working tree clean
工作树被认为是干净的,即使我rm
或我修改了文件,git 也不会检测到任何更改:
$ [git: branch_b] rm file1
$ [git: branch_b] ls
file2
$ [git: branch_b] git status
nothing to commit, working tree clean
这个问题不是系统的,但它只是偶尔发生。在这个 SO question中报告了一个类似的问题,它似乎与 VS Code(或其他代码编辑器)管理的一种锁有关
我想知道是否有办法避免这种行为,因此我是否可以避免使用git reset --hard
+清理过时的文件git clean -f -d
。
解决方案
在转移到其他分支之前,请确保您已经提交了一个分支中的所有文件,然后其他分支的文件将不会反映在当前分支中。
推荐阅读
- angular - 如何在Angular 6中发送带有文本的发布请求
- r - R posixct 日期和时间不以午夜为中心
- docker - PrestaShop 1.7 本地开发使用 docker
- android - 我在哪里可以找到和修改材料设计指南定义的 Android Studio 中的材料颜色属性?
- audio - 计算 PTS 和 DTS 以在 ffmpeg 中编码新的视频和音频
- memory-leaks - GenServer 进程的内存泄漏
- python - 如果在 main 中定义了这个全局变量,为什么找不到?
- wordpress-rest-api - WP REST API 的授权标头格式错误 WP JWT 身份验证
- c# - 使用命令行获取 ProcessId
- c++ - 在 Windows 用户模式驱动程序中使用 C++ 标准库