我在Vagrant框上本地开发,并将我的更改从我的本地仓库推送到我的私有GitLab服务器。从那里,我合并到master,并在生产服务器上拉这些更改。我用来拉动生产的命令:
git fetch --all
git checkout --force {last-commit-ref}
现在,有时这需要一瞬间。它只触及更改的文件,这没问题。但有时需要30秒。你得到某种类似的计数器,如2574/3601对象或其他东西,文件不同步。
似乎没有更多文件的情况需要更长的时间。
为什么像这样的结账有时需要一瞬间,有时需要一个世纪?似乎需要30秒时,它会再次检出每个文件 - 即使它们没有改变?
修改:澄清一下,git checkout
花了很长时间,而不是git fetch
。
答案 0 :(得分:1)
-
Update
强> 经过与提问者的长时间聊天后,我发现他有一个更新所有文件的钩子(chmod)。因此,每当git更新时,他都必须重新做一遍。
切换到所需的用户解决了问题。
当您运行提取时,从远程执行下载全部更改。 这就是fetch的作用。当你结账时,它会在下载后在本地签出所需的提交。
git fetch
从远程存储库下载所有内容,以便您的本地资源与遥控器完全同步,并且您拥有与遥控器相同的副本(无需在遥控器上进行更改)。
有时git需要一些时间来下载和重新打包内容。