Git:强制从特定分支拉(并防止覆盖)

时间:2011-05-23 15:58:03

标签: git branch pull

我知道当你没有提供明确的分支名称时,来自特定分支的git pullquestions floating around,但是我想知道即使用户是否可以强制拉分支指定不同的分支。

实施例

如果我要登录实时服务器并提取最新更改,我只需要更改分支实时。所以如果我要在shell中执行以下命令:

git pull origin master

我希望git能够

  1. 发生错误
  2. 忽略它,只需从原点遥控器上的实时分支拉出
  3. 这可能吗?我希望避免像this one这样的情况,因为它是一个核心业务系统,当事情出错时,它并不好。

1 个答案:

答案 0 :(得分:3)

如果这是您的生产服务器,允许任何人在该存储库中运行任意git命令似乎是一个坏主意。任何合并(例如与git pull)可能会产生冲突,使您的实时服务器设置中断。我认为人们通常只通过推送到具有post-receiveupdate钩子的裸存储库来允许开发人员部署到生产服务器来处理这个问题:

  1. 如果refs/heads/master正在更新
  2. 如果是这样,请使用以下命令将其检出到新目录:

    GIT_WORK_TREE=/deployment/directory git checkout -f
    
  3. 当然,这并不能阻止人们在本地合并错误的东西,然后将其推送到临时服务器或实时服务器,但是我认为你可以做的事情并不多 - 人们只需要测试他们的在推送之前正确提交(在本地或在登台服务器上)。