I did cherry-pick from a gerrit review in my branch. In gerrit code review, I have two patch sets and I cherry-picked patch one before, so now I want to do the second patch set, but there are conflicts, how can I force git to accept all changes? Thanks!
Asked
Active
Viewed 5.6k times
4 Answers
163
You can tell it to always prefer the changes of the commit you are cherry-picking:
git cherry-pick commitish --strategy-option theirs
commitish
can be a SHA-1 hash of a commit, or a branch-name
for the lastest commit of that branch, branch-name~1
for the commit before that etc.
If you want to do the reverse, use:
git cherry-pick commitish --strategy-option ours
The shorthand for --strategy-option
is -X
(uppercased X).
-
4if you want to accept incoming changes then you should use `theirs` key otherwise should use `ours`. u saved my day! – emrcftci Apr 28 '21 at 11:05
-
In my case, this does not force-merge files which have been removed on our branch and modified on theirs. What is the solution to force to accept their changes even if I deleted the files ? – altius_rup Jul 04 '23 at 16:41
22
git cherry-pick -X theirs <commit-hash-you-want-to-force-cherry-pick-from>
My usual workflow is as follows:
Assuming I'm on the master and I have just made a commit.
- I grab the commit hash of that commit.
- Then checkout on to the branch I want to have such commit.
- Then run the command above, e.g.
git cherry-pick -X theirs 5cf3412

tallamjr
- 1,272
- 1
- 16
- 21
12
If you are already in conflict state, simply do
# add only conflicting files here
git checkout --theirs path/to/file
git add path/to/file
git cherry-pick --continue

geek-merlin
- 1,720
- 17
- 13
0
you could brute force it with something like this:
git show cb1e6a:path/to/filename > path/to/filename
git add path/to/filename
git commit
but I'm sure there's an easier way.

Jason B
- 438
- 4
- 7