2012-11-01 11 views
3

我得到了一個Git倉庫,我無意中推送了一個位於(相對於存儲庫根文件夾的路徑)4提交的文件:/Core/C:/testoutput/agwqe1s.xml在Windows上無效字符的Git提交

我在我的Linux機器上這樣做了,所以創建的實際文件沒有任何問題。問題是當我回到Windows機器時,我無法切換到擁有此文件的分支,因爲Windows拒絕創建這樣的文件夾。好吧,沒問題,我刪除了我的Linux端的文件並提交了它,但即使它很難,它也不起作用。 Git仍然試圖在Windows機器上創建這個非法文件,我不知道該怎麼做。

我知道我可以重新從頭開始回購,但後來我失去了整個提交日誌的歷史記錄,我想避免這種情況。我在這裏有什麼選擇?

+0

不熟悉git,但認爲您必須刪除'C:'文件夾及其所有子項(文件夾和文件)。但是你寫道,「刪除了這個文件」。 – Maximus

+0

我刪除了文件和文件夾。 Git不存儲空文件夾。 – SHiRKiT

回答

4

您不需要簽出該分支來更新它。從一個分支的作品這樣做:

git fetch 
git push . origin/problembranch:problembranch 
git checkout problembranch 

訣竅是推到同一個存儲庫。這就是.的用途。

+0

分支已更新,問題是當我嘗試結帳到分支時,會發生什麼情況是:無效參數'/ Core/C:/',因爲這是非法文件名。 – SHiRKiT

+1

更新Linux中的分支。推起來。在不同的分支上取窗口。只有在執行我發佈的推送命令後才檢出分支。 –

+0

沒有工作。我做了這個'git filter-branch --index-filter'git rm --cached --ignore-unmatch FILENAME'\ --prune-empty --tag-name-filter cat - --all' got this solution從http://stackoverflow.com/questions/2254601/bad-commit-to-git謝謝你的時間@AdamDymitruk – SHiRKiT