To avoid data loss, Syncthing creates a temporary file during transfer with the name ~syncthing~.{filename}.tmp
If the transfer completes successfully, then it moves that file in place of the previous version. It's a new inode, not an update of the previous inode, so the hard link will be lost. Instead of using hard links, you could share your git repo folder directly using Syncthing, but use an .stignore file to exclude the files that you want to keep private (such as the .git directory). https://docs.syncthing.net/users/ignoring.html -Tim