
一个 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 呢?
请大佬解惑
分支大概如下图:

1 simonCN Aug 5, 2022 你看下 git merge 的那个 commit 具体改变的数据,或者这个 json 文件被 ignore 了? |
2 mxT52CRuqR6o5 Aug 5, 2022 这个要看先后的 |
3 rrubick OP @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/ ``` |
4 rrubick OP |
5 mxT52CRuqR6o5 Aug 5, 2022 @magic3584 我感觉是不是 merge B into A 得到结果 package.json 内容 http:B 就符合你预期? 不管是 merge B into A 还是 merge A into B 最终得到的代码结果都是一样的,区别只是在于这条 merge 的 commit 是在 A 上还是在 B 上 |
6 rrubick OP Aug 6, 2022 |
7 mxT52CRuqR6o5 Aug 6, 2022 via Android @magic3584 你假定一个最简单的场景脑内预想一下或者实践一下,现在仓库里有两个文件文件 A 和文件 B ,在 A 分支修改文件 A ,在 B 分支修改文件 B ,然后想想 A merge 到 B 会是什么结果,B merge 到 A 是什么结果 我表达水平不太行,不知道应该怎么讲明白这件事 |
8 rrubick OP |
9 mxT52CRuqR6o5 Aug 6, 2022 via Android @magic3584 仔细想想我给的例子,我给的例子重点在于 AB 两个文件在 merge 前在两个分支上的状态是不一样的,在 A 分支上 A 文件是修改后的状态,在 B 分支上 A 文件是修改前的状态,难道我把 B merge 到 A 会把会让 A 文件变成修改前的状态吗? |
10 rrubick OP @mxT52CRuqR6o5 #7 我查了下资料,我这里是因为 B 是 A 的子分支,所以 merge A into B 的时候,还是按 B 的为准,而如果 merge B into A 的时候,是会代码更改 |
11 rrubick OP @mxT52CRuqR6o5 #9 所以 merge 的时候是以最近修改为准上吧?而不是我上面说的主次分支吗?因为我这个情况按时间和主次分支都能说的通。然后我尝试 marge B into A 的时候,确实会把 B 的代码覆盖到 A 上 |
12 mxT52CRuqR6o5 Aug 6, 2022 @magic3584 我这边的结论就是 5#的话 不管是 merge B into A 还是 merge A into B (只要没有需要手动处理的冲突)最终得到的代码结果都是一样的,区别只是在于这条 merge 的 commit 是在 A 上还是在 B 上 |