35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
1️⃣ Reproduce the situation
|
||
|
||
- Initially, my repo had a file called readme.md.
|
||
- I renamed it to README.md (only case change).
|
||
- After running:
|
||
|
||
`git status`
|
||
|
||
Git showed no changes, meaning it did not detect the rename.
|
||
|
||
📸  – Git did not show any changes after renaming readme.md → README.md
|
||
|
||
2️⃣ Investigate why Git is not tracking the rename
|
||
|
||
- Git depends on the filesystem to detect changes.
|
||
- On Windows (NTFS, FAT), the filesystem is case-insensitive.
|
||
- That means readme.md and README.md are treated as the same file.
|
||
- Because Windows reports no difference, Git assumes nothing happened.
|
||
|
||
3️⃣ Correct steps to make Git recognize and commit the rename
|
||
|
||
To force Git to recognize the case-only rename:
|
||
|
||
`git mv -f readme.md README.md`
|
||
`git commit -m "Rename readme.md to README.md"`
|
||
|
||
4️⃣ Underlying reason
|
||
|
||
- Git itself is case-sensitive → it can distinguish between readme.md and README.md.
|
||
- Windows filesystems are case-insensitive → both names point to the same file.
|
||
- On Linux/macOS (case-sensitive), Git would automatically detect the rename.
|
||
- On Windows, we must explicitly force it with git mv -f.
|
||
|
||
✅ Conclusion:
|
||
It’s due to the way Git (case-sensitive) interacts with Windows (case-insensitive) filesystems. |