【问题标题】:Git reverse merge of subtreeGit反向合并子树
【发布时间】:2011-04-03 23:18:18
【问题描述】:

我发现了一些其他关于 Git 中的反向合并的问题,但这些问题是在询问如何反向合并整个提交。我想反向合并树中的一个目录。这在 Git 中可行吗?

在颠覆中,你可以这样做:

$ cd /workingcopy/some/subtree
$ svn merge -r802:801 .

这会计算修订版 801 和 802 之间的反向差异,并且仅将其应用于当前目录。

我能想到的最好的是

$ cd /gitrepo/some/subtree
$ git diff <commit-sha1> <commit-sha1>^ . > patchfile
$ patch -p1 < patchfile

虽然我还没有实际测试过。 git 能不能做得更好?

【问题讨论】:

  • stackoverflow.com/questions/642264/… 有帮助吗?不是一个明确的答案,但仍然是。
  • 读完之后,我想我的问题的答案是,“不,git 做起来并不比补丁容易。”

标签: git merge


【解决方案1】:

您可以使用git checkout 来签出指定修订版的整个目录。例如,要将目录src 恢复为提交五次提交:

$ git checkout HEAD~5 -- src
$ git status           # See what files changes
$ git diff --cached    # Review the changes
$ git commit

【讨论】:

  • 你想要git diff --cached。路径上的git checkout 通过将其加载到索引中,然后将其复制到工作树中来工作。这意味着git diff 不会显示任何内容,因为索引和工作树匹配。
  • 不过,这会吹走我之前 4 次提交的所有更改。
猜你喜欢
  • 1970-01-01
  • 2018-11-29
  • 2015-02-28
  • 1970-01-01
  • 2010-12-21
  • 2023-03-28
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多