我将“main.c”的副本提交到我的存储库。然后我删除了5个完整的函数,看看会发生什么。我想要其中2个功能。我可以这样做:
$ git make-patch main.c --interactive > patch_to_add_back_functions.patch
#interactively choose the functions I want.
$ patch main.c patch_to_add_back_funcitons.patch
有没有办法实现这一目标?无论是通过补丁生成还是通过任何最可能的思维方式。
答案 0 :(得分:2)
如果您使用git checkout -p
,您可以选择性地放弃工作树中的更改 - 这对于您描述的情况非常有用,我发现了。其他一些注意事项可能会引起关注:
作为澄清,当我说“有选择地放弃更改”时,严格来说应该“有选择地将文件的某些部分更改回索引中的状态”。但是,如果自上次提交后没有进行任何更改,则索引中的状态将与上次提交中的状态相同。
与git中的其他交互式-p
选项一样,您可以按 s 进一步拆分补丁,或者,如果您需要以更精细的方式放弃更改级别,按 e 将允许您直接编辑补丁。 (然而,后者在开始时可能会相当混乱。)