在 Git 中刪除提交的檔案
![在 Git 中刪除提交的檔案](/img/Git/feature-image---remove-committed-files-in-git.webp)
有時我們意識到我們需要手動找出哪些檔案對當前提交很重要,並從工作目錄中刪除不需要的檔案。手動過程可能很困難,尤其是當我們在一個團隊中構建一個包含許多開發人員的大型專案時。
假設我們在倉庫中提交了錯誤的檔案,並希望將其從分支中刪除。git reset
命令在處理 Git 時是一個有用的工具。此命令用於從特定 Git 提交或分支中的工作目錄中刪除特定檔案。例如,如果要從 HEAD
指向的提交中刪除檔案 "README.md"
,可以執行以下命令。
git reset -soft HEAD@{1}
我們可以通過執行以下命令從特定提交中刪除檔案,同時將更改保留在工作目錄中。
git reset HEAD@{1}
正如我們所知,用於從提交中刪除檔案的命令是 git reset
。此命令可與 -p
和 -u
選項一起使用。 -p
選項允許我們將更改保留在工作目錄中但重置索引。選項 -u
重置索引和工作目錄。
讓我們通過以下示例練習從提交中刪除檔案。假設我們建立了一個新的提交併新增了一個名為 file1
的檔案。現在,我們要從提交中刪除這個檔案。我們可以使用以下命令開始此操作。
git reset -p HEAD~1
此命令命令 Git 將索引和工作目錄重置回提交 HEAD~1
。在我們建立提交之前,我們將 file2
新增到工作目錄。現在,我們要從工作目錄中刪除此檔案,但將其保留在索引中。可以使用以下命令啟動它:
git reset -u HEAD~1
此命令命令 Git 將索引和工作目錄重置為提交 HEAD~1
。現在,假設我們已將三個檔案新增到索引中,並且我們想要從索引中刪除除 file3
之外的所有檔案。我們可以使用以下命令開始:
git reset -- '-p -- file3'
此命令命令 Git 保留 file3
並從同一分支內的索引中刪除其他檔案。命令 git reset
可用於從任何提交中刪除檔案。該命令可以與 -p
選項一起使用,以保留索引和工作目錄中的更改並從提交中刪除檔案。
該命令還可以與 -u
選項一起使用以重置索引和工作目錄,但將檔案保留在提交中。
如果我們想從特定提交中刪除檔案,我們可以使用帶有 -hard
選項的 git reset
命令並在 HEAD
之後指定提交。例如,如果我們想從提交測試中刪除檔案 "README.md"
,我們可以執行以下命令。
git reset -hard test
請記住,命令 git reset --hard
會丟棄你對工作目錄所做的任何更改。如果你編輯了一些檔案並刪除了其他檔案,最後一個命令將刪除你對暫存區域中仍然存在的檔案所做的任何更改。
但是,假設我們不想要該檔案並希望將其從暫存區域中刪除並使其成為未跟蹤的檔案。在這種情況下,我們將使用帶有 --cached
選項的 git rm
命令。如果我們還想從工作目錄中刪除它,我們將跳過該命令中的 --cached
選項。
$ git rm --cached <file-name>
在這裡,我們幾乎完成了檔案恢復過程。不相關的檔案已從暫存區域中刪除,所有其他更改都已暫存。現在,我們必須使用命令 git commit
將這些更改提交到分支。我們現在已經恢復了我們的提交,但這不包括不需要的檔案。
$ git commit -m "commit message"
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn