【发布时间】:2012-11-07 13:01:12
【问题描述】:
我浏览了网络,但找不到答案。 我想做的是以下几点:
- 我有一个 git 存储库,它已经使用了 1 年多,有很多提交
- 由于产品化,代码必须移到 P4 代表中。
- 但是,代码库(传输后)可能会在 git 和 P4 中发生变化
现在假设 git 中的引用分支是 master
我所做的如下:
- 将最新代码从git复制到P4并在那里提交
- 使用 git-p4 sync --branch=refs/remotes/p4/masterp4 //../ 在我现有的存储库中创建一个新分支
- git 合并 master 到 masterp4
- 由于缺少共同提交而无法正常工作
- 此外,git-p4 submit 无论如何都无法处理合并提交
另一个选择是变基
- 从 P4 中的空存储库开始
- 使用 git-p4 sync 在 git 中创建一个空的 masterp4 分支
- 将 master 重新定位到 masterp4
- 将 masterp4 重新定位到 remote/p4/master
- 导致数千个 p4 更改列表。
主要问题是主分支和这个 masterp4 分支之间的链接断开。 我想知道是否没有更简单的解决方案。不幸的是,我是一个 git n00b。
感谢您的任何想法,
菲利普
【问题讨论】:
-
Perforce 刚刚推出了 Perforce Git Fusion。 perforce.com/git-fusion
-
谢谢丹尼尔,我知道这一点,但一些同事告诉我,它在他们的环境中也没有很好地工作。但是,他们没有尝试 git-p4。否则我真的相信有一个解决方案。
-
你能用 --no-ff 合并来创建一个单一的提交吗?
-
这个博客可能会提供一些思考:perforce.com/blog/121030/git-fusion-working-open-source。它使用暂存存储库作为协调数据的一种方式,因为 Git Fusion 和 git-p4 都有一些限制。 (Git Fusion 将在明年初支持合并提交。)
-
也许 --squash 对 git merge 命令有帮助?这应该创建一个与合并分支具有相同效果的单个提交。 (虽然失去了历史)。