为什么每次我拉到我的web主机时git都进行合并?

为什么每次我拉到我的web主机时git都进行合并?,git,Git,最近,每当我想对我的web主机进行更改时,git都会提示我输入一条合并消息。我不知道我是怎么陷入这种境地的。为什么每次拉动时都要合并 我在当地的分部是大师。我的web主机上的分支也是主分支 如果我按照我一直做的步骤做 在本地进行更改。Git添加。Git提交。推 SSH到web主机。导航到项目目录。吉特拉 …为什么会提示我合并 注意:我不是在问如何避免输入合并消息。我在问为什么我必须合并,以及如何摆脱这种情况。假设您没有禁用默认快进行为,这意味着您的web主机的历史记录中有一些提交不在您的开发分支

最近,每当我想对我的web主机进行更改时,git都会提示我输入一条合并消息。我不知道我是怎么陷入这种境地的。为什么每次拉动时都要合并

我在当地的分部是大师。我的web主机上的分支也是主分支

如果我按照我一直做的步骤做

  • 在本地进行更改。Git添加。Git提交。推
  • SSH到web主机。导航到项目目录。吉特拉
  • …为什么会提示我合并


    注意:我不是在问如何避免输入合并消息。我在问为什么我必须合并,以及如何摆脱这种情况。

    假设您没有禁用默认快进行为,这意味着您的web主机的历史记录中有一些提交不在您的开发分支的历史记录中

    只有当当前状态在新状态的历史记录中的某个位置时,git才可以通过快进[1]跳过在合并期间创建合并提交的需要。如果有直接在web服务器上签入的代码,或者有类似于更改历史的
    git-rebase
    的东西,那么这种假设可能不再成立

    如果您想使生产web服务器的代码与git中的代码完全匹配,那么根本不要使用
    pull
    ——在这种情况下使用的正确工具是
    git reset--hard



    [1] -
    pull
    总是进行某种类型的合并--
    fetch
    +
    merge
    在git术语中是
    pull
    的意思——但当它是一种快进合并时,它更接近于不可见。

    假设您没有禁用默认快进行为,这意味着您的web主机的历史记录中有一些提交不在您的开发分支的历史记录中

    只有当当前状态在新状态的历史记录中的某个位置时,git才可以通过快进[1]跳过在合并期间创建合并提交的需要。如果有直接在web服务器上签入的代码,或者有类似于更改历史的
    git-rebase
    的东西,那么这种假设可能不再成立

    如果您想使生产web服务器的代码与git中的代码完全匹配,那么根本不要使用
    pull
    ——在这种情况下使用的正确工具是
    git reset--hard



    [1]-
    pull
    总是进行某种类型的合并--
    fetch
    +
    merge
    在git术语中是
    pull
    的意思——但是当它是一个快进合并时,它就更接近不可见了。

    只有在无法快进时才需要合并——这意味着在本地分支上有不存在的提交遥控器。如果您使本地分支与远程分支在新添加的更改发生之前所处的状态(或该提交历史记录中的任何状态)相匹配,则合并将不再是强制性的……如果您的“web主机”是您的生产服务器,则您可能根本不应该执行
    git pull
    (因为该拉是保存本地生产服务器的更改,但生产服务器不应该有本地更改),并且应该做一个硬的复位。考虑做一些类似于<代码> Git DIFF头/主/ <代码>(对您的远程和分支命名约定作出假设;调整以适应)。看看到底有什么不同。(可以使用相同的代码进行两次不同的提交,这样diff就可以返回空值——如果是,这是一件好事,因为这意味着您可以无缝地切换到
    重置
    工作流).Git
    pull
    始终执行合并。它本质上是远程分支的
    fetch
    merge
    的组合。Git只会在它们具有不同历史记录时请求合并“注释”。因此,可能是您在尝试合并的分支之前尝试进行合并?不确定!这是不是回答您的问题?只有在无法快进时才需要合并,这意味着您在本地分支上有不在远程分支中的提交。如果您使本地分支与新添加的更改发生之前远程分支所处的状态(或该提交历史中的任何状态)相匹配,合并将不再是强制性的……如果您的“web主机”是您的生产服务器,那么您可能根本不应该进行
    git拉取
    (因为该拉取将保留该生产服务器本地的更改,但生产服务器不应该有本地更改)应该做一个硬的重置。考虑做一些类似于<代码> Git DIFF的头/主/<代码>(假设你的远程和分支命名约定;调整以适应),看看到底有什么不同。(可以使用相同的代码进行两次不同的提交,这样diff就可以返回空值——如果返回空值,这是一件好事,因为这意味着您可以无缝地切换到
    reset
    工作流).Git
    pull
    始终执行合并。它本质上是远程分支的
    fetch
    merge
    的组合。Git只会在它们具有不同历史记录时请求合并“注释”。因此,可能是您在尝试合并的分支之前尝试进行合并?不确定!这是不是回答您的问题?(社区维基,因为如果这不是知识库中其他地方已经询问和回答的问题的副本,我会感到惊讶)。“在您的web主机的历史记录中提交您的开发分支历史记录中没有的内容”就是这样。我在本地git历史记录和主机git历史记录中都有一个
    master
    分支和一个
    logo
    分支。但是,
    logo
    分支在主机上包含两个本地没有的提交。我不理解在这里使用
    git reset--hard
    的建议