git“revert”当前目录

时间:2013-01-02 16:17:59

标签: git version-control reset git-checkout revert

在svn中,可以执行svn revert ./*,其中当前目录和当前目录都将被还原。

相当于svn revert的git是什么,只有当前目录被还原?

我知道有git reset --hard,但它会恢复所有内容,而不仅仅是当前目录。

如何在git中恢复当前目录?

4 个答案:

答案 0 :(得分:52)

就像@vcsjones所说,这里的解决方案是git checkout

git checkout <refspec> -- path/to/directory  # or path/to/file

例如,<refspec>可以是HEAD,即当前工作提交。请注意,checkout命令的这种用法将影响工作树,但不会影响索引。

git revert用于“恢复提交”,因此,不应该理解提交从树中消失(它会对历史造成严重破坏 - 如果你想要,请查看{ {1}})。还原提交包括将反向中的所有更改作为参数应用于树,并使用更改创建新提交(使用默认提交消息) ,你可以修改)。

答案 1 :(得分:19)

转到要还原的文件夹,然后执行以下操作:

public class Entitity1
{
}

public class Entity2
{
}

public class EntityAggregate
{
    public EntityAggregate(Entity1 entity1, Entity2 entity2) // constructor
    {
        this.entity1 = entity1;
        this.entity2 = entity2;
    }

    public ExecuteYourBusinessCase()
    {
        ... access entity1 and entity2 here and evaluate business logics
    }
}

在此答案中查看更多内容: https://stackoverflow.com/a/16589534/207661

答案 2 :(得分:4)

当我是一个git新手(并且害怕终端)时,我发现最简单的方法是:

  • 切换到要将特定子目录还原为
  • 的分支
  • 将要还原到桌面的子目录复制到桌面
  • 切换回您的分支
  • 使用您复制到的目录覆盖git目录中要替换的子目录 你的桌面

答案 3 :(得分:0)

如果要从特定目录递归执行:

git checkout -- ./*
git checkout -- mydir/*