什么是在git中取消暂存新文件部分的最快方法?

25
当我想将一个新文件分成几个提交时,可以使用git add -N <file>命令,并使用git gui交互式地暂存行。然而,在进行暂存时,如果出现错误,git gui不允许我取消暂存单个行,因为它是一个新文件(这对我来说似乎是个Bug)。当然,我可以随时取消整个文件的暂存并重新开始,但我想知道是否有更有效的方法。
我正在使用git 1.7.5
澄清一下,这个问题特定针对于<em>新的</ em>,也就是未跟踪的文件!
4个回答

10

从命令行键入:

git reset -p

这将让你使用标准的命令行管理工具,有选择地从索引中取消暂存文件块。这与git add -p相反。

更新

好吧,看起来当文件是新的时候,你不能选择性地提交不同的文件块。考虑到git-gui和标准git文件块编辑器都不允许这样做,这可能是不可能的。


1

使用fugitive,您可以轻松地实现这一点。只需调用:Gdiff命令,然后对您想要的内容进行暂存和取消暂存。您甚至可以直接编辑索引文件。当然,这种解决方案需要您对vimvimdiff相当熟悉...


1

我最近也遇到了同样的问题:我刚提交了一个新文件,然后想取消其中一些行的暂存并单独提交。我找到的解决方案如下:

  • 从添加新文件的提交开始
  • 在源文件中删除您想要取消暂存的行,将这些更改进行暂存并使用git commit -m 'REVERTME'进行提交
  • 创建一个撤消最新提交的新提交: git revert HEAD
  • 使用 git rebase -i fixup第一个新提交,然后可以选择reword撤消提交。

0

另一种简单的方法是将文件中除了第一个提交所需的那一行之外的所有内容都删除。然后将其暂存,再将文件的其余部分添加回去。从此以后,您可以像往常一样暂存块/行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接