gpt4 book ai didi

git - 如何保持浅层 git 克隆最新(同时保持浅层)

转载 作者:太空狗 更新时间:2023-10-29 14:38:03 26 4
gpt4 key购买 nike

在某些情况下,存储整个 git 历史是没有用的(例如构建机器人)。

是否可以对 git 存储库进行浅层克隆(使用单个分支,例如 master),并在保持浅层的同时保持最新?

最佳答案

是的,这是可能的,以下 git 命令是 shell 脚本函数,但实际上它们可能是 bat 文件或类似文件。

# clone
function git_shallow_clone() {
git clone --depth 1 --single-branch $@
}

# pull
function git_shallow_pull() {
git pull --no-tags $@

# clean-up, if a new revision is found
git show-ref -s HEAD > .git/shallow
git reflog expire --expire=0
git prune
git prune-packed
}

# make an existing clone shallow (handy in some cases)
function git_shallow_make() {

# delete all branches except for the current branch
git branch -D `git branch | grep -v $(git rev-parse --abbrev-ref HEAD)`
# delete all tags
git tag -d `git tag | grep -E '.'`
# delete all stash
git stash clear


# clean-up, if a new revision is found (same as above)
git show-ref -s HEAD > .git/shallow
git reflog expire --expire=0
git prune
git prune-packed
}

# load history into a shallow clone.
function git_shallow_unmake() {
git fetch --no-tags --unshallow
}

注意事项

  • --no-tags 很重要,否则你可能会克隆 sha1 指向分支 master 之外的 blob 的标签>
  • 限制到单个分支也很有用,假设您只对 master 或至少单个分支感兴趣
  • 在每次 pull 后重新强制浅层看起来是一项繁重的操作,但我没有找到更好的方法

感谢:https://stackoverflow.com/a/7937916/432509 (对于这个答案的重要部分)

关于git - 如何保持浅层 git 克隆最新(同时保持浅层),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27844517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com