从暂存区 git 中删除“h origin....”文件

Posted

技术标签:

【中文标题】从暂存区 git 中删除“h origin....”文件【英文标题】:remove "h origin...." file from staging area git 【发布时间】:2018-06-14 13:48:23 【问题描述】:

我在暂存区的某个地方有一个奇怪的文件,我不想提交。但是我很难删除它...

$ git st
On branch 112929_shedd
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   RDI.Core/Business/Utilities/IntranetMaintData.cs
        new file:   "h origin \357\200\27295320_fix_text"
        modified:   privatedn/Employees/SkillsMatrix/Certifications.aspx
        modified:   privatedn/Employees/SkillsMatrix/Education.aspx
        modified:   privatedn/Employees/SkillsMatrix/Organizations.aspx
        modified:   privatedn/Employees/SkillsMatrix/ProjectHistory.aspx
        modified:   privatedn/Employees/SkillsMatrix/Publications.aspx
        modified:   privatedn/Employees/SkillsMatrix/References.aspx
        modified:   privatedn/Employees/SkillsMatrix/SkillsGroupDetails.aspx
        modified:   privatedn/Employees/SkillsMatrix/SkillsMatrixMaster.master
        modified:   privatedn/Employees/SkillsMatrix/TextFilter.aspx
        modified:   privatedn/MenuGroupDetails.aspx.cs

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   privatedn/RDI.Intranet.csproj

$ git rm --cached "h origin \357\200\27295320_fix_text"
fatal: pathspec 'h origin \357\200\27295320_fix_text' did not match any files

我想删除“h origin \357\200\27295320_fix_text”

【问题讨论】:

也试过 git reset HEAD "h origin \357\200\27295320_fix_text" 请添加ls的输出。该文件应该在那里,因为它没有在“未暂存”部分中列出。 Unstage only new files using Git的可能重复 【参考方案1】:
git rm h\ origin\ *_fix_text

git rm "h origin "*_fix_text

【讨论】:

感谢您的反馈,但没有奏效。我正准备把我的树枝吹走【参考方案2】:

你在正确的轨道上:

git rm --cached "h origin \357\200\27295320_fix_text"

git status 用双引号和反斜杠打印此名称的原因是该名称本身包含不可打印的字符。如果 Git 尝试打印字符,它们不一定会正确显示。 The three byte sequence 0357, 0200, 0272 (decimal 239, 128, 186) is the UTF-8 encoding of the Unicode character U+F03A, which is in a reserved block. 它可能会打印一个奇怪的块状字符(在我的 Mac 上会打印),或者根本不打印,或者谁知道呢。

不知何故,您必须将相同的字节序列输入到git rm --cached。由于您似乎使用理解 POSIX 编码的 sh/bash-ish shell,您可以尝试:

git rm --cached $'h origin \357\200\27295320_fix_test'

它使用$'...' 语法,它告诉shell 以与Git 生成它们相同的方式解释转义序列。 (您必须使用单引号,而不是双引号。)

(顺便把Mac的输出贴在这里:

$ echo $'h origin \357\200\27295320_fix_test' 
h origin 95320_fix_test

在我的浏览器中显示为同一个奇怪的块状字符——Mac 显示该 Unicode 字符的最佳尝试。我不确定它在其他操作系统上的其他浏览器上如何显示。)

【讨论】:

以上是关于从暂存区 git 中删除“h origin....”文件的主要内容,如果未能解决你的问题,请参考以下文章

Git删除文件或者目录

git命令——git rmgit mv

Git管理修改撤销和删除文件

git学习——git的文件状态

Git常用命令汇总

git基础详解