簡體   English   中英

如何從本地 git 存儲庫和本地文件系統中刪除文件,而不是從遠程存儲庫中刪除文件?

[英]How do I remove a file from local git repository and local file system but not from remote repository?

我一直在嘗試從本地文件系統和本地 git 存儲庫中刪除文件。

我正在使用git rm --cached <file name>

但是,每當我使用另一個文件並推送更改時,git 也會從我的遠程存儲庫中刪除本地刪除的文件。 我希望文件保留在我的 GitHub 上。

我真的很感激一些幫助。

git update-index --skip-worktree <file name>

這有點 hacky,但它允許您編輯(或刪除)文件,而不會顯示為已更改。

您可以稍后在需要時輕松恢復:

git update-index --no-skip-worktree <file name>

Git 文檔

--[no-]skip-worktree

當指定這些標志之一時,不會更新為路徑記錄的 object 名稱。 相反,這些選項設置和取消設置路徑的“skip-worktree”位。

SKIP-WORKTREE 位

Skip-worktree 位可以用一句話(長)來定義:當讀取一個條目時,如果它被標記為 skip-worktree,那么 Git 會假裝它的工作目錄版本是最新的,而是讀取索引版本。

如果您的本地設置需要一個特定版本,而遠程設置需要一個不同的版本,單獨使用 git:您可以創建兩個分支。

另一種可能性是使用語言特性來避免包含部分代碼。

對於 C++ 文件,這可能是文件中的#ifdef (或#ifndef )部分,以及您將在本地計算機上使用以排除文件內容的編譯選項。

當您在本地刪除文件並通過運行git rm --cached <file name>更新索引(暫存區域)時,刪除將被暫存。

如果在運行git rm --cached <file name>之后運行git status ,您將看到刪除已為下一次提交暫存。 現在,如果您對其他文件進行更改並添加這些文件以進行提交,刪除仍然是暫存的。 當您最終提交並推送更改時,刪除也在遠程完成。

但是,如果您仍然想完成這項工作,請不要暫存刪除

不要運行git rm --cached <file name> 只需手動刪除文件。 這將完成這項工作。 但是,當您運行git status時,它總是會列在未暫存的更改中,如下圖所示。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM