Git rm --cached 但仍被跟踪?
Git rm --cached and yet still tracked?
我不想再跟踪本地文件系统中的文件和文件夹(比方说 settings.py 和 migrations/ 文件夹)。 (当我将我的代码推送到我的远程服务器时,他们第一次被跟踪)。
我想要的: 当我在我的远程服务器上 运行 a git pull
时,我只更新跟踪的代码并让 settings.py
和migrations/
文件夹关闭更新。
所以这就是我所做的:
(在我的本地文件系统上)
首先,
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 克隆,现在,这个远程存储库的行为符合预期。
我不想再跟踪本地文件系统中的文件和文件夹(比方说 settings.py 和 migrations/ 文件夹)。 (当我将我的代码推送到我的远程服务器时,他们第一次被跟踪)。
我想要的: 当我在我的远程服务器上 运行 a git pull
时,我只更新跟踪的代码并让 settings.py
和migrations/
文件夹关闭更新。
所以这就是我所做的:
(在我的本地文件系统上)
首先,
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 克隆,现在,这个远程存储库的行为符合预期。