我在工作中使用了 Visual Studio Code (VSC),像往常一样,我查看了一个文件,例如
Foo.react.js
并使用另存为
Bar.react.js
以便以
Foo.react.js
为模板创建一个新的组件文件。
但是,当它到达 CI/CD (Jenkins) 并推送到生产服务器阶段时,文件
Bar.react.js
与自身发生了合并冲突,这很奇怪,因为为什么只有我创建和编辑的新文件会与它冲突本身?
与 hg 和 CI/CD 团队交谈,他们告诉我,当我们使用“另存为”时,VSC(在我公司)做了一个
hg cp
,并且它处理 Bar.react.js 以遵循 Foo.react.js 的历史.
所以可能有人也修改了 Foo.react.js,并且 Bar.react.js 中的某些行与其冲突。
我还被告知我可以使用
hg forget Bar.react.js
然后使用 hg add Bar.react.js
来解决问题。
所以问题是:
hg cp
到底做了什么?为什么它要使用旧文件来跟踪新文件的历史记录?
我是否真的只能对当前提交和推送执行
hg forget Bar.react.js
然后hg add Bar.react.js
来解决问题?如果我没有使用 hg forget
和 hg add
,然后修复了合并冲突,现在所有文件最终都在存储库中,那么 Foo.react.js
将来还会与 Bar.react.js
发生冲突吗?
我认为对于(2),它们将来可能不会相互冲突的原因是,如果我在所有文件都在存储库中之后执行
hg forget
和 hg add
,那么 hg 会将其视为“没有改变”我什至无法承诺。如果我 hg forget
并提交,然后 hg add
再次提交,现在我想着陆并推送它,CI/CD 会说 hg forget
提交未通过 CI/CD 测试(缺少组件) ),所以我真的想知道我是否需要检查 hg forget
和 hg add
,因为似乎没有人这样做,因为没有人说过一旦文件现在都在存储库中,如何完成它。
所以就变成了:
现在所有文件都在仓库中了,我是否还需要先做
hg forget Bar.react.js
,然后hg add Bar.react.js
,以便这两个文件将来不会互相冲突。如果我需要做hg forget
和hg add
,应该怎么做?
- hg cp 到底做了什么?为什么它要使用旧文件来跟踪新文件的历史记录?
跟踪重命名文件的历史记录非常有用。
假设您在
button.jsx
上工作了很多年,然后它被重命名为 colorButton.jsx
。 如果没有跨重命名跟踪历史记录,则在查看 colorButton.jsx 的历史记录时,您只会看到自重命名以来的历史记录,因为它将被视为新文件。由于button.jsx不再位于工作目录中,因此可能也很难知道旧历史记录在哪里。
复制文件并不常见,但我想如果您确实想复制文件并维护共同的历史记录,那么它会很有用。
- 我真的只能通过 hg 忘记 Bar.react.js 然后在当前提交和推送中添加 Bar.react.js 来解决问题吗?
还可以通过以下方式断开两个文件之间的关联:
'hg 重命名--忘记 colorButton.jsx'
注:
人们可以通过键入来阅读此内容
hg help rename
或
hg help copy