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