我的django项目中有local_settings.py
,这是每个开发者不同的自定义设置。
昨天,我错误地提交conf/local_settings.py
来回购并推送到bitbucket。这个项目是新的,我认为它无法回滚,因为文件是在第一次推送时提交的,
我从repo中移除了local_settings.py
而未通过git rm --cached ./conf/local_settings.py
删除。这适用于本地计算机。
当我对我的vps进行git pull时遇到错误。
.....
>>> git pull origin master
Updating f1d56d3..6163ffb
error: Your local changes to the following files would be overwritten by merge:
conf/local_settings.py
Please, commit your changes or stash them before you can merge.
Aborting
在拉动回购并自动更新代码后,如何让其他人不会删除他们的local_settings.py
?我是git的新手,所以如果其他人在这种情况下合并自己,我担心会出现问题。
我的案例:
A有local_settings.py
,B有local_settings.py
,他们都使用origin master
。
local_settings.py
,这是不同的。local_settings.py
不应该是回购。git rm --cached ./conf/local_settings.py
,并推送此提交。local_settings.py
而不删除它。答案 0 :(得分:2)
其他开发人员无法提取包含local_settings.py
的版本,因为Git知道它会覆盖他们(未跟踪)的版本。删除它并推送删除后,其他开发人员将能够再次拉动。
答案 1 :(得分:0)
(我想我正在谈论与Greg Hewgill的答案相同的事情)
master
*
.... <- A
假设你有上面的回购
你所做的是你错误地将local_setting.py
错误地推送到中央仓库,这使得它成为:
master
*
.... <- A <- B
(B包含local_setting.py
)
你试图解决的是
master
*
... <- A <- B <- C
(C包含git rm local_setting.py
)
因此你需要强制覆盖等
由于已经取消更改的存储库仍然在您的控制之下,并且在C
之后应该没有提交,您应该做的是修复
将master
重置为B
(您提交的local_setting.py
提交)
master
*
... <- A <- B <- C
使用git commit --amend来修复你的“之前的提交”(即B),不包括local_settings.py
... <- A <- B <- C
^ master
| *
\-- B'
并推送到您的中央仓库。
请注意,如果任何人在C
之后还有其他提交,则此方法将无效。