首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个分支在xy:master之前是x提交。

这个分支在xy:master之前是x提交。
EN

Stack Overflow用户
提问于 2020-04-10 15:46:47
回答 1查看 267关注 0票数 0

叉形在GitHub上的一个项目,开始推动公关(每个在不同的分支)。一切都很好。然后我看到我的:master是X提交,所以我想更新到当前的上游状态。

我试过:

代码语言:javascript
复制
git remote add upstream https://github.com/home-assistant/brands.git
git pull upstream master
git push --force-with-lease origin master

我得到:

该部门是4位提前提交家事助理:主人.

现在,每当我创建新的PR时,它都会添加额外的提交:

太棒了。我在这里发现了许多类似的问题和答案,但似乎没有一个在起作用(提取,重置-硬起源/主人)。

有没有办法解决这个问题,或者我应该删除叉子,重新开始?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 19:00:10

我需要看到git log --graph --decorate --oneline来确定,但以下是可能发生的事情。

git pull upstream master实际上是git fetch upstreamgit merge upstream/master。与任何合并一样,它将留下合并提交。这就是你看到的。

这些合并是不必要的。与合并特性分支不同,这些更新合并对此项目的未来编码人员没有任何兴趣。他们挡了路。

你可以摆脱它们,而不是在上游/主/主之上合并,而是在上游/主/主之上重新建立基础。git rebase upstream/master。本地提交将被重写在最新的上游/主服务器之上,而不是合并。现有的不必要的合并将被消除。

我建议对所有的拉链进行调整。您可以将Git配置为使用git config --global pull.rebase merges完成此操作。这将重新定位,但保留现有的合并。

最后,为了避免这种情况在未来,不要工作在您的硕士分支。让主人保持干净。在特征分支中完成您的所有工作,使用它作为您的公关,然后删除特性分支。这将避免许多问题。

为了说明这一点,下面是“由X提交发散”的内容。

代码语言:javascript
复制
upstream
A - B - C - G - H - I [master]

origin
          G - H - I [upstream/master]
         /  
A - B - C - D - E [master]

在你git pull upstream master之后..。

代码语言:javascript
复制
$ git pull upstream master

upstream
A - B - C - G - H - I [master]

origin
          G - H - I [upstream/master]
         /         \
A - B - C - D - E - M [master]

注意合并。要消除这种情况,请在上游/主站的顶部重新建立基础。

代码语言:javascript
复制
$ git rebase upstream/master

upstream
A - B - C - G - H - I [master]

origin

A - B - C - G - H - I [upstream/master]
                     \
                      D1 - E1 [master]

现在,你的历史是美好和线性的,就好像你一直在最新的主人之上工作一样。

最后,这项工作应该在一个特性分支中完成。会是这样的。

代码语言:javascript
复制
upstream
A - B - C - G - H - I [master]

origin
          G - H - I [upstream/master]
         /  
A - B - C [master]
         \
          D - E [feature]

更新母版现在是一种简单的快速转发。

代码语言:javascript
复制
$ git checkout master
$ git pull upstream master

upstream
A - B - C - G - H - I [master]

origin
                      [upstream/master]
A - B - C - G - H - I [master]
         \
          D - E [feature]

您还可以将您的特性分支重新定位在主(或跳过一个步骤,并直接在上游/主)之上重基。

代码语言:javascript
复制
$ git checkout feature
$ git rebase master

upstream
A - B - C - G - H - I [master]

origin
                      [upstream/master]
A - B - C - G - H - I [master]
                     \
                      D1 - E1 [feature]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61143806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档