我在计算机上有一个项目的本地存储库,已将其推送到远程github存储库。然后,我使用ssh将存储库克隆到共享的虚拟主机服务器上。
此后,我在计算机上进行了一些更改,这些更改已推送到github,然后合并到原始(主)存储库中。
我现在想在Web服务器上更新这些文件,但是我对git术语有些困惑。
Git clone X
返回
fatal: destination path 'spottermed' already exists and is not an empty directory.
我使用git pull吗? git获取?我以为这些命令可能会将文件下载回我的计算机而非Web服务器上的本地存储库中。
答案 0 :(得分:2)
git clone
应该在您的(本地)目录上创建远程存储库的克隆。
您需要在网络服务器上执行git pull
-同时更新本地存储库和的附加工作副本。
使用git fetch
仅会更改本地存储库,而不会更改本地文件(很可能是Web服务器的本地文件)。所以这不是那个。
答案 1 :(得分:1)
如果您在生产服务器上签出了master
分支(git clone
的默认值)并且只想更新该分支中的代码,则只需执行git pull
。
如果您朝着git flow之类的工作流程前进,那么develop
分支将成为存储库(以及git clone
)的主要分支。您可以将master
分支部署到生产环境,并且在所有代码都已合并到master中之后,仍然在master上执行git pull
。
一旦您确定了核心分支和部署,下一个要做的事情就是标记。
git flow
的一部分是一个release
进程,您在其中为每个发行版创建一个tag
。在这种情况下,您可以逐个标签签出代码,以将标记的代码放在整个master
分支的这些位置。然后,您可以git pull
而不是master
来获取checkout v1.x.x
的当前内容,而是在不同的tag
点处检出代码。这使得回滚生产中的错误非常容易:
如果v1.0.1
有错误,则git checkout v1.0.0
进行回滚。修复该错误,然后git checkout v1.0.1.1
部署此修补程序,或git checkout v1.0.2
部署下一个主要版本。