简单地从提交中恢复更改
Simply reverting changes from a commit
假设我有一个文件随着时间的推移被添加到 Git 中。如何简单地恢复较早的提交之一但保留以下所有提交?
例如,添加并提交空白file.txt
。每个后续提交都会增加一个数字。我希望简单地撤消添加的第一个数字 (1) 但保留其他数字 (2 & 3)。看来我应该使用 revert
但我有点迷路了。
➜ ls
file.txt
➜ cat file.txt
1
2
3
➜ git log --oneline
afc6136 Add 3
d0cbec0 Add 2
1d6a4ff Add 1
b6c3a92 Init file.txt
➜ git revert 1d6a4ff
error: could not revert 1d6a4ff... Add 1
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
➜ cat file.txt
<<<<<<< HEAD
1
2
3
=======
>>>>>>> parent of 1d6a4ff... Add 1
好消息:您走对了!
但是,由于您的所有更改彼此非常接近,因此您会发生冲突。本质上,git 是在说 "too much has changed around here since the commit we're reverting, and I don't feel comfortable guessing -- please tidy things up and tell me when you're done"。
每个冲突的区块都被标记为:
<<<<<<< some commit
(chunk's content in some commit)
=======
(chunk's content in some other commit)
>>>>>>> some other commit
您应该将块编辑成您想要的样子,删除分隔符(“<<<”、“===”和“>>>”行),然后 git add
文件和 git commit
它(正如消息 git 给你的建议)。
在您的情况下,整个文件都在块内——情况并非总是如此。在您的初始提交中尝试使用更大的基础文件(如 "more lines"),您就会明白我的意思。
假设我有一个文件随着时间的推移被添加到 Git 中。如何简单地恢复较早的提交之一但保留以下所有提交?
例如,添加并提交空白file.txt
。每个后续提交都会增加一个数字。我希望简单地撤消添加的第一个数字 (1) 但保留其他数字 (2 & 3)。看来我应该使用 revert
但我有点迷路了。
➜ ls
file.txt
➜ cat file.txt
1
2
3
➜ git log --oneline
afc6136 Add 3
d0cbec0 Add 2
1d6a4ff Add 1
b6c3a92 Init file.txt
➜ git revert 1d6a4ff
error: could not revert 1d6a4ff... Add 1
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
➜ cat file.txt
<<<<<<< HEAD
1
2
3
=======
>>>>>>> parent of 1d6a4ff... Add 1
好消息:您走对了!
但是,由于您的所有更改彼此非常接近,因此您会发生冲突。本质上,git 是在说 "too much has changed around here since the commit we're reverting, and I don't feel comfortable guessing -- please tidy things up and tell me when you're done"。
每个冲突的区块都被标记为:
<<<<<<< some commit
(chunk's content in some commit)
=======
(chunk's content in some other commit)
>>>>>>> some other commit
您应该将块编辑成您想要的样子,删除分隔符(“<<<”、“===”和“>>>”行),然后 git add
文件和 git commit
它(正如消息 git 给你的建议)。
在您的情况下,整个文件都在块内——情况并非总是如此。在您的初始提交中尝试使用更大的基础文件(如 "more lines"),您就会明白我的意思。