git tfs:当tfs中有另一个签入时,如何进行rcheckin git提交?

git tfs:当tfs中有另一个签入时,如何进行rcheckin git提交?,git,tfs,git-tfs,Git,Tfs,Git Tfs,对于无法访问TFS的远程工作者,我们使用git TFS克隆了一个TFS存储库。当我们回到他的存储库时,我们看到他正在开发一个新的特性分支 在尝试修改他的更改之前,我们将他的功能分支合并到主分支中。因为他并没有向master提交任何内容,所以发生了一次快进,结果生成了单流git日志。 不幸的是,由于最初的克隆,另一个(完全无关的)签入发生在TFS上。 当我们尝试使用rcheckin时,会收到以下错误消息: Fetching changes from TFS to minimize possibil

对于无法访问TFS的远程工作者,我们使用git TFS克隆了一个TFS存储库。当我们回到他的存储库时,我们看到他正在开发一个新的特性分支

在尝试修改他的更改之前,我们将他的功能分支合并到主分支中。因为他并没有向master提交任何内容,所以发生了一次快进,结果生成了单流git日志。 不幸的是,由于最初的克隆,另一个(完全无关的)签入发生在TFS上。 当我们尝试使用rcheckin时,会收到以下错误消息:

Fetching changes from TFS to minimize possibility of late conflict...
error: New TFS changesets were found.
You may be able to resolve this problem.
- Try to rebase HEAD onto latest TFS checkin and repeat rcheckin or alternatively checkin s
如果我们需要所有的提交都反映为TFS上的签入,我不理解建议的重基会有什么帮助


在这种情况下,是否有任何方法可以将所有git提交作为单个TFS签入?

您只需按照插件所说的做,并在TFS的新更改的基础上重新设置git repo版本的
master
,其中包含远程工作者的工作。重基将保留原始提交的顺序…但是如果存在冲突,则必须在发生冲突的提交上解决这些冲突

git-tfs-pull-rebase
git tfs rcheckin
您也可以只使用
git-tfs-fetch
,然后使用git的本地rebase工具来完成这项工作,但这将涉及更多步骤……git-tfs命令应该为您解决所有这些问题

此外,为了以防万一,由于某些原因,重基最终会给您带来一个您不想要的结果,在
master
的顶端放置一个临时分支,如果需要,您可以硬重设该分支:

git分支临时主机
git-tfs-pull——重基
#如果您不喜欢重定基础结果:
git重置—硬温度
#或者,如果您喜欢结果,请登记
git tfs rcheckin

.

关于@Cupcake的答案很好,但我想补充一些东西

如果您希望在刚刚签入时比tfs工作流更接近,并在此步骤中解决合并冲突,您可以使用:

git tfs rcheckin --quick --autorebase
这相当于:

git tfs pull --rebase
git tfs rcheckin
这不一定是更好的做法,因为通常在
pull--rebase
(您的更改和来自tfs的更改被“合并”)和
rcheckin
(您将更改推送到tfs)之间,您至少应该构建解决方案并运行单元测试

但我认识到,有时候这要容易得多,我的团队(所有老tfs用户)只想这么做

您还应该意识到,在
pull--rebase
步骤中,您的更改将与您的团队的更改“合并”,因此在文件级别进行合并,就像您签入tfs一样,您必须解决冲突


对于
rcheckin--quick--autorebase
,如果有冲突,命令将退出。您必须解决这些问题并再次启动命令。

另一方面,您为什么要使用git tfs插件?TFS的最新版本提供了现成的git支持。您使用的是哪个版本的TFS?@Cupcake Use git TFS比纯TFSVC有真正的优势!我们可以使用它,即使这不是所有团队(有时)或公司(通常)的选择。我没有使用最新版本的TFS,但我听说您可以选择使用git。如果TFS支持使用现成的git,我就不会使用git TFS。我个人曾遇到过git tfs的边缘案例,它并不总是像您预期的那样工作,比如不记录某些文件合并、添加和/或删除…即@纸杯蛋糕让我笑!当我们不能使用纯git时,我们使用git tfs。给出使用纯git的建议是毫无意义的!说git tfs是一个原型,因为它的版本号只有0.19.2是一种诡辩。Git tf(来自Microsoft的同一工具)是v2版本,但在功能和TFS支持方面远远落后!指向github的问题列表也是胡说八道,因为它包含拉请求、新想法、旧bug(未复制)、帮助。。。我的团队使用git tfs已经两年了,可能没有一个问题!Git tfs可能需要支持tfs允许您执行的一些更可怕的情况,但这可能是唯一缺少的…@Philippe好的,很公平。太好了,就这么简单。我的谬误是,我认为我必须以某种方式重新设定git回购的基础,而不是在
git tfs pull
上使用该基础。