在合并冲突期间,“git pull”将其他人的提交带入我的暂存区域

2023-11-22

所以,我经常遇到这个讨厌的问题,并尝试在网上寻找任何解决方案,但我不确定这是否是 git 的预期行为。

每当我有一些本地提交并且我做了一个git pull,git 将所有其他人的提交放入我的暂存区域,以防出现合并冲突。现在,虽然冲突是在单个文件上,但我不明白为什么 git 将其他人的非冲突提交带入我的暂存区域,要求我提交它们,就好像它们是我所做的更改/提交一样。

最近,我在同事的笔记本电脑上遇到了同样的行为,我们在提交之前取消了同事未添加的所有文件,然后提交了唯一有冲突的文件。而发生的事情,却是出乎意料。 Git 显然删除了所有这些文件,撤消了所有更改,就好像我们的提交撤销了它们一样。

然而,最奇怪的是,我们查看了 Stash(我们使用 Stash 来管理中央存储库),并且我没有看到这些文件被我们在 Stash 中的提交撤消。

我不知道这是怎么发生的。有什么合理的解释吗?另外,我有时也看到 Stash 表现得很奇怪。看来不靠谱。它不会显示两次提交之间的任何更改,但有时会出现更改。我不知道这是怎么发生的,但其他人也遇到过这些问题吗?

Update:后来我意识到 Stash 并不奇怪,只是有点不直观。在进行合并时,它显示了基于两个不同父级的变化。还有一个小的下拉菜单,可以让您更改父级以查看与其相对应的更改。我认为最好在这里更新一下,这样人们就不会产生误导性的想法。


您看到的暂存文件是以下结果所有的变化上次同步本地分支与远程分支之间(我猜是 master,因为你没有提到它)。

Git pull 已“获取”自您上次拉取以来的更改,然后它尝试将远程分支的本地副本合并到本地分支中。然后,它在已更改的文件之一中发生冲突。

因此它必须在合并过程中停下来询问您如何解决与一个文件的冲突。

因此,其他文件已准备好合并,已暂存,并且如果没有任何其他冲突,将会自动合并。

要完成自动合并,您需要 a) 解决冲突,然后 b) 点击提交以完成将其他人的更改合并到您的本地分支。 (有些 GUI 在您单击“我已完成解析”按钮后会自动执行提交完成步骤)

您还会注意到,在 GUI 的提交窗口中,有一条针对待处理提交的预制合并消息?它会说类似“将 origin/x 合并到 x...冲突:y”之类的内容。一旦所有更改的文件都可以添加到阶段,您就可以完成此暂停的自动提交。

所以这对我来说听起来像是预期的行为,但你只是看到了 git 内部流程之一的“内部”。

这里不需要或不涉及隐藏。尽管有些 GUI 会自动存储,但 git 本身在拉取期间并不使用存储。

注意:执行拉取操作时,本地不应有任何已更改的文件。 (即在执行任何分支操作之前将所有内容提交干净,这是一个很好的最佳实践)让 GUI 清理更改的文件是自动存储有用的时候,但当存在冲突时它仍然会变得复杂。也就是说,您需要解决冲突,然后记得弹出隐藏的内容。如果您过于依赖自动化,那么当您必须完成您不了解的自动化流程时,就会感到困惑!所以我建议始终保持工作目录干净。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在合并冲突期间,“git pull”将其他人的提交带入我的暂存区域 的相关文章

  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中
  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa
  • 无法使用 git 推送或获取 [重复]

    这个问题在这里已经有答案了 我可以拉 但无法使用 git 版本 1 9 5 推送或获取 它突然开始给我以下错误 关于如何修复它有什么想法吗 git fetch fatal unable to access https email prote
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • Heroku 应用程序上的 Nodejs Express EACCES 0.0.0.0:80

    我正在尝试在他们的网站上新创建的 Heroku 应用程序上运行 Node 应用程序 我按照他们的步骤操作 但在显示应用程序状态时仍然遇到错误 我跟着Node js 入门 https devcenter heroku com articles
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • 在种子项目上构建时如何组织 git 存储库

    我正在基于从 github 克隆的种子项目 MEAN io 构建一个网站 如何将这些文件与我自己的文件分开 由于该种子提供了广泛的文件框架 因此我自己的文件分布在整个项目中 我希望能够从种子中提取更新 但不能将其与我添加的文件混合 我知道我
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd

随机推荐