我正在尝试将更改推送到repository:
-My Folder
--Chapter 1
--Chapter 2
--Chapter 10
--my_new_file.py
我很久没有更改Data
中的代码,所以添加了新文件夹my_new_file.py
:
-My Folder
--Chapter 1
--Chapter 2
--Chapter 10
--my_new_file.py
--Data
我尝试过:
git rm -r --cached Data
git commit -m "Removed folder from repository"
git push origin master
但是我明白了:
致命:pathspec“数据”与任何文件都不匹配
据我了解,from this answer是正确的做法,我在做什么错?我希望文件夹Data
留在我的本地文件夹中,但不要推送到我的存储库中。
答案 0 :(得分:1)
为了使git知道Data/
中存在某些内容,您首先需要暂存文件夹并创建提交。
如果您尚未这样做(看起来好像没有这样做),则不会跟踪Data/
中的文件,并且可以直接推送而无需运行git rm --cached
。
您可以采取进一步的措施来确保Data/
不会意外进入您的存储库:您可以编辑.gitignore
文件并向其中添加/Data
。
那样:git status
将完全停止列出Data
,并且您将无法在以后的提交中添加这些文件(至少没有显式操作)。
答案 1 :(得分:1)
Git的工作方式是您分两个阶段进行提交:
首先,您要告诉索引(也称为缓存或临时区域)要在下一次提交中考虑此文件。对每个这样的文件执行此操作。
第二步,根据指示索引执行的操作,说出“提交表单”。
唯一被推送(或获取或拉取或其他方式)的东西就是提交。
因此,如果您从未将Data中的任何文件添加到索引中(使用git add
),则它们将不会进入下一次提交,因此不会被推送,所以您就可以了。 Git可能知道(并告诉您,当您说git status
时)数据存在,但是如果不说(当您说git status
时)数据已准备好提交,则它们不是。
了解索引内容的另一种方法是说git ls-files --cache
。如果未列出任何数据文件,则在形成下一个提交时,它将不包含任何数据文件。