首页 > 解决方案 > Git n commit 后面 | n 前面

问题描述

我正在使用 gitlab 并且有一个项目,其中一个人已经推送了她的工作并将其与 master 合并,我创建了一个新分支并将其推送到远程并发出合并请求,但问题是它说我的分支是 3在 2 前面提交,所以它不能被合并。(我试图合并的项目实际上与 master 中的项目相同。)我不知道如何解决这个问题。我的分支不应该从 master 上的 HEAD 开始而不是落后吗?我是 git 新手,所以如果我很愚蠢,我很抱歉。

标签: gitgithubmergegitlabbranch

解决方案


我认为处理这个问题的最好方法是使用rebase。Git Merge 和 Git Rebase 具有相同的目的。它们旨在将来自多个分支的更改集成为一个。尽管最终目标是相同的,但这两种方法以不同的方式实现它。

Git 合并

合并是使用版本控制系统的开发人员的常见做法。无论是为了测试、错误修复还是其他原因创建分支,合并提交更改到另一个位置。更具体地说,合并获取源分支的内容并将它们与目标分支集成。在这个过程中,只改变了目标分支。源分支历史保持不变。优点

  • 简单而熟悉
  • 保留完整的历史和时间顺序
  • 维护分支的上下文

缺点

  • 提交历史可能会被大量合并提交污染
  • 使用 git bisect 进行调试可能会变得更加困难

Git 变基

Rebase 是将更改从一个分支集成到另一个分支的另一种方法。Rebase 将所有更改压缩到一个“补丁”中。然后它将补丁集成到目标分支上。

与合并不同,变基使历史变平,因为它将完成的工作从一个分支转移到另一个分支。在此过程中,不需要的历史记录被消除。

优点

  • 简化可能复杂的历史
  • 操作单个提交很容易(例如恢复它们)
  • 在繁忙的分支中避免合并提交“噪音”

缺点

  • 团队合作时,重新定位公共存储库可能很危险
  • 更多的工作:使用 rebase 来保持你的特性分支总是更新
  • 使用远程分支变基需要您强制推送。

使用以下命令将功能分支重新定位到主分支。

$ git checkout feature
$ git rebase master

这会将整个功能分支移动到主分支之上。它通过为原始(功能)分支中的每个提交创建全新的提交来重写项目历史记录。

有关更多信息,您可以访问 git 文档 https://www.freecodecamp.org/news/an-introduction-to-git-merge-and-rebase-what-they-are-and-how-to-use-他们-131b863785f/#:~:text=Merging%20is%20a%20common%20practice,them%20with%20a%20target%20branch


推荐阅读