合并具有不相关历史的两个存储库的更改

时间:2018-06-11 02:15:58

标签: git

我创建了一个新的存储库(New),其中包含我(主)存储库的文件副本。我这样做是因为我不想与一些新的开发人员共享整个存储库历史记录,因为它包含非常敏感的数据。

我的想法是将这个全新的存储库与文件的当前状态一起提供给新的开发人员但是有一个空的历史记录,请他们在那里工作,然后从(新)存储库合并到我的原始文件中,(main )存储库。

我还需要另外做,我需要将我的(主)存储库中的更改合并到(新)。

我的第一次尝试是将(新)repo作为远程添加到我拥有主存储库的文件夹中,然后合并到(main):

git merge --allow-unrelated-histories evisa_clone/master

但是,这会导致(主)存储库上已更改的所有文件都被视为冲突,即使在(新)存储库上未修改文件,很多文件都有both added git status屏幕。

我还有什么选择?

1 个答案:

答案 0 :(得分:0)

您希望接受对存储库的更改,而不向其他人提供整个历史记录,但他们可以使用文件的当前状态。这可以通过单独的克隆完成,但只能使用 +------ myserver.org --------+ | +----+ +- typical -+ | +--------+ alice@myserver.org:22 | | | | SSH | | | client | ----------------------> -+--+----+---->| service | | +--------+ all names but `git` | | ? | +-----------+ | | | | | | | ? | +- docker --+ | +--------+ git@myserver.org:22 | | | | with | | | client | ----------------------> -+--+----+---->| GitLab | | +--------+ only user `git` | | | | | | | +----+ +-----------+ | +----------------------------+

进行克隆

步骤

  • depth=1

  • 其他开发人员(TOD)将在这个新的克隆上工作 拥有任何较旧的历史记录,但具有相关的有效SHA ID 与您的存储库。

  • TOD应该从这个新的存储库中分离并为其创建分支 他们所有的工作。

  • 为了完成他们的工作,他们基本上会做他们的拉请求 分支到深度= 1分支。

  • 要让他们获取存储库的更新,您需要保留 原始深度= 1个原始存储库的repo分支 他们将继续他们的工作:取,分支, 提交,打击

替代

  • git clone <repo> --depth=1 --branch=<dev or whatever>
  • 您将此新存储库视为要解决的问题。
    • 历史可能很重要但如果不需要,则不需要。