如何让bash脚本拉取Git当前所在分支的更新?
问题解决:脚本中git pull无法拉取当前分支更新
问题根源
你脚本里的git pull https://tech-dev:password@bitbucket.org/mycompany/pow-wow.git没有指定目标分支,Git默认会拉取远程仓库的HEAD分支(通常是master),然后尝试合并到当前本地分支。但你当前在spring3upgrade分支,远程master和本地spring3upgrade没有关联,所以即便远程spring3upgrade有更新,脚本也检测不到。而手动执行git pull时,Git会自动拉取当前分支关联的远程跟踪分支,所以能正常更新。
修复方案
方法一:明确指定当前分支拉取
先获取当前分支名称,再拉取对应远程分支,修改后的deploy.sh如下:
echo | git branch echo "git pull ..." CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) git pull https://tech-dev:password@bitbucket.org/mycompany/pow-wow.git $CURRENT_BRANCH
方法二:利用分支跟踪关系(更简洁)
如果本地分支已经和对应远程分支建立了跟踪关系(比如通过git checkout -b spring3upgrade origin/spring3upgrade创建的分支),直接执行不带URL的git pull即可:
echo | git branch echo "git pull ..." git pull
如果还没建立跟踪关系,先执行git branch --set-upstream-to=origin/spring3upgrade spring3upgrade关联一下就行。
验证
修改后重新执行脚本,就能正确拉取当前所在分支的远程更新了。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

