重新调整本地分支并将其推送到github

重新调整本地分支并将其推送到github,git,github,pycharm,Git,Github,Pycharm,在Github上,我有: 主分支,比如说github\u主分支 还有一个个人(远程)分支,比如说它github\u personal\u分支 过去我是从github克隆的 我签出了github\u personal\u branch(使用Pycharm)并创建了一个同名的本地分支(但假设它是local\u personal\u branch) 从local\u personal\u分支我推到github\u personal\u分支 现在,在github\u personal\u bran

在Github上,我有:

  • 主分支,比如说
    github\u主分支
  • 还有一个个人(远程)分支,比如说它
    github\u personal\u分支

  • 过去我是从github克隆的

  • 我签出了
    github\u personal\u branch
    (使用Pycharm)并创建了一个同名的本地分支(但假设它是
    local\u personal\u branch

  • local\u personal\u分支
    我推到
    github\u personal\u分支

现在,在
github\u personal\u branch
上,我在
github\u master\u branch
的后面和前面进行了提交

我想将更改从
github\u master\u分支
获取到我的
local\u personal\u分支机构
,修复冲突,然后将其推送到
github\u个人分支机构

  • 我试图重新设置基址,但是我得到了很多提交,所有的提交都在前面,而不是移动标题

  • 我还尝试了Pycharm中的rebase选项,多种组合,但我不太理解
    字段逻辑

  • 我尝试了第二个手动重新基址,但除了master之外,我还得到了非常旧的代码,这在不久前的
    本地个人分支上可用

  • 要执行此操作,您需要确保首先进入正确的分支:

    • 结帐
      local\u personal\u分行
    • 获取以更新源代码
    • 根据需要,重新设置参考/遥控/原点/github\u master\u分支的基础

    无论如何,重新定基需要强制推,顺便说一句,既不强制推,也不重新定基都不是一个好方法

    我认为,在这种情况下,它是:一个“
    本地个人分支机构
    ”是个人的(对您而言):您可以重新设置它的基础,并强制推送它任意多的时间,因为您是唯一一个处理它的人

    rebase的想法是让未来的拉请求变得不那么容易接受,因为您的
    local\u personal\u分支
    提交将在最新的
    origin/github\u master\u分支
    的基础上重新设置,这意味着接受这样的PR将导致简单的快进合并:没有冲突

    另外,如上所述,将
    master
    合并到功能分支中不被视为最佳实践:您(通常)合并到
    master
    ,而不是从它合并。

    请参见“

    虽然我对CLI rebase进行了大量的实验,但我从未掌握如何使用IntelliJ的rebase选项^^

    据我所知,您有以下设置:

         github/master
              v
    A-B-C---D-E
         \
          \-F-G
              ^
           personal,
        github/personal
    
    您也应该在某个地方有一个
    主节点
    分支(本地主节点)。如果您不确定此设置,请向我们提供以下命令的输出:

    git日志--oneline--decoration--graph local\u personal\u branch github\u personal\u branch master github\u master\u branch
    
    您需要将您的个人分支重新设置到master上,以获得以下图表:

           github/master
                v
    A-B-C---D---E---F'---G'
                         ^
                      personal
                   github/personal
    
    因此,命令是:

    git-rebase——在github/master C个人版上
    吉特推力
    
    要解释它:

    • 您希望将commit
      C
      personal
      之间的提交放在当前的
      github/master
      分支上
    • 您将新的个人分支推送到github。由于rebase不会创建线性历史(个人(F,G)的一些先前提交丢失,并被新的“相同”提交(F'和G')替换),因此需要强制推送
    有关信息,您的远程存储库可能被称为
    origin
    ,而不是
    github
    (请参阅
    git remote-v
    的输出),因此您应该在上一次提交中将对
    github
    的引用替换为
    origin
    C
    字母必须替换为
    master
    personal
    之间最后一次公共提交的哈希数


    种类。

    使用合并而不是重定基址,如下所示:

  • 将最新的(远程)
    github\u master\u分支机构
    合并到您的
    local\u personal\u分支机构
    。(远程是指远程上该分支的状态;您可能希望首先更新本地主机并合并该主机,但请确保使用的是最新版本)

  • 修复主机和您的分支机构之间的任何冲突(在本地
    local\u personal\u分支机构上

  • local\u personal\u分支机构
    推到
    github\u personal\u分支机构


  • 现在,personal_分支和master之间的区别应该只是对personal_分支所做的更改。这将使以后更容易将其合并到master中。

    请提供有关这两个分支状态的更多信息。你的目标是什么?完成后,您希望在您的分支上拥有哪些代码?您需要将更改从github\u master\u分支拉到本地\u personal\u分支,修复问题(合并问题),并将强制推送到github\u personal\u分支。无论如何,重新定基需要强制推,顺便说一句,既不强制推,也不重新定基都不是一个好方法。尽量避免以后出现这种情况。@用户我已经编辑了我的答案。在这种情况下,不需要将
    --on
    放到
    上:一个简单的
    git-rebase-github/master
    就足以将
    personal
    移动到
    github/master
    上@VonC是的,在这种简单的情况下,
    --on
    是多余的,与
    C
    参考类似。一个简单的
    git-rebase-origin/master
    就可以完成这项工作,但更详细的描述可以更好地掌握
    rebase
    的功能:从何处到何处,到何处