Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git restore保持在两个同名但大小写相反的文件之间切换_Git - Fatal编程技术网

Git restore保持在两个同名但大小写相反的文件之间切换

Git restore保持在两个同名但大小写相反的文件之间切换,git,Git,我想摆脱git中的一些变化。假设文件名为ABC.sql 如果我执行git restore ABC.sql,它会显示一个文件“ABC.sql”,然后如果我尝试执行git restore ABC.sql,则“ABC.sql”文件会返回 除了git restore,我还尝试了: git签出 git重置 但似乎没有什么能帮我摆脱这个文件。 任何帮助都将不胜感激 我将做两个假设: 您正在Windows或OSX中工作。本机Windows不区分大小写,OSX配置为不区分大小写,但Git是 您签入了两个文件,它

我想摆脱git中的一些变化。假设文件名为ABC.sql 如果我执行
git restore ABC.sql
,它会显示一个文件“ABC.sql”,然后如果我尝试执行
git restore ABC.sql
,则“ABC.sql”文件会返回

除了git restore,我还尝试了:

  • git签出
  • git重置
  • 但似乎没有什么能帮我摆脱这个文件。
    任何帮助都将不胜感激

    我将做两个假设:

  • 您正在Windows或OSX中工作。本机Windows不区分大小写,OSX配置为不区分大小写,但Git是
  • 您签入了两个文件,它们的文件名相似,但大小写不同
  • 您可以使用Git Bash检查#2,并从repo的根目录运行以下命令:

    git ls-tree -r HEAD | grep -i abc.sql
    
    如果您在列表中同时看到两个文件:“abc.sql”和“abc.sql”,那么您就知道这两个文件都是以相似的名称进入回购协议的。这种情况有多种可能发生,例如,如果此回购协议的某些用户不使用Windows,或者该文件是在具有不同外壳的不同分支上创建的,并且两个分支都合并在一起

    最好的做法是检查文件的两个版本,然后删除一个或重命名它(并提交更改),这样Windows用户就不会再有这个问题了。根据您的远程Git服务,您通常可以启用一些设置,以防止任何人推送包含仅大小写不同的分支和文件的提交。您也可以在本地repo中对此进行配置,但如果可能,最好在远程服务器级别停止此问题。

    我正在使用OSX

    对我来说,有效的方法是从缓存中删除文件:
    $git rm——缓存的abc.sql

    这有帮助吗?文件是否不同?是否使用windows?默认情况下,Windows不区分大小写(更改它不是一个好主意),这是git for Windows的一个已知问题