如何在git中标记未解析的分支?

如何在git中标记未解析的分支?,git,github,version-control,gitlab,commit,Git,Github,Version Control,Gitlab,Commit,背景 在我正在处理的存储库中 有一个主分支master和一个受保护的开发分支stage 我们开发人员将所有mr发送到stage,管理员在适当的时候用stage更新master 我所做的 所以我在我的分支上,我们称之为changesA。我从2天起就一直在做这件事,在这期间,合并了一些分支后,阶段分支被更新了 今天,在用我的更改更新了我的远程分支之后,我退出了这个阶段- git pull origin stage 有一些合并冲突,比如说在10个文件中。我解决了这些问题并推动了这些变化。现在,我的远

背景

在我正在处理的存储库中

有一个主分支
master
和一个受保护的开发分支
stage

我们开发人员将所有mr发送到
stage
,管理员在适当的时候用
stage
更新
master

我所做的

所以我在我的分支上,我们称之为
changesA
。我从2天起就一直在做这件事,在这期间,合并了一些分支后,阶段分支被更新了

今天,在用我的更改更新了我的远程分支之后,我退出了这个阶段-

git pull origin stage
有一些合并冲突,比如说在10个文件中。我解决了这些问题并推动了这些变化。现在,我的远程分支将使用stage更新。在我的提交历史记录中创建了一个新的合并提交,包含152个更改的文件(1587个添加文件和4543个删除文件)

我意识到我在解决这些冲突时犯了一些错误。所以我恢复了我的合并提交。我的提交历史记录中添加了一个新的恢复提交,其中包含152个更改的文件(4543个添加和1587个删除)

我在我的分支上做了更多的工作,并用这些更改更新了我的远程分支

有什么问题

在这一点上,我预计我的分支将落后于舞台,因为我恢复了我的拉力。我希望在我恢复合并提交时基本上没有解决的10个文件中会有冲突

但是当我运行相同的命令时,它表明我的分支已经更新了stage。我相信出于某种原因,我的分支已被标记为已解决,并随阶段更新

这里出了什么问题?我如何解决同样的10个冲突

我尝试过的(没有成功)

  • 我尝试退出舞台,并更新了我的本地舞台
  • git fetch
    在我的分支上
  • 我通过
    git checkout-b changescopy
    创建了分支的副本,并尝试了
    git pull origin stage
    。我收到了同样的信息
  • 我删除了我所有的本地分支机构,签出了stage并进行了拉拽。然后检查了一下我的树枝,然后拔了拔
  • 我从stage签出了一个分支,并创建了对一个文件的更改,该更改将与我的分支产生合并冲突。把那个分支合并到舞台上。我预计会有11个文件与我的分支发生合并冲突,但只有一个
  • 什么有效

    没有捷径可走。以下是我为解决这个问题所采取的步骤-

  • git reset——硬头~4
    到了我在退出后台之前推动更改的地步
  • git拉原点阶段
    。这次我要再次解决这10个冲突。(这次我做对了!)
  • git cherry pick
    我在恢复后推动的最新更改
  • git推送原点更改a--force
    。因为我回到了历史,所以需要使用Force,所以我的本地分支位于我的遥控器后面,git会在拉之前拒绝任何推送。我独自处理我的分支,所以我知道如果我强制推送,我不会覆盖任何更改
  • 完成了

    谢谢你的帮助。我知道这种做法,但我想知道为什么revert不能像我预期的那样工作。公认的答案涵盖了这一点

    但当我运行相同的命令gitpull originstage时,它表示我的分支已经与stage同步

    当然:在branchA之前阶段已经合并。
    在最后一次合并后一个分支完成的Ant更改(恢复提交、修复等)不会受到从阶段到分支的新合并的影响

      --s--s (stage)
            \  <= merge already done 
     --a--a--M--[revert]--[fixes]
    
    --s--s(阶段)
    
    \git revert是对提交进行反向更改的git提交。在git约定中,这是向前发展的。您不必担心git pull origin阶段的显示已经是最新的,因为阶段分支中的更改是最新的。阶段分支中的所有提交都已在您的分支上。你应该检查的是当你从一个阶段到另一个阶段创建PR时会发生什么。如果这显示了正确的更改,那么你应该很好。我检查了一些文件,我的分支没有阶段中的更改。当我创建公关时,它假设my branch是真实的,并覆盖了那152个文件。最简单的方法是:从
    stage
    创建一个新分支,然后
    cherry pick
    将分支提交到此新分支,并修复再次出现的任何冲突。或者在合并分支中的stage之前,通过执行
    git reset--hard
    和然后再次进行合并。确保将当前提交保留为分支,以便在需要时可以再次返回。请注意,没有已解决或未解决的分支。分支名称只是标识一些提交。提交要么存在(然后可以通过哈希名称标识),要么不存在。这就是Git中分支的全部内容!(好吧,几乎所有的。:-)