创建一个脚本以从特定分支git pull / checkout

时间:2016-01-28 09:45:12

标签: git deployment

我试图编写一个脚本来轻松地从git部署我们的webapp。我们现在有两台服务器("生产"和#34;开发")。

我已经建立了一个新的develop分支,在服务器上的第一个克隆之后,git branch -a的情况就是这样:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

我正在尝试编写一个简单的脚本,该脚本将从生产服务器上的master和开发服务器上的develop中提取。

克隆后我做了

git pull origin develop
git checkout develop

现在情况是这样的:

* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

文件与开发分支匹配。到目前为止一切都很好。

我试图和主人做同样的事情:

git pull origin master
git checkout master

我收到了这条消息:

Your branch is ahead of 'origin/master' by 5 commits.
  (use "git push" to publish your local commits)

并且文件似乎与开发相同。

我想我对git和本地/远程分支的嘲讽是不够的,我错过了什么。

1 个答案:

答案 0 :(得分:1)

尝试相反的方式:

git checkout <branch>
git pull origin <branch>

调用git pull origin master将执行以下两个操作:

  • 获取远程分支master的更改 (您可以通过运行git fetch origin master
  • 来实现相同的目标
  • 将您的有效分支origin/master合并 (您可以通过运行git merge origin/master
  • 来实现相同的目标

因此,如果您的有效分支是develop,则运行git pull origin master会移动您的本地develop分支。
然后,运行git checkout master会检出您的本地master分支而不进行更新。