gpt4 book ai didi

Mercurial:有什么办法可以找到 "merge and discard changes"吗?

转载 作者:行者123 更新时间:2023-12-03 11:51:48 25 4
gpt4 key购买 nike

我有一个看起来像这样的图形日志:

(snip)
| |
| o 1) Other Dev: Commit
| | \
o | | 2) Me: Commit
/ | | |
| | o | 3) Other Dev: Commits with an error
| |/| |
| o |/ 4) Me: Merge and commit
| /|
|/ |
o | 5) Me: Realize there were bugs in the commit and take earlier version to merge with
| o 6) Other Dev: Fixes error
o / 7) Me: committing some changes
|/
o 8) Me: Merge fixed tip

在 (8) 处,除了 (4) 处悬空的额外头部外,一切都正常。为了摆脱它,我必须合并 (4) -.-> (8) 但是,由于 (4) 中没有我需要的任何内容,因此我可以安全地丢弃所有更改。我可以逐个文件地手动合并(通常这没什么大不了的)但为了我自己的启发 - 是否有一种简单的单行方式说“合并(4)与(8)并且总是取(8)”?

最佳答案

是的。 internal:local内置合并工具。

$ hg merge 4 --tool internal:local

同样,还有 internal:other选择其他版本的文件作为合并版本。

这是一个说明发生了什么的示例,从带有单个文件的 repo 开始:
$ echo a >> a
$ hg ci -Am.
adding a
$ echo a >> a
$ hg ci -Am.

分支它并在 a 中放置冲突:
$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b >> a

还要在合并的分支中添加另一个文件:
$ echo b >> b
$ hg ci -Am.
adding b
created new head

回去合并匿名头:
$ hg up 1
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge 2 --tool internal:local
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)

自然而然,此时如果没有合并工具,我们会在 a 上发生冲突。 .但是使用合并工具,我们告诉 Mercurial 在与 cset 合并的每个文件上获取第一个父级的版本。
$ hg st
M a
M b
$ cat a
a
a
$ cat b
b

关于Mercurial:有什么办法可以找到 "merge and discard changes"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7475634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com