2 git merge perforce php4 git-p4
我有一台笔记本电脑和一台台式机,我正在努力学习使用git来管理我对perforce存储库的工作.我在桌面上成功使用git-p4,并且可以在笔记本电脑上成功使用它.但是,我希望能够做的事情之一就是"拉"或"推"更改从笔记本电脑到桌面,反之亦然,而不先将它们检入到与git同步的p4分支.
所以,这就是我设置两个回购的方法:1)使用git-p4 clone在我的桌面上设置一个repo.做一些工作,做几个提交git,几个提交到git-p4.一切都按预期工作.2)之后,在我的笔记本电脑上设置一个回购,准备在两台机器上工作.同样地,使用git-p4来复制现在的当前p4 repo(现在已经检查过几次修改,我在(1)中执行了git-p4.
现在,我希望做的事情:1)在桌面上做一些工作.将工作交给git,但不是p4.2)转到笔记本电脑,从桌面回购中做一个git pull ... 3)继续我的笔记本电脑工作,定期做git.4)(可选)从笔记本电脑提交p4 5)(可选)推送到桌面(或从笔记本电脑拉到桌面)并继续在桌面上工作等.
基本上,我希望能够在笔记本电脑和台式机之间来回推送/拉出东西,而无需实际登录到p4.
这听起来应该是可能的吗?如果是这样,我上面有错误的步骤吗?
以下是持续发生的事情:当我尝试在上面的(2)中执行"拉"时,我收到错误消息,说明存在冲突 - 这些冲突与p4分支的第一次检出之间发生的变化有关,第二个git-p4 repo创建的时间.换句话说,它们似乎是对第二个回购包含的代码中应该已经存在的更改的重放,但出于某种原因,它们不是.
我对git很新,所以我希望我的问题不是愚蠢或不可能理解.在此先感谢您提供任何帮助.
问题是你的两个存储库(台式机和笔记本电脑)没有意识到它们通过Perforce彼此相关.普通git-p4克隆将从树顶部获取,因此,您将使用不同的提交标识符进行相同的更改.这是因为git"commit"包含有关其父项的信息.
最简单的解决方案是按如下方式工作:
git clone 从桌面到笔记本电脑.现在,您的笔记本电脑和台式机都将拥有Perforce的共同历史记录.(您可以通过查看提交标识符git log之前的不同来验证这一点,但在这两个步骤之后,应该是相同的.)
在此之后,您应该能够在两个存储库之间拉动而不会发生冲突.
事实上,你也可以git p4 sync或git p4 rebase在任何一个地方,因为git-p4它足够聪明,可以检测对方的工作并继续.git pull如果可以的话,你的笔记本电脑也会尝试从原始服务器(你的桌面),如果我没记错的话.
另外两点建议:
git push在这两个存储库之间使用.推送到非裸存储库通常是不安全的,即那些具有工作树的存储库,例如您在此处描述的存储库.如果你进行这样的推送,那么索引将与工作树不同,并且诸如git status(因此git commit等)之类的东西将不会按照你期望的方式工作.master)并在主题分支上进行所有开发.只拉到这些分支.当你做一个git p4 sync或rebase,切换回你的master分支机构.然后从master向下合并到主题分支.这有助于保持上游历史非常清晰,并与您在git中所做的工作分开.| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |