Git checkout会删除不应该存在的文件吗?

12
如果我在Git中设置了一个post-receive hook,就像这样:
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

这会删除服务器上但不在我的本地git仓库中的文件吗?

如果是的话,有没有办法阻止它?

1个回答

12

这取决于文件是否在检出之前已存在于仓库中,并且会被删除。

如果服务器上的文件(/var/www/www.example.org)已在仓库中进行了跟踪,但新的检出包括一个将它们删除的更改,则它们将在服务器端被删除。

如果服务器上的文件在仓库中没有跟踪,则它们将保留。由于Git不知道它们,因此Git不会将其删除。

要确定它们是否在服务器上被跟踪,您可以执行 git status <file in question>。如果它说:

# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       <file in question>

那么你就知道一个checkout不会移除.

请注意,如果后面的新checkout中存在,则下一个移除它的checkout将会移除它。


你经常使用 Git 吗?(相对于 SVN/Mercurial) - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接