Git将散列A和B之间的更改转换为工作目录

时间:2012-05-23 08:29:57

标签: git diff

在哈希A和哈希B之间的git中进行了一些更改(最新的分支在Z中 - 后来成千上万次提交)。我想让HEAD(我的本地人)指向哈希A,并在我的工作目录中拥有A和B之间所做的所有更改。

为什么呢?因为git diff很不方便,我宁愿使用我的IDE(IntelliJ IDEA)的diff工具。但为此我需要说服IDE我已经更改了文件 - 因此请求。

2 个答案:

答案 0 :(得分:5)

我实际上找到了一种方法:

git checkout <hash A>
git diff –patch <hash A> <hash B> > patch.patch
patch –p1 –N < patch.patch

一位同事也告诉我,我可以使用

git checkout <hash A>
git merge --squash <hash B>
而是 - 但我还没有测试它。

答案 1 :(得分:1)

你可以:

  • git clone您当地的回购并将其重置为hashB(请参阅“Git clone particular version of remote repository”)
  • 您当地的回购
  • git reset hashA
  • 清空其内容并替换它:IDEA中的Git插件将检测与当前HEAD相比添加,丢失或修改的所有文件。