在进行合并/ 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版本.