GitHub Desktop: “This file is empty”

2020-06-18 09:36发布

The file naaclhlt2016.tex is not empty on the client or in the repository, however GitHub Desktop displays "This file is empty". What could explain this?

enter image description here

The file naaclhlt2016.tex is present on GitHub repository:

enter image description here

git status:

enter image description here

It creates conflict when I try to sync:

enter image description here

3条回答
我命由我不由天
2楼-- · 2020-06-18 09:41

After discussion, if the change of the tex file is only in term of metadata (and not actual file content change, after a latex recompilation), the GitHub Desktop might be unable to display any change.

Since it detects no change even though the git status list this file, it falls back to a "this file is empty" message.

查看更多
走好不送
3楼-- · 2020-06-18 09:42

In addition to the @VonC response.

To dissmiss this alert

Git desktop

  1. unselect all changed files

  2. select only the "this file is empty" files

  3. try to commit

  4. Git will display a commit error, saying that you can't do that. After closing the modal, Git should delete the files from the changes list.

查看更多
再贱就再见
4楼-- · 2020-06-18 09:45

I'm finding similar results when there is a mismatch between the autoCRLF setting (e.g. in ~/.gitconfig) and the storage of line breaks in a text file. I have .php files that were downloaded on one (Windows) machine, zipped up and unzipped in an Apache folder, then I copied those to a cloned repo and it sometimes complains about every file as changed. The files stored on GitHub seem to have been stored with CRLF (they are larger).

I have been unable to get GitHub Desktop to process my modified files. I have tried a full fresh clone with autoCRLF=true, autoCRLF=input, and autoCRLF=false, and yet GitHub Desktop either reports the files as empty or every line changed, depending on the autoCRLF setting.

I believe it is entirely because they were stored on GitHub with the CRLFs in the files, and GitHub Desktop seems to assume that the autoCRLF governs (only) the checked out files, and won't compare with CRLFs on GitHub, even with autoCRLF=false. They are byte-for-byte identical files, but they are LF-only, and it's either complaining every line has changed, or that the file is empty.

If I do a git diff on one of the files, in this case feed.php, I see: warning: CRLF will be replaced by LF in API/events/feed.php. The file will have its original line endings in your working directory.

查看更多
登录 后发表回答