4

我似乎找不到任何可以帮助我解决问题的方法,并且希望有人可以帮助我,因为我还不完全精通 git,但我很喜欢它。

我们在 git 控制下有一个开发服务器,显示我们的开发分支。除了具有网站稳定版本的 dev 分支之外,我们还有一个 master 分支。

然后,在我们的生产服务器上,我们有了稳定的站点,但由于事情的发展,它不受 git 版本控制,我们只是手动更新了我们需要的文件。显然,稳定的主分支文件看起来有点类似于手动管理的生产文件集。

我们希望最终将生产服务器置于 git 控制下,显示 master 分支,就像 dev 服务器反映 dev 分支一样。

但是,我不确定如何在生产服务器上设置 git repo 并以某种方式将其与 master 分支合并。任何人都可以提供一些指示,提示或方向吗?

我在网上发现的唯一一件事涉及设置另外两个 repos(总共 3 个),一个是另外两个的父级,并以某种方式将它们组合在一起。我希望有一个不同的解决方案(或者至少是一个“是的,这是正确的”,所以我不会陷入一些愚蠢的兔子洞。(不确定使用 git 合并两个文件夹是否可能是某种开始??但是缺乏回应使得很难看出这是否是正确的追求)

谢谢大家。

4

3 回答 3

2

如果我正确理解了您的生产服务器上的站点,则该站点基于您的主分支(或您的 git 存储库中的某些其他提交),但不完全相同,即其中进行了一些手动更改,并且您不想丢失本手册变化。这是我在这种情况下所做的:

  1. 在某处签出或克隆您的主分支(或您的生产服务器数据所基于的提交)。
  2. 您现在有了一个干净的工作副本,其中包含生产服务器“基础”。
  3. 将所有数据从生产服务器复制到这个干净的工作副本。
  4. 用于git diff检查所有更改并提交相关更改。
  5. 如果您在步骤 1 中签出的基础不是您的主控,您现在可以简单地将使用的手动更改git merge master与您的主控合并。

我希望我正确地理解了你,这会引导你朝着正确的方向前进。

于 2012-06-05T20:46:50.870 回答
0

您不必对生产服务器进行版本控制:它应该已经被版本控制!

你需要做的是拥有一个单一的repo,它将被部署到任何地方:生产服务器、登台服务器、本地开发机器等。

您可以根据需要在本地工作,但在生产服务器中,您只需留在分支上。
在本地,当您完成某项工作时,它完全可以正常工作、经过测试等。只需将其变基(或合并)到(与)master中,然后git push origin master就可以了。然后,在您的生产服务器git fetch && git rebase origin/master(或拉取)上获取更改。

于 2012-06-05T20:57:08.030 回答
0

您无法可靠地送到具有工作目录的存储库。您将收到有关非裸存储库的错误,并且与系统作斗争对您的溃疡不利。

你应该做的是:

  1. rsync/scp 您的生产文件到本地系统,并将它们与适当的分支(例如 master)合并。
  2. 将主分支推送到生产主机可见的存储库。
  3. git clone从您的生产机器运行。
  4. 由于您不再在生产主机上进行更改,您甚至可以设置git pull为 cron 作业。

只要您不在生产机器上的 Git 工作树中进行手动更改,您就不需要做任何事情,除非git pull您想推出最新的更改。请记住:从您的生产系统中提取,不要推到它。

于 2012-06-05T21:09:35.630 回答