毫不含糊地检出分支并从脚本中获取git的最新版本

问题描述

我正在创建一个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 fetch $REMOTE
git stash
git checkout $BRANCHNAME
git branch -u $REMOTE/$BRANCHNAME
git reset --hard $REMOTE/$BRANCHNAME

如果要合并本地分支中远程分支的更新:

git fetch $REMOTE
git stash
git checkout $BRANCHNAME
git branch -u $REMOTE/$BRANCHNAME
git merge $REMOTE/$BRANCHNAME

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...