Bash 如何在不复制存储库的情况下从github自动下载文件

Bash 如何在不复制存储库的情况下从github自动下载文件,bash,git,github,Bash,Git,Github,我有很多脚本,我几乎每天都在工作中使用。我在我的个人笔记本电脑上开发和维护这些。我有一个本地git存储库,可以跟踪更改,我在github上有一个存储库,可以将更改推送到其中 我在一台远程超级计算机上做了很多工作,我在那里经常使用我的脚本。我想用我维护的脚本更新我的远程/home/bin,但不会让系统和我的存储库混乱 我目前的解决方案并不理想。我在my.bashrc下面添加了以下代码。每当我登录时,我的存储库都会被删除,然后我会从github克隆我的项目。然后我将脚本文件复制到我的bin中,并使它

我有很多脚本,我几乎每天都在工作中使用。我在我的个人笔记本电脑上开发和维护这些。我有一个本地git存储库,可以跟踪更改,我在github上有一个存储库,可以将更改推送到其中

我在一台远程超级计算机上做了很多工作,我在那里经常使用我的脚本。我想用我维护的脚本更新我的远程
/home/bin
,但不会让系统和我的存储库混乱

我目前的解决方案并不理想。我在my
.bashrc
下面添加了以下代码。每当我登录时,我的存储库都会被删除,然后我会从github克隆我的项目。然后我将脚本文件复制到我的bin中,并使它们可执行

这种方法很有效,但感觉不是一种优雅的解决方案。我只想直接下载脚本文件,而不用担心git存储库。无论如何,我从不从远程计算机编辑脚本文件,所以我只想从github获取这些文件

我在想也许
wget
可以工作,但是在github中包含原始文件页面的URL感觉不是很健壮;如果我重命名文件,我想我也必须更新代码。至少我当前的解决方案是健壮的(只要github链接不变)

my.bashrc中的代码:

REPDIR=mydir
if [ -d $REPDIR ]; then
    rm -rf $REPDIR
    echo "Old repository removed."
fi
cd $HOME
git clone https://github.com/user/myproject
cp $REPDIR/*.py $REPDIR/*.sh /home/user/bin/
chmod +x /home/user/bin/*
基于Kent的解决方案,我定义了一个更新脚本的函数。为了避免符号链接出现任何问题,我只需取消所有链接并重新链接。那可能只是我的妄想,不过

function updatescripts() {
DIR=/home/user/scripts
CURR_DIR=$PWD
cd $DIR
git pull origin master
cd $CURR_DIR
for file in $DIR/*.py $DIR/*.sh; do
    if [ -L $HOME/bin/$(basename $file) ]; then
        unlink $HOME/bin/$(basename $file)
    fi
    ln -s $file $HOME/bin/$(basename $file)
done
}

在那台远程机器上,不要执行
rm
然后
clone
,将存储库保留在某个地方,只需执行
pull
。既然你说你不会更改那台机器上的文件,就不会有冲突


对于脚本文件。不要执行
cp
,而是创建指向目标目录的符号链接(
ln-s
)。

这可能是我的rm/clone解决方案的一个更干净的替代方案,但仍然无法避免整个存储库。但我同意这比我以前的解决方案要好。@尤达,你能告诉我为什么要避免整个回购协议吗?敏感数据?还是一笔大额回购?如果它包含敏感数据,您的bashrc中有
clone
脚本,它无论如何都是不安全的。如果是大文件,
pull
clone
快得多。新解决方案推出后,我做的第一件事就是编辑其中一个文件。。。。所以它把存储库搞得一团糟。如果我绕过了存储库,我觉得编辑远程文件会更容易更正某些内容。我只需要重新下载并覆盖它们。我没有敏感数据或类似的东西,只是因为我缺乏自律,不能编辑远程文件。