我正在创建一个 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
可能在几个遥控器上?
那么,从远程签出分支、获取其最新版本并从中构建的最干净、最明确的方法是什么?
令人惊讶的是,经过这么多年的使用,git
我仍然没有掌握必须知道的技能。