我已经阅读了Git社区手册的基本分支和合并部分。

所以我遵循它,创建了一个分支:实验。

然后我:

切换到实验分支(git校验实验) 做一些改变 提交(git Commit -a) 切换到主分支(git checkout master) 做一些修改并提交 切换回实验性(git checkout experimental) 合并主机更改为实验性(git合并主机) 有一些冲突,但在我解决后,我做了'git add myfile' 现在我被困住了,我不能回到主人那里

当我做的时候

 $ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.

我照做了:

$ git rebase --abort

没有正在进行的调整?

我照做了:

$  git add res/layout/socialhub_list_item.xml
$ git checkout master
error: Entry 'res/layout/my_item.xml' would be overwritten by merge. Cannot merge.

我该怎么做才能回到我的主分支?


当前回答

如果你曾经被卡住在合并/重基,你可以总是

git reset --hard

将工作恢复到上次提交时的状态。这将丢失你在工作树中所做的更改,所以如果你在合并之前有局部修改,它们将在合并之后消失——这就是为什么当你有局部修改时不启动合并是明智的。:)

其他回答

当合并过程中出现冲突时,必须手动完成合并提交。听起来好像您已经完成了前两个步骤,编辑冲突的文件,然后运行git add将它们标记为已解决。最后,你需要用git commit提交合并。在这一点上,您将能够再次切换分支。

快速提示:你可以使用git commit -am“your commit message”来同时对所跟踪的文件执行添加和提交操作。(来源:@vaheeds)

解决冲突的步骤:

第一次“签出”到你想从另一个分支合并的分支 分支(BRANCH_NAME_TO_BE_MERGED)


"git checkout "MAIN_BRANCH"

然后使用命令将其与“MAIN_BRANCH”合并:

“git merge origin/BRANCH_NAME_TO_BE_MERGED”


Auto-merging src/file1.py
CONFLICT (content): Merge conflict in src/file1.py
Auto-merging src/services/docker/filexyz.py
Auto-merging src/cache.py
Auto-merging src/props.py
CONFLICT (content): Merge conflict in src/props.py
Auto-merging src/app.py
CONFLICT (content): Merge conflict in src/app.py
Auto-merging file3
CONFLICT (content): Merge conflict in file3
Automatic merge failed; fix conflicts and then commit the result.

现在你可以看到它正在显示“冲突(内容)”,对那些有“冲突”的文件,看到你的代码并解决它们

运行"git status" =>它会显示你需要添加的文件(你已经解决了):


 Unmerged paths:
      (use "git add <file>..." to mark resolution)

        both modified:   file3
        both modified:   src/app.py
        both modified:   src/props.py
        both modified:   src/utils/file1.py

解决了所有冲突后,使用下面的git命令逐个添加每个文件


git add file3
git add src/app.py
git add src/props.py
git add src/utils/file1.py

“git提交” (当你要提交的时候添加一些消息,如果没有,它会打开vi或vim编辑器,你需要按“esc:q!”然后按“enter”) 再次运行"git status"


 On branch MAIN_BRANCH
  Your branch is ahead of 'origin/MAIN_BRANCH' by 10 commits.
  (use "git push" to publish your local commits)

7.git push”

如果你曾经被卡住在合并/重基,你可以总是

git reset --hard

将工作恢复到上次提交时的状态。这将丢失你在工作树中所做的更改,所以如果你在合并之前有局部修改,它们将在合并之后消失——这就是为什么当你有局部修改时不启动合并是明智的。:)

手动解决冲突后的下一步操作是:-

Git添加。 Git状态(这将显示继续自动合并过程需要哪些命令) [命令git建议,例如git merge—continue, git cherry-pick—continue, git rebase—continue]

当你使用命令git merge brancha branchb合并两个分支时,有两种可能:

通过跟踪一个分支(我们称之为brancha)的提交历史,另一个分支(我们称之为branchb)可以到达它。在这种情况下,git只需快进头指向最近的分支(在这种情况下是branchb)。 2.但是如果两个分支在某个较旧的点上分离了,那么git会创建一个新的快照并添加一个指向它的新提交。所以如果 合并的分支之间没有冲突,git平滑地创建了一个新的提交。

运行git log查看合并两个不冲突分支后的提交情况。

现在回到有趣的情况,合并分支之间存在合并冲突。这句话摘自https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging页

Git没有自动创建新的合并提交。在您解决冲突时,它暂停了进程。如果你想在合并冲突发生后的任何时刻查看哪些文件未合并,你可以运行git status


因此,如果存在合并冲突,你需要解决冲突,然后使用git add filename将你所做的更改添加到暂存区域,然后使用git commit命令提交这些更改,git会因为冲突暂停该命令。我希望这能解释你的问题。也请访问上面的链接以获得详细的了解。如果有任何疑问,请在下面评论,我很乐意帮助。