使用git add --patch以交互方式删除Hunk

时间:2010-02-01 09:29:26

标签: git

我喜欢使用git add --patch(以及最近的git add -i)来解开我的提交,并验证我提交的内容是好用的

有一段时间我会遇到一个可能是错误记录语句的块,一个额外的换行符(通常是擦除前面提到的日志记录语句) - 我实际上宁愿完全删除。

我不想上台,我也想简单地删除有问题的大块,而它正好在我面前(而不是跳回我的编辑器再试一次)。我也希望将更改应用于我的工作文件。

有办法做到这一点吗?


我所考虑的是使用编辑块功能。

结合下面提出的建议hash,我得到的工作流程比现在好一些。

我同意这违反了git add关注点的分离。 OTOH它会如此方便; P我听起来像我的老板;)

3 个答案:

答案 0 :(得分:4)

比使用reset hard HEAD更好,在提交所有有效的帅哥之后,你可以git checkout文件将其重置为当前分支中记录的内容。这样它就不会影响任何其他文件。

答案 1 :(得分:1)

有一个详尽的解释,为什么git add不能通过Git maintainer Junio on the Git mailinglist来回应功能请求。

他的替代流程的简短版本:

# start from N-commit worth of change, debug and WIP
git stash save -p debug ;# stash away only the debugging aid
# now we have only N-commit worth of change and WIP
git stash save -p wip ;# stash away WIP

git add -p ;# prepare the index for the next commit
git stash save -k ;# save away the changes for later commits

git commit

答案 2 :(得分:0)

您可以根据需要添加索引,提交,然后重置硬HEAD,然后丢失索引中的内容。