我在我的系统上托管了一个小型开发服务器。从那个工作目录我创建了一个简单的git仓库。从那里我和另外一个用户将回购拉到了本地系统。
我认为其他用户已停止使用git repo。所以我直接在“服务器”(这是我的系统)上直接处理工作文件。
今天早上,其他用户随机推送回购。 BAM,我的所有文件都被立即删除了。整个文件夹结构被替换为他的副本。
我以为GIT应该告诉他 - 哇嘿,这些文件不匹配!先拉!但它没有做任何事!只是 - BAM,删除我的所有工作。
所以现在我被卡住了,我的所有文件都消失了 - 我检查了repo上的日志,它显示了他的推送 - 但它没有提到删除我的文件的事情 - 只添加他的。
我应该注意,我使用一些教程来设置裸仓库,处理使用repo来直接控制web服务器上的工作文件。这样的repo有以下post.update hook:
echo "***Updating Server Files***"
GIT_WORK_TREE=//myserver/myfolder git checkout -f
我的档案永远消失了吗?
答案 0 :(得分:1)
git checkout
手册页有关于您放入更新后挂钩的-f
checkout
(或“强制”)标记的说法:
即使索引或工作树与HEAD不同,也要继续。这用于丢弃本地更改。
如果您仍在使用“本地”仓库并推动自己更新服务器,那么无论您的其他用户做了什么,您都可以,因为您的本地提交和文件不受影响。
但是,如果看起来像是只是直接进行更改,而忽略了设置中的Git部分,那么您的更改可能已经消失(当然,除非您进行任何备份) 。就Git而言,它所消灭的所有东西都只是“局部变化”。