下面是我用来 checkout 一个特定提交的命令。
git clone git://repo.git/repo123 git checkout <commitID>
我想用一个git clone命令一步完成以上操作。我之所以要这样做是因为repo123非常大,所以检查出我想要的提交会保存我很多时间。我知道--depth选项。但是在这种情况下,它是没有用的。谁能告诉我怎么做吗?
--depth
s2j5cfk01#
git clone u://r/l --branch x
仍然克隆所有内容,但将本地HEAD设置为该分支,使其成为检出的分支。资料来源:
**--分支 ****-b **不要将新创建的HEAD指向克隆仓库的HEAD所指向的分支,而是指向<name>分支。在非空仓库中,这是将被 checkout 的分支。--branch也可以接受标记,并在最终仓库中的该提交处分离HEAD。
<name>
--branch
mw3dktmi2#
您的问题是 checkout 太大还是 repository 本身?作为git clone,克隆一个仓库,您通常会得到整个仓库的完整大小。(除非您已经建议进行浅层克隆。)如果真是关于结账的错误分支git help clone就说:
git clone
git help clone
--no-checkout, -n No checkout of HEAD is performed after the clone is complete.
使用-n克隆后,您可以手动检出
-n
hsvhsicv3#
我也遇到过同样的情况,它在Git Clone命令中使用--depth运行得很好。在命令末尾使用-b参数指定branch-name/commit/Tag-Name。语法:
-b
git clone --depth 1 github.com:ORG-NAME/Repo.git -b <Branch-Name/Commit-Number/TAG>
4dc9hkyq4#
我 认为 您 只是 希望 能够 " 走开 " , 并 在 两 个 步骤 都 完成 后 返回 。 我 在 一 行 中 使用 这 一 行 来 表示 两 个 长 时间 运行 的 命令 - - 并且 我 喜欢 对 整个 操作 进行 " 计时 " 。诀窍 在于 每个 命令 之间 的 分号 。
$ time (git clone git://repo.git/repo123 ; git checkout <commitID>)
中 的 每 一 个
lawou6xi5#
这 是 一 个 老 问题 , 但 从 回答 和 评论 的 日期 来看 , 它 仍然 是 相关 的 , 所以 我 想 我 会 加上 我 的 几 分 钱 。如果 你 想 克隆 的 提交 是 分支 的 一 个 小 部分 或者 是 一 个 标签 , 你 可以 - - 就 像 其他 答案 中 提到 的 那样 - - 做 :
git clone --depth 1 --branch <branch/tag name> <repository URL>
中 的 每 一 个然而 , 如果 你 想 通过 SHA 克隆 提交 ( 如 问题 中 所 示 ) , 你 需要 运行 几 个 命令 :
mkdir -p <local repository directory> cd <local repository directory> git init git remote add origin <repository URL> git fetch --depth 1 origin <commit SHA> git checkout FETCH_HEAD
格式如果 您 必须 经常 执行 此 操作 , 则 可以 将 其 添加 到 函数/cmdlet 中 。例如 在 Bash 中 :
git_clone_commit() { mkdir -p "$1" pushd "$1" git init git remote add origin "$3" git fetch --depth 1 origin "$2" git checkout FETCH_HEAD git submodule update --init --recursive popd }
格式然后 再
git_clone_commit <local repository directory> <commit SHA> <repository URL>
格式
5条答案
按热度按时间s2j5cfk01#
仍然克隆所有内容,但将本地HEAD设置为该分支,使其成为检出的分支。
资料来源:
**--分支 ****-b **不要将新创建的HEAD指向克隆仓库的HEAD所指向的分支,而是指向
<name>
分支。在非空仓库中,这是将被 checkout 的分支。--branch
也可以接受标记,并在最终仓库中的该提交处分离HEAD。mw3dktmi2#
您的问题是 checkout 太大还是 repository 本身?作为
git clone
,克隆一个仓库,您通常会得到整个仓库的完整大小。(除非您已经建议进行浅层克隆。)如果真是关于结账的错误分支
git help clone
就说:使用
-n
克隆后,您可以手动检出hsvhsicv3#
我也遇到过同样的情况,它在Git Clone命令中使用
--depth
运行得很好。在命令末尾使用-b
参数指定branch-name/commit/Tag-Name。语法:
4dc9hkyq4#
我 认为 您 只是 希望 能够 " 走开 " , 并 在 两 个 步骤 都 完成 后 返回 。 我 在 一 行 中 使用 这 一 行 来 表示 两 个 长 时间 运行 的 命令 - - 并且 我 喜欢 对 整个 操作 进行 " 计时 " 。
诀窍 在于 每个 命令 之间 的 分号 。
中 的 每 一 个
lawou6xi5#
这 是 一 个 老 问题 , 但 从 回答 和 评论 的 日期 来看 , 它 仍然 是 相关 的 , 所以 我 想 我 会 加上 我 的 几 分 钱 。
如果 你 想 克隆 的 提交 是 分支 的 一 个 小 部分 或者 是 一 个 标签 , 你 可以 - - 就 像 其他 答案 中 提到 的 那样 - - 做 :
中 的 每 一 个
然而 , 如果 你 想 通过 SHA 克隆 提交 ( 如 问题 中 所 示 ) , 你 需要 运行 几 个 命令 :
格式
如果 您 必须 经常 执行 此 操作 , 则 可以 将 其 添加 到 函数/cmdlet 中 。
例如 在 Bash 中 :
格式
然后 再
格式