Git rm --cached 但仍被跟踪?

Git rm --cached and yet still tracked?

我不想再跟踪本地文件系统中的文件和文件夹(比方说 settings.py 和 migrations/ 文件夹)。 (当我将我的代码推送到我的远程服务器时,他们第一次被跟踪)。

我想要的: 当我在我的远程服务器上 运行 a git pull 时,我只更新跟踪的代码并让 settings.pymigrations/ 文件夹关闭更新。

所以这就是我所做的:

(在我的本地文件系统上)

首先,

I added `myapp/settings.py` and `migrations/` in my .gitignore file.

然后,

git rm --cached myapp/settings.py
git rm --cached -r migrations/
git add .
git commit -m "remove settings.py and migrations folder"
git push -u origin master

settings.py 文件和迁移文件夹已成功从我的 GitHub 存储库中删除。

我的问题:当我在我的远程服务器上 运行 一个 git pull 时(当 settings.py 和 migrations 文件夹被修改时) ,就好像 settings.py 和迁移文件夹仍然被跟踪。 :

  $me@server git pull origin master
        ....
        error: Your local changes to the following files would be overwritten by merge:
            migrations/0001_initial.py
            myapp/settings.py
        Please, commit your changes or stash them before you can merge.
        Aborting

我希望服务器忽略这些更改,因为我没有从我的存储库中跟踪它们。

另一个有用的信息?: 我不知道这是否可以提供帮助,但是 我不想将更改从我的遥控器提交到 GitHub 存储库,我只想从 GitHub 存储库中提取更改(因为 'right' 代码必须来自我的本地存储库,除了 settings.py 和 migrations 文件夹在远程不同)。 因此,如果这有任何帮助,这里是我的远程服务器上 git status 的结果:

# On branch master
# Your branch is behind 'origin/master' by 5 commits, and can be fast-forwarded.
#
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    catalog/migrations/0004_auto_20150115_1214.pyc
#   deleted:    catalog/migrations/0005_auto_20150116_0855.py
#   deleted:    catalog/migrations/0005_auto_20150116_0855.pyc
#   deleted:    catalog/migrations/0006_auto_20150119_1153.py
#   modified:   myapp/settings.py
#

非常感谢您的帮助!

删除文件后,您执行 git add . 这可能会再次添加文件,除非您已将它们添加到 gitignore file.

我没有测试副本提供的解决方案(但肯定会测试是否再次出现相同的问题),因为我已经做了一些事情来解决我的问题: 我只是删除了远程存储库并再次在远程上做了一个 git 克隆,现在,这个远程存储库的行为符合预期。