git - git 在什么时候完成它的执行操作?

标签 git go

我在 Go 中有一个实用程序,它通过 os/exec 运行提交检查,然后对来自提交的文件执行一些操作。

我怀疑此时此命令返回其返回码:

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

文件夹中的整个文件树都是最新的,我可以对文件做任何我想做的事,无需等待某些操作在后台完成。

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

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

最佳答案

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

关于后台auto-gc的评论在这里不是特别相关,因为auto-gc与checkout是否完成无关。就此而言,git checkout 不会运行 git gc --auto:没有意义,因为 git checkout 不会创建新的 Git 对象。 调用 git gc --auto(大约 2.18)的合理当前列表是:

  • git am
  • git commit
  • git fetch
  • merge
  • git receive-pack(服务器)
  • git rebase

关于git - git 在什么时候完成它的执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51328200/

相关文章:

尝试克隆时 git-svn 停止并没有错误消息

linux - Git Pull 无需输入私钥密码

xcode - 在 Xcode 4.3.2 中将现有项目置于源代码管理之下

git: merge 来自恢复先前 merge 的分支的更改

git - 如何删除gerrit(3.0)中的帐户

utf-8 - ISO-8859-1 到 UTF8 的转换

python - 等效于 Python 的列表推导

go - 测量执行时间并在 golang 中停止等待

http - 传递给 http.HandleFunc 的函数如何访问 http.ResponseWriter 和 http.Request?

go - 如何在 Go playground 中定义不同的文件或包?