gpt4 book ai didi

git - 如何退出(不中止)正在进行的 Git merge ,保持更改未提交?

转载 作者:行者123 更新时间:2023-12-04 06:55:47 25 4
gpt4 key购买 nike

当 Git merge 由于冲突或用户使用 --no-commit 请求而停止时选项, merge 被认为仍在进行中,文件$GIT_DIR/MERGE_HEAD的存在表示什么.

此状态通常在提交 merge 结果或中止 merge 时结束。在后一种情况下, merge 引入的更改将被倒回。

有什么方法可以在不生成提交且不丢失 merge 更改的情况下完成“正在进行 merge ”状态? 让我们假设所有可能的冲突都已解决。1 这类似于 --quit为 cherry-pick 、恢复和 rebase 提供的选项。

一个明显的方法是git reset --soft ,但是当 merge 正在进行时,这会出错。

对于这个问题,我没有任何具体的用例,但我想知道此时 Git UI 的完整性。

1如下来自torek的非常详细的answer , Unresolved 冲突意味着索引槽 1 到 3 中的条目,这仅在正在进行的 merge 期间才有意义,严格来说甚至构成一个。这意味着:只要存在 Unresolved 冲突,就会有一个正在进行的 merge 。因此,要使这个问题反射(reflect)一个恰当提出的问题,它必须限于解决所有可能的冲突的情况。

最佳答案

使用 Git 2.23(2019 年第三季度),这将更容易(不再有 git reset ),因为“git merge”学习了“--quit”选项,该选项可以清理正在进行的 merge ,同时保留工作树和索引一团糟。

commit f3f8311 (2019 年 5 月 18 日)和 commit b643355 (2019 年 5 月 9 日)作者:Nguyễn Thái Ngọc Duy ( pclouds ) .
(由 Junio C Hamano -- gitster --commit c4a38d1 中 merge ,2019 年 6 月 13 日)

merge: add --quit

This allows to cancel the current merge without resetting worktree/index, which is what --abort is for.
Like other --quit(s), this is often used when you forgot that you're in the middle of a merge and already switched away, doing different things.
By the time you've realized, you can't even continue the merge anymore.

This also makes all in-progress commands, am, merge, rebase, revert and cherry-pick, take all three --abort, --continue and --quit (bisect has a different UI).



文档位于 commit 437591a (2019 年 6 月 17 日)作者: Phillip Wood ( phillipwood ) .
(由 Junio C Hamano -- gitster --commit 0af6d5d 中 merge ,2019 年 7 月 9 日)

git merge --quit :

Forget about the current merge in progress.
Leave the index and the working tree as-is.

关于git - 如何退出(不中止)正在进行的 Git merge ,保持更改未提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55859458/

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