我打破了我的(本地)git存儲庫。問題來自我的python腳本,它添加了以'./'開頭的文件。Git錯誤:對象xxxx:hasDot:包含'。'
當我嘗試混帳推,我得到這個:
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 4.03 KiB | 0 bytes/s, done.
Total 6 (delta 1), reused 0 (delta 0)
remote: error: object a6cc7dfb40e8c513415315d6ed84143448bd4f99: hasDot: contains '.'
remote: fatal: Error in object
error: unpack failed: unpack-objects abnormal exit
To [email protected]:xxx/yyy.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '[email protected]:xxx/yyy.git'
谷歌搜索時唯一接近我的問題是這樣的解答SO question在這裏筆者有hasDotgit:包含「git的」錯誤
我跑混帳顯示a6cc7dfb40e8c513415315d6ed84143448bd4f99:
./
./file1
./file2
...
file1
file2
...
而且混帳的fsck --full:
warning in tree a6cc7dfb40e8c513415315d6ed84143448bd4f99: hasDot: contains '.'
我想我已經刪除了./files在混帳但混帳RM」 ./file1"刪除定期文件1文件,而不是。/文件1。如果我運行命令再次我得到這個:
fatal: pathspec './file1' did not match any files
我不知道該怎麼辦,因爲我覺得互聯網上關於這個問題絕對沒有,甚至a search in the git source code不顯示任何結果。 我寧願修復這個在純Git比再次使用Python模塊(這也給我致命︰pathspec錯誤,當我嘗試刪除文件)。
EDIT1:git的LS-樹--long --abbrev --full名a6cc7dfb40e8c513415315d6ed84143448bd4f99
040000 tree 22b75ee - .
100644 blob d519532 3580 file1
...
100644 blob 03e914c 6754 fileN
沒有./file列表
EDIT2:同樣的結果如果- 全樹而不是- 全名
你可以顯示'git的LS-樹--long --abbrev --full-輸出名稱a6cc7dfb40e8c513415315d6ed84143448bd4f99'? – Roman
對不起,稍微錯誤的命令。請用'--full-tree'替換'--full-name'並再次運行(輸出可能是相同的,但可以肯定)。 – Roman
該檢查可以在[fsck.c]找到(https://github.com/git/git/blob/1310affe024fba407bff55dbe65cd6d670c8a32d/fsck.c#L557),它表示一個樹包含一個字面上名爲'.'的條目,它我們可以在'ls-tree'輸出中看到。我懷疑解決這個問題的最簡單方法是使用命令行git重新創建違規提交。 – Roman