What is the fastest way to unstage parts of a new file in git?

对着背影说爱祢 提交于 2019-12-03 10:46:54

From the command line type:

git reset -p

This will let you selectivelty unstage hunks from the index using the standard command-line interface for managing hunks.. This is the opposite of git add -p.

UPDATE

OK, it would appear that you cannot selectively stage different hunks when the file is new. Given that git-gui and the standard git hunk editor both do not allow this, it probably isn't possible.

Using fugitive you can easily do so. Just invoke the :Gdiff command and then stage and unstage whatever you want. You can even edit the index file directly. Of course, this solution requires you to be fairly comfortable with vim and vimdiff...

I just ran into the same issue: I had just committed a new file, and I wanted to unstage some of the lines in that file and have those as a separate commit. The solution I worked out was:

  • Start on the commit that adds the new file
  • Remove the lines you wanted to unstage in the source file, stage those changes and git commit -m 'REVERTME'
  • Create a new commit that reverts that latest commit: git revert HEAD
  • Use git rebase -i to fixup the first new commit, and optionally reword the revert commit.

Another easy way to sort this is to cut everything out of the file except for one line that you want in the first commit. Stage it and then add back the rest of the file. From then on you can stage hunks/lines as usual

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!