从 Github Repo 克隆单个文件
Cloning a Single File from Github Repo
是否可以使用 Git 从远程存储库克隆单个文件?例如,我希望将其他人的 .htaccess 文件复制到我自己的项目中。我不需要他们的整个存储库,只需要这个文件。
与其克隆,也许您可以直接下载文件。
假设存储库是 public,您可以像这样下载单个文件:
wget https://raw.githubusercontent.com/jquery/jquery/master/src/ajax.js
要获取 url,请导航到 GitHub 中的文件,然后选择“原始”视图。
请注意,这仅适用于 public 个存储库。
例如,您要克隆此 python 文件 efficientnet_weight_update_util.py
tensorflow/tensorflow/python/keras/applications/efficientnet_weight_update_util.py
如果您使用 wget
工具从 link 获取文件,您将获得 HTML 格式的 py 文件,因此请使用 [=13] 的原始版本=]
并复制 URL 以与 wget
一起使用
例如
!wget https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/python/keras/applications/efficientnet_weight_update_util.py
现在您只有来自存储库的 efficientnet_weight_update_util.py 文件。
我需要这个功能,所以我创建了这个工具。
将内容复制到文件中(例如gitget.sh)
#!/bin/bash
CURRENT_DIR=`pwd`
REPOSITORY=
REPOSITORY_BRANCH=
REMOTE_PATH=
LOCAL_PATH=
TMP_DIR=$(mktemp -d -t ci-XXXXXXXXXX)
cd $TMP_DIR
git clone -b $REPOSITORY_BRANCH -n $REPOSITORY --depth 1 .
git checkout HEAD $REMOTE_PATH
if [[ -z $LOCAL_PATH ]]; then
mv $REMOTE_PATH $CURRENT_DIR
else
if [[ "$LOCAL_PATH" = /* ]]; then
mv $REMOTE_PATH $LOCAL_PATH
else
mv $REMOTE_PATH $CURRENT_DIR/$LOCAL_PATH
fi
fi
cd $CURRENT_DIR && rm -rf $TMP_DIR
用法
下载远程文件到当前目录:
bash gitget.sh git@host:username/repo.git main some/file/path
将远程文件下载到特定文件(相对或绝对路径)
bash gitget.sh git@host:username/repo.git main some/file/path some/dir/file.ext
下载远程文件到特定目录(相对或绝对路径)
bash gitget.sh git@host:username/repo.git main some/file/path some/dir/
注意:也适用于 https 网址。
此工具依赖克隆的 depth=1 功能 - 不会将整个存储库提取到本地。
为了方便起见,我们也可以从 gitlab 的存储库中获取此脚本:
https://gitlab.com/vladimir.djuricic/tools/-/raw/main/bash/gitget.sh?inline=false
是否可以使用 Git 从远程存储库克隆单个文件?例如,我希望将其他人的 .htaccess 文件复制到我自己的项目中。我不需要他们的整个存储库,只需要这个文件。
与其克隆,也许您可以直接下载文件。
假设存储库是 public,您可以像这样下载单个文件:
wget https://raw.githubusercontent.com/jquery/jquery/master/src/ajax.js
要获取 url,请导航到 GitHub 中的文件,然后选择“原始”视图。
请注意,这仅适用于 public 个存储库。
例如,您要克隆此 python 文件 efficientnet_weight_update_util.py
tensorflow/tensorflow/python/keras/applications/efficientnet_weight_update_util.py
如果您使用 wget
工具从 link 获取文件,您将获得 HTML 格式的 py 文件,因此请使用 [=13] 的原始版本=]
并复制 URL 以与 wget
例如
!wget https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/python/keras/applications/efficientnet_weight_update_util.py
现在您只有来自存储库的 efficientnet_weight_update_util.py 文件。
我需要这个功能,所以我创建了这个工具。 将内容复制到文件中(例如gitget.sh)
#!/bin/bash
CURRENT_DIR=`pwd`
REPOSITORY=
REPOSITORY_BRANCH=
REMOTE_PATH=
LOCAL_PATH=
TMP_DIR=$(mktemp -d -t ci-XXXXXXXXXX)
cd $TMP_DIR
git clone -b $REPOSITORY_BRANCH -n $REPOSITORY --depth 1 .
git checkout HEAD $REMOTE_PATH
if [[ -z $LOCAL_PATH ]]; then
mv $REMOTE_PATH $CURRENT_DIR
else
if [[ "$LOCAL_PATH" = /* ]]; then
mv $REMOTE_PATH $LOCAL_PATH
else
mv $REMOTE_PATH $CURRENT_DIR/$LOCAL_PATH
fi
fi
cd $CURRENT_DIR && rm -rf $TMP_DIR
用法
下载远程文件到当前目录:
bash gitget.sh git@host:username/repo.git main some/file/path
将远程文件下载到特定文件(相对或绝对路径)
bash gitget.sh git@host:username/repo.git main some/file/path some/dir/file.ext
下载远程文件到特定目录(相对或绝对路径)
bash gitget.sh git@host:username/repo.git main some/file/path some/dir/
注意:也适用于 https 网址。
此工具依赖克隆的 depth=1 功能 - 不会将整个存储库提取到本地。
为了方便起见,我们也可以从 gitlab 的存储库中获取此脚本: https://gitlab.com/vladimir.djuricic/tools/-/raw/main/bash/gitget.sh?inline=false