推送到git时忽略文件夹

时间:2020-11-12 19:45:11

标签: git github

我正在尝试将更改推送到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留在我的本地文件夹中,但不要推送到我的存储库中。

2 个答案:

答案 0 :(得分:1)

为了使git知道Data/中存在某些内容,您首先需要暂存文件夹并创建提交。
如果您尚未这样做(看起来好像没有这样做),则不会跟踪Data/中的文件,并且可以直接推送而无需运行git rm --cached


您可以采取进一步的措施来确保Data/不会意外进入您的存储库:您可以编辑.gitignore文件并向其中添加/Data

那样:git status将完全停止列出Data,并且您将无法在以后的提交中添加这些文件(至少没有显式操作)。

答案 1 :(得分:1)

Git的工作方式是您分两个阶段进行提交:

  1. 首先,您要告诉索引(也称为缓存或临时区域)要在下一次提交中考虑此文件。对每个这样的文件执行此操作。

  2. 第二步,根据指示索引执行的操作,说出“提交表单”。

唯一被推送(或获取或拉取或其他方式)的东西就是提交。

因此,如果您从未将Data中的任何文件添加到索引中(使用git add),则它们将不会进入下一次提交,因此不会被推送,所以您就可以了。 Git可能知道(并告诉您,当您说git status时)数据存在,但是如果不说(当您说git status时)数据已准备好提交,则它们不是。

了解索引内容的另一种方法是说git ls-files --cache。如果未列出任何数据文件,则在形成下一个提交时,它将不包含任何数据文件。