gpt4 book ai didi

git - 如何恢复提交并将更改放回舞台

转载 作者:行者123 更新时间:2023-12-04 16:41:58 25 4
gpt4 key购买 nike

如何恢复提交但将更改放在舞台上,以便我可以编辑提交,直到它是我想要的。

以前我很熟悉 TFS,revert 正是这样做的,但在 GIT git revert 中似乎自动 checkin 未完成的提交,因此没有机会从变更集中保留某些内容。

最佳答案

您可以使用 git revert -n .我建议你不要。进行单独的提交以进行您想要的更改。

原因很简单。提交是快照,但它代表更改。为了从快照中找到更改,Git 将提交与其直接父项进行比较。

也就是说,如果文件 A 以前有 10 行,现在有 11 行,将文件 A 的旧副本与文件 A 的新副本进行比较将(可能)显示有人添加了一行。 diff 会说:要将旧提交更改为新提交,请将这一行添加到文件 A。如果文件 B 之前有 20 行,现在有 19 行,则 diff 会说:将旧提交更改为新提交, 从文件 B 中删除这一行。

一个简单的git revert提交将在显示时显示相同的更改但向后显示:从文件 A 中删除这一行,并将这一行添加到文件 B。

如果您的意思(并且将在第三次提交中提交)只是将一行添加到文件 A,那么现在您有一个正确的单次提交,当显示时,会说将这一行添加到文件 A。

如果您改为进行非提交还原,然后将行放回原处,则必须将两个单独的提交 - 错误的提交和更正的还原 - 加在一起,以查看实际意图。这并没有错,但这意味着任何后来出现的人,要了解在类似情况下发生了什么以及他们可能需要做什么,都必须更加努力地工作。

比较这些说明:

  • “做X;等等,不,不要做X。做Y。”
  • “做X。然后在撤销X的同时,做Z。”

  • future ——你更愿意看到哪个?

    (请注意,您可以通过执行以下操作来构建提交 Y:
    git cherry-pick -n X

    其中 X 是您还原的那个。这样,您可以获得所有更改,但可以开始撤消它们。

    另请注意 git revert -ngit cherry-pick -n把所有东西都放到暂存区——也就是说,他们做一个 git add在所有更新的文件上。这没有实际问题,但如果你不喜欢它,你可以运行 git reset取消舞台。)

    关于git - 如何恢复提交并将更改放回舞台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010582/

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