问题 git checkout会删除不应该存在的文件吗?


如果我在git中设置一个post-recieve hook

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

是否会删除服务器上但不在我本地git repo上的文件?

如果它会,有什么办法可以阻止它吗?


10917
2018-02-10 17:31


起源



答案:


这取决于是否将删除文件,具体取决于它们在结帐前是否已存在于存储库中。

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

如果服务器上的文件没有在服务器上的repo中跟踪,那么它们将保留。由于Git不了解他们,Git不会删除它们。

要告诉您是否在服务器上跟踪它们,您可以执行此操作 git status <file in question>。如果它说:

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

然后你知道结帐不会删除。

如果以后存在于新的结账时间,请注意除了下一次结账后删除会将其删除。


12
2018-02-10 20:40



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


答案:


这取决于是否将删除文件,具体取决于它们在结帐前是否已存在于存储库中。

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

如果服务器上的文件没有在服务器上的repo中跟踪,那么它们将保留。由于Git不了解他们,Git不会删除它们。

要告诉您是否在服务器上跟踪它们,您可以执行此操作 git status <file in question>。如果它说:

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

然后你知道结帐不会删除。

如果以后存在于新的结账时间,请注意除了下一次结账后删除会将其删除。


12
2018-02-10 20:40



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