Say we have a develop branch and a feature branch. The develop branch receives many updates, very frequently, from dozens of developers. It often gets very far ahead of the feature branch.
On one occasion, a merge from develop into feature results in 300 low-level conflicts. These conflicts touch many different areas of the codebase, and no single developer is familiar with all of it. Therefore, it is difficult for any single developer to be able to resolve every conflict on his local machine in order to push a logically correct, conflict-free version of the project.
I understand that the best solution would be to avoid this situation. However, precluding that - due to organizational dysfunction, fait accompli, etc., this situation exists - how best to use git to extricate oneself?
My understanding of git is that it is not possible to commit anything that remains in a conflicted state; by staging, you are indicating that it is not conflicting. Yet, that seems to require that any and all conflicts become the unshared, un-collaborated-upon responsiblity of the person doing the merge. This is undesirable because the conflict resolution is a large task, with parts best handled by separate people.
Two potential ways out occurred to me. However, neither one sounds great. First, I contemplated trying to resolve what conflicts I could, committing those resolutions only, and then leaving other developers to the parts to which they are suited. However, as far as I know, git does not support any kind of interim merge commits, and indeed won't let you begin a merge and subsequently commit unless you locally add every conflicted file, thus marking it resolved. I believe this answer supports my apprehension.
That led me to my second idea, which was to merely fix what I could, and commit the rest including conflict markers. Fortunately, I was able to resolve all high-level conflicts (file renames/deletions, etc.) but if I hadn't been, those would remain an issue. Setting aside that the feature branch would be in a non-compiling state, I am concerned that git would no longer consider these files to be in conflict; it would mean that we would have to rely on our IDEs and other tools to detect the git conflict markers.
My preference would be to only commit files that are actually resolved, allowing other developers to pull them, while files that are not actually resolved remain indicated as conflicted, to them.
I also noticed that there is a --no-commit option available to git merge, and I am wondering if this is the way to go, since I presume that it would allow me to only commit files I've actually reviewed, understood, and resolved, while leaving the remaining conflicts uncommitted locally.
Is there a more effective strategy to use git to split responsibility for this merge among several developers?