Git合并:只保留上演提交并抛弃其余部分?

在进行合并/ rebase时,我经常遇到这种情况:

  – 遇到一些冲突

  – 解决重要问题,将其移至索引

然后,有一堆未分级的垃圾,我只想保留HEAD版本.理想情况下,我可以做“git commit&& git reset –hard”,但是git不会让我提交,而仍有未合并的东西待定.我试过“git stash save –keep-index”但是失败了.我尝试了“git diff | patch -Rp1”(以及各种突变).我不认为任何“git reset”模式符合我的要求.

必须有一种方法可以说“我得到了我想要的东西,只丢弃其余的”.

最佳答案 没有开箱即用的解决方案,但您可以创建别名.

您可以使用:

git checkout HEAD -- <list of files to keep as HEAD>

指定要保留给定文件,就像它们在HEAD中一样.

要获取剩余冲突的列表,您可以使用:

git diff --name-only --diff-filter=U

然后把它作为别名放在一起给出:

alias gitkeeprest="for file in $(git diff --name-only --diff-filter=U); do git checkout HEAD -- $file; done"

有了这个,你会:

>像往常一样开始合并.
>解决您有兴趣将它们添加到索引的部分.
>通过运行gitkeeprest将其余部分恢复为HEAD版本.

点赞