react native 项目 merge 的时候,为什么组件的.json 文件没有覆盖修改?很费解

2022-08-05 18:45:16 +08:00
 magic3584

一个 RN 项目,今天在合并分支的时候,发现组件的 .json 文件没有被覆盖修改,大佬们帮忙看下

目录格式如下:

project
│   
└───js  
   │   
   └───Components
        │
        └───组件 A
                 │   package.json
   

其中,AB 两个分支里  package.json 文件内容如下

{
  "name": "name",
  "upload": {
    "add": "npm publish --registry=http:A",
  }
}
{
  "name": "name",
  "upload": {
    "add": "npm publish --registry=http:B",
  }
}

当我 merge A into B 的时候,这个 package.json 里内容仍然是 http:B,这里为什么不是 http:A 呢?

请大佬解惑

1249 次点击
所在节点    git
12 条回复
simonCN
2022-08-05 18:51:17 +08:00
你看下 git merge 的那个 commit 具体改变的数据,或者这个 json 文件被 ignore 了?
mxT52CRuqR6o5
2022-08-05 18:52:11 +08:00
这个要看先后的
magic3584
2022-08-05 19:27:32 +08:00
@simonCN #1
commit 里没有这个 json 文件的修改
. gitignore 内容如下
``` json
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
*/node_modules/
*/dist/
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
.idea/
```
magic3584
2022-08-05 19:54:45 +08:00
@mxT52CRuqR6o5 @2
大佬,分支大概图示已经 append 了
mxT52CRuqR6o5
2022-08-05 20:00:46 +08:00
@magic3584
我感觉是不是 merge B into A 得到结果 package.json 内容 http:B 就符合你预期?
不管是 merge B into A 还是 merge A into B 最终得到的代码结果都是一样的,区别只是在于这条 merge 的 commit 是在 A 上还是在 B 上
magic3584
2022-08-06 10:25:52 +08:00
@mxT52CRuqR6o5 #5

「不管是 merge B into A 还是 merge A into B 最终得到的代码结果都是一样的」

为啥会一样呢?不是应该代码覆盖吗?
mxT52CRuqR6o5
2022-08-06 14:05:01 +08:00
@magic3584 你假定一个最简单的场景脑内预想一下或者实践一下,现在仓库里有两个文件文件 A 和文件 B ,在 A 分支修改文件 A ,在 B 分支修改文件 B ,然后想想 A merge 到 B 会是什么结果,B merge 到 A 是什么结果
我表达水平不太行,不知道应该怎么讲明白这件事
magic3584
2022-08-06 15:07:51 +08:00
@mxT52CRuqR6o5 #7
您说的是俩文件,所以 merge 后也应该是俩文件。
我这里是同一个文件的相同位置,所以不说覆盖,应该也会有冲突的吧
mxT52CRuqR6o5
2022-08-06 15:11:53 +08:00
@magic3584 仔细想想我给的例子,我给的例子重点在于 AB 两个文件在 merge 前在两个分支上的状态是不一样的,在 A 分支上 A 文件是修改后的状态,在 B 分支上 A 文件是修改前的状态,难道我把 B merge 到 A 会把会让 A 文件变成修改前的状态吗?
magic3584
2022-08-06 15:21:43 +08:00
@mxT52CRuqR6o5 #7
我查了下资料,我这里是因为 B 是 A 的子分支,所以 merge A into B 的时候,还是按 B 的为准,而如果 merge B into A 的时候,是会代码更改
magic3584
2022-08-06 15:42:44 +08:00
@mxT52CRuqR6o5 #9
所以 merge 的时候是以最近修改为准上吧?而不是我上面说的主次分支吗?因为我这个情况按时间和主次分支都能说的通。然后我尝试 marge B into A 的时候,确实会把 B 的代码覆盖到 A 上
mxT52CRuqR6o5
2022-08-06 18:26:15 +08:00
@magic3584
我这边的结论就是 5#的话
不管是 merge B into A 还是 merge A into B (只要没有需要手动处理的冲突)最终得到的代码结果都是一样的,区别只是在于这条 merge 的 commit 是在 A 上还是在 B 上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/870955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX