如何在拉取/合并请求之前更新(拉取)分支?

2024-01-05

例如,假设我有一个名为develop,我的所有功能都将是从创建的分支develop稍后我需要执行合并请求(在 GitLab 中,在 GitHub 中将是拉取请求)。

如果我需要在将新分支推入之前更新它origin并执行合并/拉取请求,“git pull origin develop“也会更新我的新分支吗?
如果没有,我该怎么做?


有几种方法,这取决于您使用的分支策略。在逐个项目的基础上,我会选择一种策略并坚持下去,但最有效的策略取决于您正在寻找什么。

合并: (从分支执行):

  • git pull (或 git fetch)
  • git 合并起源/开发
  • git push

这保留了历史并且是非破坏性的。它在分支上创建一个新的提交,表示将开发中的更改带入分支。

变基: (从分支执行):

  • git pull --rebase (或 git fetch)
  • git rebase 起源/开发
  • git Push --force (或 git Push -f)

这重写了历史并且具有破坏性。分支上的原始提交将被丢弃并重新创建(它们看起来相似(相同的评论、文件和作者身份),但将具有不同的提交 ID 和提交时间。它使历史更加“线性”。

用南瓜重新打底: (从分支执行):

  • git pull (或 git fetch)
  • git rebase 起源/开发
  • git rebase -i HEAD~2 (假设分支比开发提前 2 次提交)
  • git Push --force (或 git Push -f)

与 rebase(上面)类似 - 重写和破坏性 - 但将分支折叠为单个提交。历史不仅是线性的,而且是简洁的 - 整个分支都折叠为单个提交。


我通常的建议是避免对缺乏经验的团队使用 rebase。变基很容易陷入麻烦,并且有各种各样的事情需要警惕。尽管如此,rebase 创造了美好的历史(如果这很重要的话)——但是取证变得更加困难(如果这很重要的话)。 “--force”是 git 告诉你你正在取消安全措施并要小心你正在做的事情的方式。

查看 git-pull 上的手册页。有一些命令可以折叠拉/合并或拉/变基以将步骤减少一。还有 git-config 命令指定“拉取”始终是“拉取并合并”或“拉取并变基”。

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

如何在拉取/合并请求之前更新(拉取)分支? 的相关文章

  • 是否可以在 GitHub diff 查看器中换行长行?

    是否可以在 GitHub diff 查看器中换行长行 也许是查询字符串参数 请注意 从 2013 年 12 月 3 日起 GitHub 现在提出 散文差异的软包装 https github com blog 1707 soft wrappi
  • 如何更改我的 Github Pages 默认 index.html 位置?

    我已经尝试过以下线程中显示的内容 我可以将我的 Github Pages index html 放在存储库的子文件夹中吗 https stackoverflow com questions 25320356 can i have my gi
  • GIT LFS 跟踪旧数据

    我对 GIT LFS 有一个问题 我的项目达到了我正在跟踪 1 5GB 的 LFS 数据的程度 这比我拥有的数据要多得多 没有 LFS 的所有跟踪内容将为 108MB 我开始调查这个问题 看起来自从我开始重构并移动我的文件以来 git lf
  • ClearCase 到 Git 的迁移

    我们正在努力将 CC Vobs 转换为 GIT 我们有基础 vobs 和 UCM vobs 我见过很多没有明确步骤的主题 有没有什么工具或步骤可以保留历史记录和分支 不 据我所知 没有 ClearCase 到 Git 的桥梁 转换器或适配器
  • 合并 GitHub 中的拉取请求后,Jenkins 将不会触发构建

    到目前为止 在 Jenkins 中触发构建可以很好地创建新的拉取请求 推送更改并留下评论 例如test this please但是 当我在 GitHub 中点击绿色的 合并拉取请求 按钮时 我没有看到 Jenkins 中正在运行任何作业 我
  • 如何正确处理git中仅本地使用的文件?

    我想重新排序 git commits 中更改文件的输出 因此我创建了一个名为submodule orderfile并配置diff orderFile https git scm com docs git config指向该文件 现在出现了很
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • 从另一个分支或从 master 创建 Git 分支?

    所以我是 Git 新手 我最近从存储库中提取了主分支的新版本 我创建了一个branch 1 获取某个功能并将其推送到存储库并创建拉取请求 现在我创建了一个新的branch 2 具有另一个功能 但由于我的拉取请求尚未合并 再次拉取 maste
  • 为什么我必须使用“git commit -a”而不仅仅是“git commit”?

    我正在尝试了解 Git 的复杂性 我使用 git clone url here 从 GitHub 上下载了一个存储库 我做了一些更改 尝试使用 git commit 来提交它们 这似乎没有将更改推送到我的本地存储库 在本地目录 git 中
  • 如何在 Git 中重命名带注释的标签

    如何在 Git 中重命名现有的带注释的标签 我在存储库上有近一百个代表版本号的标签 每个标签都注释有有关该版本更改内容的有用描述 我想更改用于这些标签的命名样式 记录标签消息 删除标签 然后使用旧消息和新名称重新创建它 这对于手动为近一百个
  • 为什么 git-cherry pick 没有说要提交什么?

    我对以下问题进行了很多搜索 但无法获得任何实质性信息 我创建了一个临时分支 202116 并尝试对 gerrit 202116 进行挑选 并收到以下消息 为什么我无法挑选此提交以及为什么会收到此错误 lt gt git fetch ssh
  • 如何为Git存储库组织和设置镜像备份服务器?

    我正在将一些 svn 存储库移至 Git 所以 我基本上尝试做的是 设置一台带有裸 Git 存储库的服务器 我将从中拉取和推送到该存储库 为第一台服务器上的所有存储库设置一些备份服务器 所以 假设我的服务器上有一个目录 例如 HOME gi
  • git 可以知道你当前的分支是从哪个分支分支出来的吗?

    我想创建一个 git 别名 让我可以从其分支的原始分支同步我的分支 例如 如果我从
  • 用于维护项目扩展分支的 Git 工作流程?

    我们在 GitHub 上分叉了一个 OSS 项目 并向其添加一些自定义扩展 我们希望将我们所做的一些更改发送回原始项目 错误修复等 但其他更改是原始项目维护者目前不感兴趣的功能扩展 我正在尝试找出管理这种情况的最佳工作流程 我希望我们的主分
  • Git - 致命:无法获取当前工作目录?

    When I git clone从回购协议中 我得到 fatal Could not get current working directory No such file or directory 我该怎么办 我检查了服务器并发现 git文
  • Git 错误:引用名称“HEAD”不明确

    我对 git 还很陌生 目前 我尝试按照本教程使用分支名称和版本覆盖我的应用程序的图标 http www merowing info 2013 03 overlaying application version on top of your
  • 如何在 git 中使用我的更改进行合并?

    在 git 中合并时如何强制 我的更改 有人将所有 bin 目录放入 git 中 现在我遇到了可怕的合并冲突 现在它说 当你解决了这个问题后 运行 git rebase 继续 如果你 宁愿跳过这个补丁 而是运行 git rebase ski
  • 我的邮箱收到了。但我不知道如何获取邮箱中的补丁,因为邮箱的内容只是文本

    生成补丁后 git send email to 电子邮件受保护 cdn cgi l email protection patches patch 发送了补丁 我的邮箱收到了 但我不知道如何获取邮箱中的补丁 因为邮箱的内容只是文本 请看图片
  • 无法重新索引 magento 1.7.0.2 卡在“处理”上

    我的 magento 索引中有九分之七停留在 处理 状态 我需要重新索引它们才能正确显示我的网站 我通过 ftp 访问我的 var locks 并删除其中的两个文件 但是当我刷新索引页时 它们只是重新出现 index process 3 l
  • Gitflow错误无法初始化

    我已经将 gitflow 安装在我的 github 项目所在的目录中 但是 当我尝试使用命令 启动时git flow init 我收到以下错误消息 git flow init C cygwin64 usr local bin gitflow

随机推荐