首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么当我处于合并状态时“他们”的策略在这里不起作用?

为什么当我处于合并状态时“他们”的策略在这里不起作用?
EN

Stack Overflow用户
提问于 2022-10-18 09:03:29
回答 1查看 28关注 0票数 0

我们可以通过以下方式再现这一问题:

  1. 安装git远程添加代理git@github.com:pingcap/tidb-engine-ext.git远程添加tikv git@github.com: tikv /tikv.git获取代理3f55709e6678c687195fbb596624a348d039 git获取tikv b448214b8f2c0a6a9ba2381a1983ce20e6514218
  2. 将tikv的提交b4482合并为代理在3f557 git签出-b测试3f55709e6678c687195 test 59662459a348d039 git合并b448214b8f2c0a6a9ba2381a1983ce20e6514218

有许多不相关的冲突,所以不要去看它们。我们只在第502行查看components/resolved_ts/src/endpoint.rs,上面写着

代码语言:javascript
复制
let resolved_ts = observe_region.resolver.resolve(ts).min();

然而,“他们的”版本

代码语言:javascript
复制
let resolved_ts = observe_region.resolver.resolve(ts);

现在,我决定用“他们的”替换整个文件,所以我运行

代码语言:javascript
复制
git checkout --theirs components/resolved_ts
Updated 1 path from the index

然后我发现

代码语言:javascript
复制
let resolved_ts = observe_region.resolver.resolve(ts).min();

是的,该文件没有更改为“他们的”。这很奇怪。

但是,如果我跑

代码语言:javascript
复制
git checkout b448214b8f2c0a6a9ba2381a1983ce20e6514218 -- components/resolved_ts

该文件被更改为“他们的”。现在更奇怪了。既然这样做有效,为什么git checkout --theirs会失败?

有人能告诉我为什么会这样吗?

我的工具链是

代码语言:javascript
复制
git --version
git version 2.30.1 (Apple Git-130)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-18 16:26:11

如果您更仔细地检查git merge输出,您将看到以下内容:

代码语言:javascript
复制
Auto-merging components/resolved_ts/src/endpoint.rs
Auto-merging components/resolved_ts/src/cmd.rs

将其与以下方面进行比较:

代码语言:javascript
复制
Auto-merging Makefile
CONFLICT (content): Merge conflict in Makefile
Auto-merging Cargo.toml
CONFLICT (content): Merge conflict in Cargo.toml

请注意,对于最后两个文件中的每个文件,我们首先看到:

代码语言:javascript
复制
Auto-merging

然后:

代码语言:javascript
复制
CONFLICT (content):

后面跟着文件的名字。然而,对于endpoint.rscmd.rs,我们看到Auto-merging后面跟着.什么都没有,表示自动合并工作正常。

如果检查索引中的内容,就不会留下“他们的”版本:

代码语言:javascript
复制
$ git ls-files --stage components/resolved_ts/src/endpoint.rs
100644 a4e5f6e38641e12820167e715e8666b844943f40 0  components/resolved_ts/src/endpoint.rs

类似地,git status --short显示:

代码语言:javascript
复制
$ git status --short | grep components/resolved_ts/
M  components/resolved_ts/src/cmd.rs
UU components/resolved_ts/src/resolver.rs
M  components/resolved_ts/tests/mod.rs

请注意,endpoint.rs不在此列表中:存在冲突,但很容易自动解决,Git不仅解决了冲突,而且对结果调用了git add。这就是为什么--theirs什么也不做的原因:索引中没有“他们的”版本。一个匹配的components/resolved/路径,它在索引中有一个theirs版本--在这里:

从索引中更新1条路径

来自于-is UU components/resolved_ts/src/resolver.rs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74108329

复制
相关文章

相似问题

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