git签出是否会删除不应';你不在那里吗?

git签出是否会删除不应';你不在那里吗?,git,Git,如果我在git中设置一个post receive hook,比如 #!/bin/sh GIT_WORK_TREE=/var/www/www.example.org git checkout -f 这会删除服务器上但不在本地git repo上的文件吗 如果会,有什么方法可以停止吗?这取决于文件是否会被删除,这取决于文件在签出之前是否已存在于存储库中 如果服务器上的文件(/var/www/www.example.org)在服务器上的repo中被跟踪,但是新签出包含删除它们的更改,那么它们将在服务器

如果我在git中设置一个post receive hook,比如

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
这会删除服务器上但不在本地git repo上的文件吗


如果会,有什么方法可以停止吗?

这取决于文件是否会被删除,这取决于文件在签出之前是否已存在于存储库中

如果服务器上的文件(/var/www/www.example.org)在服务器上的repo中被跟踪,但是新签出包含删除它们的更改,那么它们将在服务器端被删除

如果服务器上的文件未在服务器上的repo中跟踪,则它们将保留。因为Git不知道它们,所以Git不会删除它们

要知道它们是否在服务器上被跟踪,您可以执行
git status
。如果它说:

# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       <file in question>
#未跟踪的文件:
#(使用“git add…”包含在将提交的内容中)
#
#       
那么您就知道签出不会删除

只需注意,如果新签出中存在比下一次签出更晚的内容,那么下一次签出将删除它。

您经常使用Git吗?(与SVN/Mercurial相反)