【发布时间】:2020-12-02 14:25:15
【问题描述】:
我正在创建一个 shell 构建脚本。
我希望它被这样称呼:
./build.sh REPONAME BRANCHNAME
$REPONAME 对应一个遥控器。我假设遥控器存在。
$BRANCHNAME 是 $REPONAME 上的一个分支。
$BRANCHNAME 可能从未在此计算机上签出。
所以我有这个:
cd $REPOPATH
git fetch $REPONAME $BRANCHNAME
git checkout --track $REMOTE/$BRANCHNAME
git pull $REPONAME
echo `git rev-parse HEAD`
这种工作,但我遇到了几个问题:
- 我必须输入我的密钥的私钥两次 - 我猜一次用于获取,一次用于提取。不重要,但如果只做一次就更好了。
- 因为
--track,如果$BRANCHNAME过去已经签出,我得到
致命:一个名为 $BRANCHNAME 的分支已经存在
。不知道这到底有多致命,但我不喜欢在输出中看到致命的情况
- 没有
--track,我会进入分离模式,我也不喜欢这种模式 - 只有
git checkout $BRANCHNAME我突然收到关于“模棱两可”分支的消息。可能是因为$BRANCHNAME可能在多个遥控器上?
那么,从远程签出分支、获取其最新版本并从中构建的最干净、最明确的方法是什么?f
令人惊讶的是,在使用 git 这么多年之后,我仍然没有掌握必须知道的技能。
【问题讨论】:
标签: git git-branch git-checkout git-repo