我在Go中有一个实用程序,可通过os/exec
运行提交结帐,然后对提交中的文件进行一些操作。
我怀疑目前此命令返回其返回码:
_, err := exec.Command("git", "-C", sourceDir, "checkout", hash).Output()
文件夹中的整个文件树都是最新的,我可以对文件执行任何操作,而无需等待后台完成某些操作。
如果它是一个非常大的存储库,其中一个提交与另一个提交有很大不同,并且在从一个提交切换到另一个提交时花时间同步已删除/添加/修改的文件怎么办?
我可以在git checkout
返回0
之后立即执行操作吗?
答案 0 :(得分:3)
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