2017-01-09 199 views
2

我正在對第二個要刪除的文件執行此命令(第一個是JetBrains的.idea文件夾文件,它現在位於.gitignore中),但我不是能:git說我已經取消了更改但我沒有顯示

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch gf5/console/basic.php' --prune-empty --tag-name-filter cat -- --all 
Cannot rewrite branches: You have unstaged changes. 

所以我怎麼知道什麼是「未分級」文件Git是指當它不一一列舉了,我該如何解決這個問題?

PS這個問題不存在,我沒有任何問題,也沒有做過任何存儲這個回購有史以來。

注:我做了git status和接受這一點:

Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

    modified: gf5/console/basic.php 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

//(and a whole long list of files) 
+1

'git status'是否返回任何內容? –

回答

5

AHA!我想清楚發生了什麼事。仔細閱讀最後幾句話。

答案是先做:

git status 

這表明在RED修改的文件,這我相信意味着Git的心中他們已經在某種程度上「刪除」。然後我做了:

git add --all 

從那裏我承諾使用SourceTree的所有階段文件(對不起,我沒有一直留在命令行)。我繼續前進,同時將更改推送到服務器,但這是可選的。

上述命令然後成功工作。

當我試圖在不同的文件上運行上述命令時,我遇到了同樣的問題。於是我又跑git status和事實證明,我只是從歷史中刪除的文件仍然,所以你需要這樣做:

git rm /previous_file_you_just_removed_from_history.php 

而且澄清,過濾分支命令將刪除來自所有提交的文件的歷史記錄,但它不會刪除您對該文件所做的更改。即刪除的文件仍然是您對此做出的所有更改的總和。我希望這有助於爲其他人清除這個概念。

+2

不,不是「刪除」,只是修改。 –

相關問題