zoukankan      html  css  js  c++  java
  • git checkout 提示 “error: The following untracked working tree files would be overwritten by checkout” 解决

    问题描述

    Windows 或者 macOS 操作系统中,文件名是不区分大小写的。对于已经提交到仓库中的文件修改文件名的大小写,然后又用 git rm 命令将老文件从 Git 仓库删除掉,并保存下新的文件,这个时候,再进行切换分支的操作,就会出现这个提示:

    复现

    # 新建测试文件夹并切换到这个文件夹下面
    mkdir test-checkout-error && cd test-checkout-error
    # 新建空 Git 仓库
    git init
    # 新建测试文件 user.php
    touch user.php
    # 暂存新增文件
    git add .
    # 发现文件名大小写错误,进行修正
    mv user.php User.php
    # 再次暂存新增文件
    git add .
    # 提交到仓库
    git commit -m "add user.php and User.php"
    # 在当前分支基础上新建分支 dev
    git checkout -b dev
    # 删除索引中的 user.php
    git rm --cached user.php
    # 提交到仓库
    git commit -m "delete user.php"
    # 切换分支,报错
    git checkout master
    
    error: The following untracked working tree files would be overwritten by checkout:
            user.php
    Please move or remove them before you can switch branches.
    Aborting

    分析

    由于 Windows 或者 macOS 系统对于文件名是不区分大小写的,如果在 Git 仓库中应用了 ignorecase 的缺少配置 false,那么 Git 会区分文件名的大小写。

    解决

    在当前项目目录下执行

    git config core.ignorecase true

    然后再切换分支,进行分支合并等操作之后,再执行

    git config --unset core.ignorecase

    删除刚才的配置操作。

    参考链接:git - The following untracked working tree files would be overwritten by checkout - Stack Overflow

  • 相关阅读:
    Python之路【第四十五篇】:django日更
    Python之路【第四十四篇】:django日更
    C++ 调用动态链接库
    博客园美化
    postgresql中的UUID
    使用rustup安装rust环境
    MySQL 查询做排名
    Docker
    CentOS安装Docker和基础操作
    切换CentOS7的yum源为阿里源
  • 原文地址:https://www.cnblogs.com/imzhi/p/solution-to-git-checkout-error-tips.html
Copyright © 2011-2022 走看看