我在 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/