force git to accept cherry-pick's changes

后端 未结 4 1901
暗喜
暗喜 2020-12-23 09:28

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

相关标签:
4条回答
  • 2020-12-23 09:40

    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
    
    0 讨论(0)
  • 2020-12-23 09:41

    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.

    0 讨论(0)
  • 2020-12-23 09:43

    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 (uppercase X).

    0 讨论(0)
  • 2020-12-23 09:45

    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.

    1. I grab the commit hash of that commit.
    2. Then checkout on to the branch I want to have such commit.
    3. Then run the command above, e.g. git cherry-pick -X theirs 5cf3412
    0 讨论(0)
提交回复
热议问题