假设我有一个现有的Github存储库和该存储库的几个本地克隆。
现在我决定阻止某个文件被Git管理并从Github存储库中删除该文件。我在其中一个本地克隆中执行了以下命令:
echo "to_be_ignored_file_name" >> .gitignore
git add .
git commit -m 'make git ignore a certain file'
git rm -r --cached .
git add .
git commit -m "delete the file to be ignored from the repository"
git push origin
完成上述操作后,文件从Github存储库中删除,Git将从现在开始忽略该文件。但结果是,该文件的本地副本也被删除(对于其他克隆,该文件在git fetch origin
和git pull
之后被删除。)
如果我替换了上面命令序列的第二部分,如下所示:
git rm --cached to_be_ignored_file_name
git commit -m "delete the file to be ignored from the repository"
git push origin
然后,克隆中执行命令序列的本地文件未受影响,但其他克隆中的同一文件仍然在git fetch origin
和git pull
后被删除。
有没有办法在忽略和删除Github存储库中的文件的同时保持所有克隆中的本地文件不受影响?
答案 0 :(得分:0)
我不相信这是可能的。见Git: How to remove file from index without deleting files from any repository
还要考虑来自git-extras的git-lock
,或直接使用git update-index --skip-worktree
而不是从存储库中删除,以忽略本地更改(如果这类似于配置文件)。