This bug exists in possibly all git versions. $ git init $ touch a.txt $ ln -s a.txt d $ git add . $ git commit -m + . [master (root-commit) f6b4468] + 2 files changed, 1 insertion(+) create mode 100644 a.txt create mode 120000 d $ ls -la total 12 drwxr-xr-x 3 ox ox 4096 Jan 19 14:10 . drwxr-xr-x 4 ox ox 4096 Jan 19 14:04 .. drwxr-xr-x 8 ox ox 4096 Jan 19 14:10 .git -rw-r--r-- 1 ox ox 0 Jan 19 14:10 a.txt lrwxrwxrwx 1 ox ox 5 Jan 19 14:10 d -> a.txt $ rm d $ mkdir d $ touch d/b.txt $ git add . $ git commit . -m + error: 'd' does not have a commit checked out fatal: updating files failed # I expect that git just replaces the link by the directory. But it makes problems. # Workaround: $ rm -rf d $ git add . $ git commit -m + . [master 522e6db] + 1 file changed, 1 deletion(-) delete mode 120000 d $ mkdir d $ touch d/b.txt $ git add . $ git commit -m + . [master 8a125ee] + 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 d/b.txt [System Info] git version: git version 2.43.0 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 6.1.0-8-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.25-1 (2023-04-22) x86_64 compiler info: gnuc: 13.2 libc info: glibc: 2.37 $SHELL (typically, interactive shell): /bin/bash [Enabled Hooks] Thanks in advance, Frank Schwidom