Libgit2 做一个;git_revert();正在重置用命令“重置”标记的文件;git更新索引--跳过工作树“; //代码 无效回复测试() { git_object*head_commit_obj=NULL; int error=git_revparse_single(&head_commit_obj,repo,“head~1”); 如果(错误

Libgit2 做一个;git_revert();正在重置用命令“重置”标记的文件;git更新索引--跳过工作树“; //代码 无效回复测试() { git_object*head_commit_obj=NULL; int error=git_revparse_single(&head_commit_obj,repo,“head~1”); 如果(错误,libgit2,Libgit2,我的问题操作步骤: 创建一个新项目并将其添加到git以进行版本控制 使用git更新索引--跳过工作树以排除*.doc 使用git ls文件-v.|Grep ^s以查看排除文件的列表 调用libgit2提供的git_reset后 使用git ls files-v.grep^s查看上一个标记是否已丢失 使用git_reset的文件回调导致--跳过将丢失的工作树标志 是否有任何其他方法可以在不影响我的索引数据的情况下实现工作区还原。正如tortoisegit命令一样:“/command:re

我的问题操作步骤

  • 创建一个新项目并将其添加到git以进行版本控制

  • 使用git更新索引--跳过工作树以排除*.doc

  • 使用git ls文件-v.|Grep ^s以查看排除文件的列表 调用libgit2提供的git_reset后

  • 使用git ls files-v.grep^s查看上一个标记是否已丢失

  • 使用git_reset的文件回调导致--跳过将丢失的工作树标志


  • 是否有任何其他方法可以在不影响我的索引数据的情况下实现工作区还原。正如tortoisegit命令一样:“/command:revert/pathfile:'xxx.txt'”

    这是;libgit2应该尊重索引中的
    跳过工作树
    位,但事实并非如此。

    非常感谢!是否有其他解决方法可以实现?是否有其他方法可以恢复文件?我只想通过我的调制解调器还原文件。
    //code
    void RevertTest()
    {
      git_object *head_commit_obj = NULL;
      int error = git_revparse_single(&head_commit_obj, repo, "HEAD~1");
    
      if (error < 0)
      {
        return;
      }
    
      git_commit *head_commit = (git_commit *)head_commit_obj;
    
      git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
      opts.checkout_strategy = GIT_CHECKOUT_SAFE;
    
      int reset_result = git_reset(repo, (git_object *)(head_commit_obj), GIT_RESET_HARD, &opts);
    
      if (reset_result < 0) 
      {
        return;
      }
    
    }