我在Go中有一个实用程序,可通过os/exec运行提交结帐,然后对提交中的文件进行一些操作。

我怀疑目前此命令返回其返回代码:

_, err := exec.Command("git", "-C", sourceDir, "checkout", hash).Output()

文件夹中的整个文件树都是最新的,并且我可以对文件执行任何操作,而无需等待后台完成某些操作。

如果它是一个非常大的存储库,其中一个提交与另一个提交有很大不同,并且从一个提交切换到另一个提交需要花费时间来同步已删除/添加/修改的文件怎么办?

我可以在git checkout返回0之后立即运行我的操作吗?

最佳答案

在结帐完成(或失败)之前,git checkout不会退出。

由于auto-gc与结帐是否完成无关,因此在后台对auto-gc的注释在这里并不特别相关。为此,git checkout不运行git gc --auto:没有意义,因为git checkout不会创建新的Git对象。当前确实可以调用git gc --auto的事物的列表(从2.18起)是:

  • git am
  • git commit
  • git fetch
  • git merge
  • git receive-pack(服务器)
  • git rebase
  • 关于git - git在什么时候完成执行操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51328200/

    10-14 13:10
    查看更多