麻烦取消暂存,删除甚至取消跟踪文件

Eug*_*tos 5 git atlassian-sourcetree

我新克隆了一个私有存储库,注意到它已经有一个处于状态的暂存文件deleted

发行git status给了我这个:

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    rootfolder/site/templates/article.php
Run Code Online (Sandbox Code Playgroud)

我想让这个工作目录变得干净,当我取消暂存、取消跟踪甚至删除时会出现问题,给我如下错误:

git -c diff.mnemonicprefix=false -c core.quotepath=false reset -q HEAD -- "rootfolder/site/templates/article.php "

错误:无效路径“rootfolder/site/templates/article.php”致命:make_cache_entry 路径“rootfolder/site/templates/article.php”失败

关于如何解决此问题的任何建议,提前致谢。

小智 1

对我来说,这是 Windows/Linux 的事情。我的 travis 版本(在 Linux 虚拟机上)在我的代码中运行了一些测试,在C:/SomeFolder/someTestResult.file. 然后它继续提交这些更改并推送到C:/文件夹中的 github。

当我尝试git clone在我的 Windows 机器上时,麻烦来了:

$ git clone git@github.com:awesome/somegitrepo.git
Cloning into 'somegitrepo'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 940 (delta 5), reused 13 (delta 5), pack-reused 926
Receiving objects: 100% (940/940), 500.23 KiB | 364.00 KiB/s, done.
Resolving deltas: 100% (373/373), done.
error: Invalid path 'C:/SomeFolder/someTestResult.file'

Run Code Online (Sandbox Code Playgroud)

显然,由于该文件夹而出现了问题C:/。Windows 上的 GIT 认为C:/不是本地目录,而是根目录,因此someTestResult.fileWindows git 存储库中不存在 Linux 本地目录。我猜想它会假设它已被删除,甚至在我进行任何更改之前就已经进行了删除。


我的解决方案是打开 Linux 终端 ( WSL ) 并从存储库和推送中删除文件,以清理远程存储库。

基本上(在 WSL 中):

$ git clone git@github.com:awesome/somegitrepo.git
$ rm -rf C:/
$ git add .
$ git commit -m 'Removed residue test files'
$ git push
Run Code Online (Sandbox Code Playgroud)

我还更改了我的测试,以不生成奇怪的目录,并将生成的测试文件放在无论如何.gitignore