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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM