推送到git时忽略文件夹

推送到git时忽略文件夹,git,github,Git,Github,我正在尝试将更改推送到我的: 我在my_new_file.py中添加了新文件夹Dataa long并更改了代码: -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 mast

我正在尝试将更改推送到我的:

我在
my_new_file.py
中添加了新文件夹
Data
a long并更改了代码:

-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“数据”与任何文件都不匹配


据我所知,这是正确的做法,我做错了什么?我希望文件夹
Data
保留在我的本地文件夹中,但不要推送到我的存储库。

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


您可以采取一个额外的步骤来确保
数据/
不会意外地进入存储库:您可以编辑
.gitignore
文件并将
/Data
添加到其中


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

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


您可以采取一个额外的步骤来确保
数据/
不会意外地进入存储库:您可以编辑
.gitignore
文件并将
/Data
添加到其中


这样:
git status
将完全停止列出
Data
,您将无法在将来的提交中添加这些文件(至少在没有明确操作的情况下)。

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

  • 首先,告诉索引(也称为缓存或暂存区域),希望在下次提交时考虑此文件。对每个这样的文件都这样做

  • 其次,根据索引被告知要做的事情,您可以说“formthatcommit”

  • 唯一被推送(或抓取或拉取)的是提交

    因此,如果您从未将数据中的任何文件添加到索引中(使用
    git add
    ),那么它们将不会进入下一次提交,因此不会被推送,因此您可以这样做。Git可能知道(当您说
    Git status
    时,它会告诉您)数据存在,但如果它没有说(当您说
    Git status
    时),数据中的文件被暂存以提交,那么它们就不存在了


    了解索引中内容的另一种方法是说
    gitls文件--cache
    。如果您没有看到列出的任何数据文件,那么在形成下一次提交时,它将不包含任何数据文件。

    Git的工作方式是分两个阶段形成提交:

  • 首先,告诉索引(也称为缓存或暂存区域),希望在下次提交时考虑此文件。对每个这样的文件都这样做

  • 其次,根据索引被告知要做的事情,您可以说“formthatcommit”

  • 唯一被推送(或抓取或拉取)的是提交

    因此,如果您从未将数据中的任何文件添加到索引中(使用
    git add
    ),那么它们将不会进入下一次提交,因此不会被推送,因此您可以这样做。Git可能知道(当您说
    Git status
    时,它会告诉您)数据存在,但如果它没有说(当您说
    Git status
    时),数据中的文件被暂存以提交,那么它们就不存在了


    了解索引中内容的另一种方法是说
    gitls文件--cache
    。如果您没有看到列出的任何数据文件,那么当您形成下一次提交时,它将不包含任何数据文件。

    git中是否跟踪了
    数据中的任何文件?如果没有,那么git不知道/不关心这个文件夹。本质上,git只关心文件。文件夹只在包含跟踪文件的情况下才对it重要。因此,您可能无法从git中删除该文件夹,因为git未跟踪该文件夹。是的,我不想在我的存储库中推送200MB的数据。请注意,如果该文件夹已提交一次,您仍将推送该数据,因为它包含在以前的提交中。git中是否跟踪了
    data
    中的任何文件?如果没有,那么git不知道/不关心这个文件夹。本质上,git只关心文件。文件夹只在包含跟踪文件的情况下才对it重要。因此,您可能无法从git中删除该文件夹,因为git没有跟踪该文件夹。是的,我不想在我的存储库中推送200MB的数据。请注意,如果该文件夹已提交一次,您仍将推送该数据,因为它包含在以前的提交中。我已创建了
    gitignore
    ,谢谢。将
    .gitignore
    文件推送到我的存储库是一种好的做法,还是我可以将
    .gitignore
    放在
    gitignore
    中?
    .gitignore
    旨在提交并与您的存储库共享,所以是的,将其推送到您的存储库中。这样,任何克隆您的repo的人也将忽略其
    数据/
    目录(如果他们有)。也就是说,还有其他方法可以忽略git repo中的文件:例如,有关更多详细信息,请参阅我创建的
    gitignore
    ,谢谢。将
    .gitignore
    文件推送到我的存储库是一种好的做法,还是我可以将
    .gitignore
    放在
    gitignore
    中?
    .gitignore
    旨在提交并与您的存储库共享,所以是的,将其推送到您的存储库中。这样,克隆您的repo的任何人都将忽略其
    数据/
    目录(如果有)。也就是说,还有其他方法可以忽略git repo中的文件
    git rm -r --cached Data
    git commit -m "Removed folder from repository"
    git push origin master