[英]How to remove file from git commit
我不小心在我的 git 提交中添加了一個大文件,現在我正試圖再次刪除它。
來自https://help.github.com/articles/remove-sensitive-data/我受到啟發嘗試這個
git filter-branch --force --index-filter \'git rm --cached --ignore-unmatch .ntvs_analysis.dat' \--prune-empty --tag-name-filter cat -- --all
但我結束了
>_
我期待的是 $ 而不是。 如果我輸入'
我收到這個錯誤
fatal: ambiguous argument 'rm': unknown revision or path not in the working tree
.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
之后我做了一些我想保留的承諾。 如何從我的提交中刪除大文件,以便我可以上傳到 github。
為了不丟失您添加的文件,您可以按照以下步驟操作:
git reset --soft HEAD~1
- 這會將分支重置為之前的快照,同時保留所有文件暫存git reset HEAD file_to_remove
- 這將從暫存中刪除 test.txtgit commit -a -m "commit message"
- 在沒有要刪除的文件的情況下重新提交你的暫存更改只是一個重要說明 - 以上假設您的提交未推送到公共存儲庫(在這種情況下,不建議使用 git 重置)
問題是您轉義了單引號以啟動命令,因此--index-filter
選項收到了單個參數'git
。 >_
是當您結束該行而沒有關閉您打算作為結束引號的未轉義單引號時的繼續提示。 錯誤發生是由於git
誤解了 arguments 的結果序列。正確的命令很簡單
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch .ntvs_analysis.dat' --prune-empty
(刪除了第一個單引號和--prune-empty
選項之前的反斜杠。我完全刪除了--tag-filter
,因為我不確定它是如何需要的,盡管--tag-filter cat -- --all
幾乎可以肯定所有都是不正確的。)
恢復到之前的 git 提交使用
# Moves pointer back to previous HEAD git reset --soft HEAD@{1}
只需刪除您的文件
rm <filename>
然后再次提交您的更改
git commit -a
恢復到上次提交
git reset --soft HEAD@{1}
從暫存文件列表中刪除文件
git restore --staged file-name
添加新提交
git commit -m "commit-msg"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.