如何解决分支和orginbranch出现分歧的问题?

问题描述 投票:0回答:1

通过重置到早期的提交,我无法让我的本地分支恢复正常。我一直在本地收到合并冲突,而远程的版本没有任何冲突,而我想要的是在我的本地分支中得到一个精确的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 ticket联系在一起。不过如果没有其他办法,我会这么做。

我已经尝试了什么来解决这个问题。

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

但这总是会让我的本地文件处于合并状态。我想 pull 兼有 fetchmerge.

我也试过(复位后): $ git fetch origin branch:branch 但即使这样也没有得到预期的结果。我在另一个系统上检查了一下这个分支,结果文件如期而至(合并冲突)。我怎样才能让我的本地分支工作副本进入那种状态,而不需要完全删除我的源目录?

git rebase git-merge-conflict
1个回答
1
投票

我一直在本地得到合并冲突,而远程的版本没有任何冲突,我想要的是,将本地的分支恢复正常。我想要的是,得到一个精确的副本。 f远在他乡.

所以你要保留远程中的任何东西作为 "好 "的东西。只要执行一个新的克隆并删除你当前的工作目录就可以了。

如何让我的本地分支工作副本进入那种状态,而不需要完全删除我的源目录?

所以你不想这么做,但无论哪种方式,你都必须删除本地分叉的提交,因为它们分叉了,你想保留远程中的任何东西。

git commit --amend 所有分歧的本地提交,或者甚至是 git reset --hard 直到你有效地删除了所有的本地提交。你可以通过多种方式来删除 "提交"。这样做,直到你到了你本地和远程共享的最后一个共同提交。

一旦你到了这里,如果有任何文件被修改,那么要么是 git stash 它或 git checkout -- 它恢复到HEAD原始状态。

现在。git pull 将获取并合并远程中所有你急切想要的东西。

重新应用你藏起来的任何想要的改动,创建一个新的提交并推送到远程。重复以上步骤,直到Jira问题结束。)

另外:我仍然不相信你的本地和远程历史是如何分叉的。我希望你把自己放在这种情况下,没有人在没有合并策略的情况下推送到你的同一个分支......

© www.soinside.com 2019 - 2024. All rights reserved.