1

我正在创建一个 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我仍然没有掌握必须知道的技能。

4

1 回答 1

1

如果您想丢弃所有内容并获取远程版本:

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
于 2020-08-12T20:38:58.407 回答