【问题标题】:How to compare new project to existing Gitlab repo如何将新项目与现有 Gitlab 存储库进行比较
【发布时间】:2019-02-12 02:11:45
【问题描述】:

我有一个基于 CMS 的项目,我通过直接更新测试站点(复制文件)来保持同步,然后在测试后将这些文件复制到生产站点。它很笨拙并且容易出错。因此,我添加了一个 Gitlab 存储库,以便更有效地维护这些站点。我将生产文件复制到存储库,然后将存储库克隆到我的开发机器。我现在正在跟踪并将我的更改从我的开发机器提交到 Gitlab 存储库。

我的问题是我现在希望能够使用 git 将 Gitlab 存储库中的更改提取到测试和生产环境中。但我不知道如何让这些环境“意识到”Gitlab 存储库中的变化,而不是从存储库的“克隆”开始。我只想为每个环境添加 git 控件,然后开始拉取和合并这些更改。

有没有办法在没有克隆的情况下初始化每个环境,从而可以从 repo 中获取更改?

我使用 git init 命令将 git 添加到测试环境(远程服务器)以创建一个空的本地存储库,然后设置源并从存储库中提取。但我不确定这是正确的步骤。如果是这样,那么我如何确定与“拉”和本地文件有什么不同?这就是我卡住的地方。

我希望我可以比较本地文件和从 repo 中提取的文件之间的差异,然后合并我知道不同的几个文件。然后,接下来我需要做的就是在每次将开发更改推送到存储库时拉入更改。现在我的困惑是如何比较和同步更改,因为没有克隆来设置文件的基线。

【问题讨论】:

    标签: git gitlab


    【解决方案1】:

    您可以使用 cli 或任何 git-ui-tool 来管理您的存储库。 基本上了解 git 工作流是件好事:https://de.atlassian.com/git/tutorials/comparing-workflows 与分支一起工作。查看一个具有好名字的新开发分支,例如'功能/my_awesome_development'。 完成工作后,将其与 master 合并,并将 master 推送到 gitlab。删除 'feature/my_awesome_development' 因为它已经完成了。你的下一个分支可以是 'fix/my_awesome_development_didnt_work' ;)

    我建议再设立一个名为“生产”的分支。这仅在生产环境中的服务器上检出。 你现在所要​​做的就是进入你的源目录,git-branch 'production' 并从命令行使用'git pull origin master' 从 master 中拉取。 gitlab-master 源将被拉入您的工作分支。

    【讨论】:

    • 谢谢。我正在使用cli。我在回购中有不同的分支。我仍然不太明白如何从 Gitlab 存储库更新测试服务器实例,因为从未从存储库克隆测试实例。它最初是从生产实例复制来测试的,而不是克隆的。现在我需要同步这个从未“连接”到 Gitlab 存储库的测试实例。我了解 git-workflow 我只是找不到说明如何在不首先克隆 repo 的情况下将复制的、未克隆的实例作为该工作流的一部分。
    • 我猜git依赖于git。您可能会考虑一种用于同步文件的解决方案,例如 rsync 或更大的工具。如果您想查找这些文件中的差异,我推荐例如“diff”geeksforgeeks.org/diff-command-linux-examples
    • 不确定我是否采用了正确的方法,但我使用 git init 添加了一个本地存储库。使用 git add 添加本地文件。然后定义远程存储库并从该存储库运行 git pull 。结果没问题。我想我最终用 pull 替换了整个实例(不确定),但我想我得到了我需要的更新,希望将来只会得到更改的文件。可能与我试图避免的 git clone 相同....
    • 我想这是对的。 “git pull”是一个“git fetch & git merge”。如果您的本地分支上有未提交的更改,Git 会提醒您。
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2016-09-02
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    相关资源
    最近更新 更多