如何解决分歧的分支机构和分支机构?

时间:2020-06-03 15:01:39

标签: git rebase git-merge-conflict

通过重置为较早的提交,我无法按顺序恢复本地分支。我一直在本地获取合并冲突,而远程版本没有任何冲突,我想要的是在我的本地分支中获取fremote的精确副本。

我能做的是git checkout <last commit>,实际上我将在本地目录中获得远程副本,但随后我还会得到:

$ git checkout bd8b876 
Note: checking out 'bd8b876'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

我不需要,因为我仍然需要在这个分支上工作。

我不希望启动新分支,因为分支名称也与链接到JIRA票证的脚本绑定在一起。如果没有其他办法,我会做。

我试图解决的问题:

git reset --hard HEAD

现在位于8dc6510更新main.py

git status
    On branch OS-4055-header_bar_Drive_parameters
    Your branch and 'origin/branch' have diverged,
    and have 19 and 3 different commits each, respectively.
      (use "git pull" to merge the remote branch into yours)
    nothing to commit, working directory clean

但是这将始终使我的本地文件处于合并状态。我发现pullfetch组合在一起。

我也尝试过(重置后):merge,但是即使那样也不能给我预期的结果。我在另一个系统上签出了该分支,并且文件按预期进入(没有合并冲突)。如何使本地分支工作副本进入该状态,而无需完全删除源目录? `

1 个答案:

答案 0 :(得分:1)

我一直在本地获取合并冲突,而远程版本 没有任何冲突,我想要的是获得准确的副本 f 在我的本地分支机构中的。

因此,您想将遥控器中的任何东西都保留为“好”东西。只需执行一个新的克隆并删除当前的工作目录即可。

如何在不使用以下命令的情况下使本地分支工作副本进入该状态 需要完全删除我的源目录吗?

因此,您不想这样做,但是无论哪种方式,您都必须删除已分开的本地提交,因为它们已经分开,并且您希望保留远程文件。

git commit --amend发生分歧的所有本地提交,甚至git reset --hard,直到您有效地删除了所有本地提交。您可以通过多种方式实现“提交”的删除。这样做直到您最后一次提交本地和远程共享。

一旦您在这里,如果修改了任何文件,则git stashgit checkout --将其恢复为HEAD原始状态。

现在,git pull将获取并合并您非常需要的远程所有内容。

重新应用您藏匿的所有想要的更改,创建一个新的提交并将其推送到远程。重复直到Jira问题关闭;)

顺便说一句:对于您的本地和远程历史如何产生分歧,我仍然不满意。我希望您处于那种状况,没有其他人会在没有合并策略的情况下将您推向同一个分支。