【问题标题】:Pushing a different commit to override previous commit on branch推送不同的提交以覆盖分支上的先前提交
【发布时间】:2020-06-24 09:39:21
【问题描述】:

是时候问一个菜鸟问题了。抱歉,如果它看起来太基本但无处可去,请提前致谢。

我创建了一个分支来推送我的更改,并在该分支上工作了一段时间。但是master同时更新了。我需要从 master 中提取更改,然后返回到我的分支,但在此过程中修改了一些代码,现在我无法推送到分支。我尝试阅读 git 手册和快进部分,但此时似乎没有任何意义,因为我对 git 有点陌生。

TLDR;

Master ------ 当前状态
\
\
\
\
要覆盖的分支

我想要做的是将当前阶段推送到分支以在不破坏分支的情况下被覆盖,但分支的内容可能会在过程中被破坏,这并不重要。

再次感谢。

【问题讨论】:

    标签: git gitlab git-branch fast-forward


    【解决方案1】:

    很可能,您只需要将master 合并到您的分支中,然后正常推送即可:

    # from your branch
    git fetch origin
    git merge origin/master
    # resolve any merge conflicts
    git push origin yourBranch
    

    此时,您的本地 yourBranch 应该是最新的 master 的最新更改。如果您的功能已完成,您可以设置一个返回到master 的拉取请求。

    【讨论】:

    • 感谢您的建议。但冲突似乎与我试图推动的分支有关。
      hint: Updates were rejected because the tip of your current branch is behind<br> hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again.<br> hint: See the 'Note about fast-forwards' in 'git push --help' for details.<br>
    • @necrygor 是的,您必须解决这些合并冲突。阅读提示,它告诉你拉。
    • 我认为你是对的,但我做了一些我无法收回的事情,比如分支说 HEAD 在 ---... 我最终将更改的文件复制到其他地方,删除了分支从远程,而不是从 master 中提取并重新创建一个分支,然后在那里进行更改。很多毫无意义的步骤......不过,感谢您的建议和您的时间。
    • 对于分离的 HEAD 问题,你可以通过 git checkout yourBranch 回到你的分支。但是,我不知道你所有的细节。
    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2019-07-07
    • 2011-02-18
    • 2013-01-15
    • 2021-07-19
    相关资源
    最近更新 更多