当我想将一个新文件拆分为多个提交时git add -N <file>
,我可以使用git gui
. 但是,当我在暂存时出错时,git gui
不会让我取消暂存个别行,因为它是一个新文件(对我来说这似乎是一个错误)。当然,我总是可以取消暂存整个文件并重新开始,但我想知道是否有更有效的方法可以这样做。
我正在使用git 1.7.5
.
澄清一下,这个问题特定于新的又名未跟踪文件!
从命令行类型:
git reset -p
这将允许您使用标准命令行界面从索引中选择性地取消暂存数据块。这与git add -p
.
更新
好的,当文件是新文件时,您似乎无法选择性地暂存不同的块。鉴于 git-gui 和标准 git hunk 编辑器都不允许这样做,这可能是不可能的。
使用fugitive
你可以很容易地做到这一点。只需调用:Gdiff
命令,然后暂存和取消暂存您想要的任何内容。您甚至可以直接编辑索引文件。当然,这个解决方案需要你相当熟悉vim
并且vimdiff
......
我刚刚遇到了同样的问题:我刚刚提交了一个新文件,我想取消暂存该文件中的一些行并将它们作为单独的提交。我制定的解决方案是:
git commit -m 'REVERTME'
git revert HEAD
git rebase -i
第fixup
一个新提交,并可选择reword
恢复提交。对此进行排序的另一种简单方法是从文件中删除所有内容,除了您在第一次提交中想要的一行。暂存它,然后添加回文件的其余部分。从那时起,您可以像往常一样上演帅哥/台词