如果我在git中设置了一个post-receive hook,如
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f
是否会删除服务器上但不在我本地git repo上的文件?如果有,是否有办法阻止它?
答案 0 :(得分:12)
这取决于文件是否会被删除,具体取决于它们在结帐前是否已存在于存储库中。
如果在服务器上的repo中跟踪服务器上的文件(/var/www/www.example.org),但是新的checkout包含删除它们的更改,那么它们将在服务器端被删除
如果服务器上的文件中没有跟踪服务器上的文件,那么它们将保留。由于Git不了解他们,Git不会删除它们。
要判断它们是否在服务器上被跟踪,您可以git status <file in question>
。如果它说:
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# <file in question>
然后你知道结帐不会删除。
请注意,如果以后存在于新的结账时间而不是下一次结账,那么删除会将其删除。