gpt4 book ai didi

git - 从源代码中删除旧提交

转载 作者:太空狗 更新时间:2023-10-29 13:49:40 26 4
gpt4 key购买 nike

据我了解,每次 git 提交都会存储自上次提交以来对跟踪文件所做的更改。有没有办法让你从源代码中删除一个旧的提交?例如,如果您有一个文本文件

文本文件.txt

Text line one
More text line

然后你继续提交 git commit -m "Initial Commit"

然后您再次编辑 textfile.txt

文本文件.txt

Text line one
More text line
Even more lines
Just one more line

然后你继续提交 git commit -m "Added new lines 2"

然后您进行了最终编辑

文本文件.txt

Text line one
More text line
Even more lines
Just one more line
These are the last lines
In this file

并提交 git commit -m "Added new lines 3"

有没有办法删除提交编号 2 中的所有更改(“添加新行 2”),以便文件看起来像:

文本文件.txt

Text line one
More text line
These are the last lines
In this file

(注意删除的行 Even more linesJust one more line,它们在 Commit 2 中更改)

最佳答案

你可以用 rebase 来做到这一点(你不需要一个交互式的 rebase):

git rebase HEAD --onto HEAD~2

这基本上意味着:

从 HEAD 获取所有提交并进一步提交(因此一次提交),并将它们应用到父级的父级(您的第一次提交)。因此,父提交(您的第二次提交)将被跳过。

之前:

     HEAD
|
A--B--C

之后:

A--B--C
\
C'
|
HEAD

您的 HEAD 现在指向 C'(原始 C 的副本),但是 C' 现在有 A 作为父级而不是B

编辑:

从您对 Klas Mellbourn 的回答的评论来看,您似乎想保留提交,但想撤消它的更改。这就是git revert

git revert HEAD~1

关于git - 从源代码中删除旧提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15700548/

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