首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-p4和从其他回购中提取

git-p4和从其他回购中提取
EN

Stack Overflow用户
提问于 2009-10-25 05:55:46
回答 1查看 1.4K关注 0票数 2

我有一台笔记本电脑和一台台式机,我正在努力学习如何使用git来管理我的工作。我正在台式机上成功地使用git-p4,也可以在笔记本电脑上单独使用它。然而,我想要做的事情之一是“拉动”或“推送”从笔记本电脑到台式机的更改,反之亦然,而不必先将它们检入到p4分支与git同步。

因此,下面是我在设置这两个repos时所做的工作: 1)使用git-p4克隆在我的桌面上安装一个回购程序。在上面做一些工作,使几个提交到git,还有一些提交到git-p4。一切都如期而至。2)稍后,在我的笔记本上设置一个回购程序,为在这两台机器上工作做准备。类似地,使用git-p4来复制现在的p4回购(现在已经检查了几个版本,我在(1)中做了git-p4。

现在,我希望做的是: 1)在桌面上做一些工作。将工作提交给git,而不是p4。2)到笔记本电脑上,拉一拉.从桌面回购。( 3)继续我在笔记本电脑上的工作,定期复习git。4) (可选)从笔记本5提交到p4 )(可选)推到桌面(或从膝上型计算机拉到桌面)并继续在桌面上工作等。

基本上,我希望能够在笔记本电脑和台式机之间来回推拉东西,而不需要实际登录到p4。

这听起来像什么应该是可能的吗?如果是的话,上面有没有我做错的步骤?

这里一直在发生着这样的事情:当我尝试执行上面(2)中的“拉”操作时,我会收到错误消息,说明存在冲突--这些冲突与p4分支的第一次签出和第二次git-p4回购创建之间的更改有关。换句话说,它们似乎是对本应在第二次回购包含的代码中进行的更改的重播,但出于某种原因,它们并不是。

我对git很陌生,所以我希望我的问题不是疯狂的,愚蠢的,也不是无法理解的。提前感谢你能给予的任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2009-10-26 00:12:25

问题是,您的两个存储库(台式机和膝上型计算机)没有意识到它们通过Perforce相互关联。正常的git-p4克隆将从树顶获取,因此,您将得到不同的提交标识符,以进行相同的更改。这是因为git“提交”包含有关其父母的信息。

最简单的解决方案是按以下方式工作:

  1. 在桌面上创建git-p4克隆。
  2. 从台式机到笔记本电脑的git clone

现在,您的笔记本电脑和您的台式机将有一个共同的历史从Perforce。(您可以通过查看提交标识符在git log中的差异来验证这一点,但是在这两个步骤之后,应该是相同的。)

在此之后,您应该能够在这两个存储库之间进行操作,而不会发生冲突。

实际上,您也可以在任何地方使用git p4 syncgit p4 rebase,因为git-p4足够聪明地检测到对方的工作并继续工作。如果我没记错的话,你的笔记本电脑也会尝试从原版服务器(你的台式机) git pull

另外两条建议:

  • 不要在这两个存储库之间使用git push。对于推送到非裸存储库来说,通常是不安全的,也就是那些有工作树的存储库,比如您在这里描述的那些。如果您做了这样的推送,那么索引将不同于工作树和类似于git status (因此是git commit,等等)的东西。不会像你期望的那样工作。
  • 保持Perforce在一个单独的分支上(我使用master),并对主题分支进行所有的开发。只拉到这些树枝上。执行git p4 syncrebase时,切换回master分支。然后从master到主题分支进行合并。这有助于保持上游历史非常清楚,并与您正在做的工作在git。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1620132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档