6

我在尝试将文件还原到以前的提交时遇到问题,我知道我可以git checkout用来还原单个文件,但问题是我想保留该文件中的更改,所以我想知道如何做一些单个文件的先前提交和当前 HEAD 之间的“合并”?我尝试使用git reset sha-of-my-commit path/to/my/file,但它将以前的版本放在暂存区域,同时将最新版本保留在我的工作目录中,不确定如何在它之后合并两个文件。

我现在所做的git diff ..sha-of-my-commit path/to/my/file只是复制/粘贴缺失的行,但我相信必须有更好的方法来做到这一点?

4

1 回答 1

5

假设您的意思是更改在您的工作树中(未提交):

git stash
git checkout previous-commit path/to/file
git stash pop

如果您已经提交了一些更改,那么您仍然可以完成它,但需要做更多的工作。假设您的历史记录如下所示:

- x - A - x - x - x - B - x - x (HEAD)

您想要 A 处的版本,加上 B 处的更改。然后这样做:

git stash
git checkout B path/to/file
git stash
git checkout A path/to/file
git stash pop
git stash pop

请注意,任何存储应用程序,因为它是一个合并操作,可能会导致合并冲突;您当然应该在继续之前解决这些问题!

于 2012-02-03T15:51:15.660 回答