57

git sometimes gives me this message on a conflict (during a revert or cherry pick)

hint: after resolving the conflicts, mark the corrected paths

What does this mean?

Nick Volynkin
  • 14,023
  • 6
  • 43
  • 67
paullb
  • 4,293
  • 6
  • 37
  • 65

3 Answers3

56

This means that you need to explicitly tell Git that you've resolved a conflict at each file or folder (that is path).

1. Look at the list of files with yet unresolved conflicts

git status

2. Mark each file as resolved

Once you have resolved conflicts in a file, add it to mark that conflicts are resolved:

git add file-which-had-conflicts

If you would like to remove the file instead of resolving conflicts, do it with git rm. However, it's a rare case.

git rm file-which-had-conflicts

3. Proceed with rebase/merge/whatever

git rebase --continue
git merge --continue
git cherry-pick --continue
Nick Volynkin
  • 14,023
  • 6
  • 43
  • 67
5

because some files are in conflict ,you can type git status to find out what is the file with conflict, and after the conflict was sovled ,just git commit -m sth log ,at last git cherry-pick your-commmit-id . see details http://wiki.koha-community.org/wiki/Using_Git_Cherry_Pick#Resolve_conflicts

xirong
  • 51
  • 4
1

This... can be confusing, and with Git 2.34 (Q4 2021), the advice message that "git cherry-pick"(man) gives is clearer:

When it asks conflicted replay of a commit to be resolved by the end user, it now (Git 2.34, Q4 2021) says:

  • for git cherry-pick:
After resolving the conflicts, mark them with
`git add`/`rm <pathspec>`, then run
`git cherry-pick --continue`

You can instead skip this commit with `git cherry-pick --skip`.

To abort and get back to the state before `git cherry-pick`
run `git cherry-pick --abort`.
  • for git revert:
After resolving the conflicts, mark them with
`git add`/`rm <pathspec>`, then run
`git revert --continue`

You can instead skip this commit with `git revert --skip`.

To abort and get back to the state before `git revert`
run `git revert --abort`.

See commit f172556 (22 Aug 2021) by ZheNing Hu (adlternative).
(Merged by Junio C Hamano -- gitster -- in commit 173368d, 10 Sep 2021)

cherry-pick: use better advice message

Mentored-by: Christian Couder
Mentored-by: Hariom Verma
Helped-by: Phillip Wood
Helped-by: Junio C Hamano
Signed-off-by: ZheNing Hu

"git cherry-pick"(man), upon seeing a conflict, says:

hint: after resolving the conflicts, mark the corrected paths 
hint: with `git add <paths>` or `git rm <paths>` 
hint: and commit the result with `git commit`.

As if running "git commit" to conclude the resolution of this single step were the end of the story.

This stems from the fact that the command originally was to pick a single commit and not a range of commits, and the message was written back then and has not been adjusted.

When picking a range of commits, and the command stops with a conflict in the middle of the range, however, after resolving the conflict and (optionally) recording the result with "git commit", the user has to run "git cherry-pick --continue" to have the rest of the range dealt with, "--skip" to drop the current commit, or "--abort" to discard the series.

Suggest use of "git cherry-pick --continue/--skip/--abort so that the message also covers the case where a range of commits are being picked.

Similarly, this optimization can be applied to git revert(man), suggest use of "git revert --continue/--skip/--abort so that the message also covers the case where a range of commits are being reverted.

It is worth mentioning that now we use advice() to print the content of GIT_CHERRY_PICK_HELP in print_advice(), each line of output will start with "hint: ".

VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250