0

我的本地 Git 工作流程应该如何?

我正在使用它来开发一些将在本地服务器上运行的软件。我还想将此服务器用作 git repo 主机。

到目前为止,我已经使用 --bare 在服务器上初始化了一个新的 repo,并将我当前的代码推送到它。

如何将该代码签出到服务器上的目录(即/var/www/)?

我认为我应该创建一个开发分支,然后在我的开发机器上使用 git pull 来创建它,然后在我接近完成一组特定功能时从开发分支创建一个发布分支。然后,此发布分支将与主(实时/生产)分支合并 - 按照此处描述的工作流程。

我的主要问题(上图)是:如何将代码从裸 git 存储库签出到服务器上的实时目录?

4

5 回答 5

1

如何将该代码签出到服务器上的目录(即/var/www/)?

例如

cd /var/www && git clone /path/to/repo .

如何从我的裸 git repo 签出代码到我服务器上的实时目录?

cd /var/www && git pull 
于 2012-06-13T08:29:41.870 回答
1

我建议您在托管您的实时站点的服务器上也设置一个裸仓库。

要开始工作,您将那个裸仓库克隆到本地开发机器

localhost:~# git clone you@yourlivehost:/path/to/bare /path/to/local/dev

在该仓库中,您可以完成所有开发/提交/分支/合并的工作,完成后,您将推送到裸仓库。

您可以手动登录到您的实时服务器并将更改从裸仓库拉到您的实时服务中,或者让 post-update-hook 为您完成这项工作。

手动(第一次):

localhost:~# ssh you@yourlivehost
yourlivehost:~# cd /path/to/live/server
yourlivehost:/path/to/live/server# git clone /path/to/bare .

手动(其他时间):

localhost:~# ssh you@yourlivehost
yourlivehost:~# cd /path/to/live/server
yourlivehost:/path/to/live/server# git pull

这假设您一直在 master 上工作。如果您遵循更复杂的分支策略(如您提供的链接中所述 - 顺便说一句,这与我喜欢使用的策略相同)您必须确保在推送之前将所有所需的更改从分支开发合并到 master从本地开发主机到裸仓库。

要让钩子自动为您执行此操作,请编辑文件/path/to/bare/hooks/post-update并填写类似的内容

cd /var/www
git pull origin

确保该文件是可执行的,并且您用于运行 repo 的用户对 webserver-directory 具有写入权限。

于 2012-06-13T08:40:48.873 回答
0

试试这个:

git clone file:///path/to/your/bare-repo

或主机之间的这个:

git clone user@host:/path/to/your/bare-repo
于 2012-06-13T08:31:05.430 回答
0

我将我的 GIT 存储库的内容硬链接到我的实时安装。

查看我的要点: https ://gist.github.com/2652879

在我更新了所有 repos 之后,我在我的 htdocs 目录中执行了这个。这样,我在实时安装中始终拥有存储库的内容,可以在实时安装中进行更改,当它们很好时,无需任何工作即可提交它们。

这与以前的 anserws 相比有一个很好的优势,即我在实时安装中没有直接的 repo,而只有其中的文件。

于 2012-06-13T08:33:52.743 回答
-1

gitolite!这是在本地或通过密钥访问的远程机器上组织自己的 git 服务器的便捷方法。因此,将来当您需要将某人添加到您的存储库之一时,这将不是问题。

于 2012-06-13T08:39:42.777 回答