How to cherry pick only changes for only one file, not the whole commit

后端 未结 9 1353
萌比男神i
萌比男神i 2020-12-04 07:12

I need to apply changes introduced in one branch to another branch. I can use cherry pick to do that. However, in my case I want to apply changes which are relevant only for

9条回答
  •  难免孤独
    2020-12-04 07:29

    You have different options based on what you want to achieve:

    If you want the contents of the file to be the same as on the target branch, you can use git checkout -- . This will however not “cherry-pick” the changes that happened in a single commit, but just take the resulting state of said file. So if you added a line in a commit, but previous commits changed more, and you only want to add that line without those other changes, then a checkout is not what you want.

    Otherwise if you want to apply the patch introduced in a commit to only a single file, you have multiple options. You could run git cherry-pick -n, i.e. without committing it, edit the commit (for example reset all files using git reset -- . and only add the file you actually want to change using git add ). Or you could create the diff for the file and apply the diff then:

    git diff ^.. --  | git apply
    

提交回复
热议问题