Git:恢复单个文件的旧提交

我在git中使用revert非常新,我想知道是否可以完成类似下面的操作。 假设我已经做了一些提交,并且我有一个(自我解释的)文本文件,如下所示:

This line was added at commit AAAAA
This line was added at commit BBBBB
This line was added at commit CCCCC

我想使用恢复删除提交BBBBB所做的更改,以获得一个如下所示的文件:

This line was added at commit AAAAA
This line was added at commit CCCCC

但是,恢复提交BBBBB会导致合并冲突。 有什么办法可以避免冲突吗?


但是,恢复提交BBBBB会导致合并冲突。 有什么办法可以避免冲突吗?

要准确找出造成冲突的原因,请执行

git checkout --merge --conflict=diff3 -- path/to/file

它会告诉你原来的和两个不同版本的文本git不愿automerge。

归结起来,git正在将从已恢复的提交到它的父代的更改与从已恢复提交到当前版本的更改合并在一起:

 bbbbb verson -> aaaaa version,

 bbbbb version -> cccccc version (+ whatever else)

并且变化区块重叠,所以,git不会自动更新。

实际上,考虑到在几个大型项目中进行合并的数量,您可以确定任何自动混帐git拒绝产生经常无法容忍的不良结果。


如果只想恢复单个文件中的更改,假定您想恢复最后一次提交的一部分,则只需检出以前提交的文件版本

git checkout HEAD~1 directory/path/file.txt
git add directory/path/file.txt
git commit -m "directory/path/file.txt reverted"

基本上git checkout HEAD . 将工作目录中的所有文件或仅指定的目录或只有单个文件重置为给定提交的指定状态。

此外,如果您想要将某个目录恢复为3次提交状态,您可以:

git checkout HEAD~3 some/directory/
链接地址: http://www.djcxy.com/p/49797.html

上一篇: Git: Revert old commit on single file

下一篇: Git revert a commit that has some other commit depending on it