重新部署本地分支并将其推送到github

时间:2019-10-02 09:50:34

标签: git github pycharm

在Github上,我有:

  • master分支,假设github_master_branch
  • 和一个个人(远程)分支,比如github_personal_branch

    1. 过去我是从github克隆的

    2. 我签出了github_personal_branch(使用Pycharm)并创建了一个具有相同名称的本地分支(但假设它是local_personal_branch

    3. local_personal_branch推送到github_personal_branch

现在,在github_personal_branch上,我已经在github_master_branch的前面和后面进行提交。

我想将更改从github_master_branch更改为我的 local_personal_branch,解决冲突,然后将其推送到 github_personal_branch

  1. 我尝试重新设置基准,但是我得到了很多提交,所有github_master_branch都在前面,而不是移动标头。

  2. 我还尝试了Pycharm中的rebase选项(多种组合),但我对ontofrom字段逻辑不太了解。

  3. 我尝试了第二次手动重新设置基准,但是除了master之外,我还获得了非常旧的代码,这些代码可以在local_personal_branch上使用。

3 个答案:

答案 0 :(得分:3)

对于rebase in Pycharm,您需要确保自己位于正确的分支的第一位:

  • 结帐local_personal_branch
  • 获取更新origin
  • described here的身份迁移到refs/remotes/origin/github_master_branch(在字段上)

https://blog.jetbrains.com/ruby/files/2010/12/rebase.png

  

无论如何,变基都需要强制推动,但是,这既不是强制推动,也不是变基的好方法。

在这种情况下,我认为这是:“ local_personal_branch”是个人(对您):您可以根据需要设置基准并强制将其推送任意次,因为您是唯一的一个正在处理。

重新设置基准的想法是使将来的拉取请求变得微不足道,因为您的local_personal_branch提交将基于最新的origin/github_master_branch重新提交,这意味着接受这样的PR在一个简单的快速合并中:没有冲突。

此外,如here所述,将master合并到功能分支中不是最佳实践:您(通常)合并到master,而不是从它合并。 > 请参阅“ rebase vs. merge”。

答案 1 :(得分:2)

虽然我已经尝试过CLI rebase,但是我从不了解如何使用IntelliJ ^ re 的rebase选项。

据我了解,您具有以下设置:

     github/master
          v
A-B-C---D-E
     \
      \-F-G
          ^
       personal,
    github/personal

您也应该在某个地方有一个master分支(本地管理员)。如果您不确定此设置,请向我们提供以下命令的输出:

git log --oneline --decorate --graph local_personal_branch github_personal_branch master github_master_branch

您想要的是将您的个人分支重新建立到master上,以获取下图:

       github/master
            v
A-B-C---D---E---F'---G'
                     ^
                  personal
               github/personal

所以命令是:

git rebase --onto github/master C personal
git push --force

解释一下:

  • 您希望将提交Cpersonal之间的提交放到当前的github/master分支上。
  • 您将新的个人分支推送到github。由于重新建立基准不会创建线性历史记录(某些先前的个人提交(F,G)丢失,并由新的“相同的”提交(F'和G')代替),因此您需要强制执行推送。

有关信息,您的远程存储库可能称为origin而不是github(请参见git remote -v的输出),因此您应将对github的引用替换为{{ 1}}。 origin字母必须替换为Cmaster之间的最后一次公共提交的哈希数。

种类

答案 2 :(得分:0)

代替合并,请使用合并,如下所示:

  1. 将最新(远程)github_master_branch合并到您的local_personal_branch中。 (通过远程,我指的是该分支在远程上的状态;您可能要先更新本地母版并将其合并,但是请确保您使用的是最新版本)

  2. 解决master与分支(在本地local_personal_branch上)之间的所有冲突

  3. local_personal_branch推到github_personal_branch

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

相关问题