为什么每次我拉到我的web主机时git都进行合并?
最近,每当我想对我的web主机进行更改时,git都会提示我输入一条合并消息。我不知道我是怎么陷入这种境地的。为什么每次拉动时都要合并 我在当地的分部是大师。我的web主机上的分支也是主分支 如果我按照我一直做的步骤做为什么每次我拉到我的web主机时git都进行合并?,git,Git,最近,每当我想对我的web主机进行更改时,git都会提示我输入一条合并消息。我不知道我是怎么陷入这种境地的。为什么每次拉动时都要合并 我在当地的分部是大师。我的web主机上的分支也是主分支 如果我按照我一直做的步骤做 在本地进行更改。Git添加。Git提交。推 SSH到web主机。导航到项目目录。吉特拉 …为什么会提示我合并 注意:我不是在问如何避免输入合并消息。我在问为什么我必须合并,以及如何摆脱这种情况。假设您没有禁用默认快进行为,这意味着您的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就可以返回空值——如果是,这是一件好事,因为这意味着您可以无缝地切换到重置
工作流).Gitpull
始终执行合并。它本质上是远程分支的fetch
和merge
的组合。Git只会在它们具有不同历史记录时请求合并“注释”。因此,可能是您在尝试合并的分支之前尝试进行合并?不确定!这是不是回答您的问题?只有在无法快进时才需要合并,这意味着您在本地分支上有不在远程分支中的提交。如果您使本地分支与新添加的更改发生之前远程分支所处的状态(或该提交历史中的任何状态)相匹配,合并将不再是强制性的……如果您的“web主机”是您的生产服务器,那么您可能根本不应该进行git拉取
(因为该拉取将保留该生产服务器本地的更改,但生产服务器不应该有本地更改)应该做一个硬的重置。考虑做一些类似于<代码> Git DIFF的头/主/<代码>(假设你的远程和分支命名约定;调整以适应),看看到底有什么不同。(可以使用相同的代码进行两次不同的提交,这样diff就可以返回空值——如果返回空值,这是一件好事,因为这意味着您可以无缝地切换到reset
工作流).Gitpull
始终执行合并。它本质上是远程分支的fetch
和merge
的组合。Git只会在它们具有不同历史记录时请求合并“注释”。因此,可能是您在尝试合并的分支之前尝试进行合并?不确定!这是不是回答您的问题?(社区维基,因为如果这不是知识库中其他地方已经询问和回答的问题的副本,我会感到惊讶)。“在您的web主机的历史记录中提交您的开发分支历史记录中没有的内容”就是这样。我在本地git历史记录和主机git历史记录中都有一个master
分支和一个logo
分支。但是,logo
分支在主机上包含两个本地没有的提交。我不理解在这里使用git reset--hard
的建议