1

我最近在工作中为我的主要 c# 项目设置了一个 git p4 克隆。我正在执行以下操作:

  • git checkout -b 新分支
  • git p4 rebase(确保分支与仓库是最新的)
  • 做出改变
  • git 提交 -a
  • 做出更多改变
  • git 提交 -a
  • 准备将文件推送到 p4 仓库

在这一点上,如果自从我开始我的分支以来项目的仓库路径没有任何变化,我可以做一个

  • git p4 变基
  • git p4 提交

一切都很好。但是,如果仓库中有更改,当我运行“git p4 rebase”时,它会应用仓库中的内容,然后当它尝试重新应用我的提交时,它会出错,说“本地更改将被覆盖通过合并”。然后它继续列出我已经提交的所有文件,告诉我应该提交或存储它们。奇怪的是,如果我运行“git status”,则不会显示任何文件。这里发生了什么?

我能够弄清楚使其工作的唯一事情是执行以下操作:

  • git rebase -i HEAD~{自上次仓库更改以来的提交次数}
  • 混帐藏匿
  • git p4 变基
  • git stash 弹出
  • git p4 提交

但我也不是这个的忠实拥护者,因为现在我的提交历史丢失了——我最终得到了一个怪物提交。就 p4 depot 而言,这还不错(哎呀,这就是我最终想要的),但我仍然希望我的本地 Git 提交是可见的,否则我在使用 Git 时失去了很多价值。

值得一提的是,Git 在引发最终错误之前还会显示几个空格警告......但它们都以“警告:”为前缀,所以我认为这不是根本原因。

4

1 回答 1

0

您的新更改是基于原始 p4/master 分支吗?

即你做了:

$ git checkout -b my_new_branch p4/master
hack
$ git commit -m 'somechange' -a
hack some more
$ git commit -m 'another change' -a
$ git p4 rebase

您应该根据 p4/master 进行新的更改,否则它不会起作用。

于 2014-11-27T14:55:57.150 回答