首页 > 解决方案 > 如何让 git 在不同的服务器上保持最新状态,并对它们进行单独的一次性更新?

问题描述

我有几台服务器在同一个系统上运行,但是随着时间的推移,我们在每台服务器上进行了多次本地更新,以便任务灵活。但是现在我们很难让每个人都及时了解本地更新的内容,考虑到我在本地和主要更改了某些代码行。

谁能给我一盏灯?

标签: git

解决方案


好吧,对于您的用例,我将配置一个中央 gitlab 服务器左右,所有服务器都向其拉取和推送,它管理合并/拉取请求并保持一切干净和同步。

如果您不希望这样,可以同步它们,条件是所有人都可以访问某个目录/位置/路径,这可以充当中央存储库,以便其他存储库可以推/拉到它。

  • 让我们称这个位置/path/to/central
  • 将存储库克隆到那个/path/to/central
  • 将此中央存储库作为远程添加到您要同步的其他版本,例如,如果您在路径上有一个存储库:/path/to/repo1,则:
cd /path/to/repo1
git remote add upstream /path/to/central
git checkout -b repo1-changes
git push upstream repo1-changes

现在您已将 repo1 中的更改推送到中央存储库:

cd /path/to/central
git branch -a

# output will look like:
  repo1-changes
* master

在不同服务器上的其他版本上执行相同的步骤,然后返回中央存储库。

所有更改现在都在一个中心位置,您可以按照自己喜欢的方式进行合并。

将所有内容合并到中央存储库后,在获取它后master返回到服务器集合:masterupstream/master

cd /path/to/repo1
git checkout master
git fetch upstream
git reset --hard upstream/master

这是一个手动过程,但最后所有主分支在每台服务器上都应该是相同的。

希望这会有所帮助:)


推荐阅读