23

当我想将一个新文件拆分为多个提交时git add -N <file>,我可以使用git gui. 但是,当我在暂存时出错时,git gui不会让我取消暂存个别行,因为它是一个新文件(对我来说这似乎是一个错误)。当然,我总是可以取消暂存整个文件并重新开始,但我想知道是否有更有效的方法可以这样做。

我正在使用git 1.7.5.


澄清一下,这个问题特定于新的又名未跟踪文件!

4

4 回答 4

9

从命令行类型:

git reset -p

这将允许您使用标准命令行界面从索引中选择性地取消暂存数据块。这与git add -p.

更新

好的,当文件是新文件时,您似乎无法选择性地暂存不同的块。鉴于 git-gui 和标准 git hunk 编辑器都不允许这样做,这可能是不可能的。

于 2012-06-13T15:07:32.960 回答
1

使用fugitive你可以很容易地做到这一点。只需调用:Gdiff命令,然后暂存和取消暂存您想要的任何内容。您甚至可以直接编辑索引文件。当然,这个解决方案需要你相当熟悉vim并且vimdiff......

于 2012-06-13T14:21:27.857 回答
1

我刚刚遇到了同样的问题:我刚刚提交了一个新文件,我想取消暂存该文件中的一些行并将它们作为单独的提交。我制定的解决方案是:

  • 从添加新文件的提交开始
  • 在源文件中删除要取消暂存的行,暂存这些更改并git commit -m 'REVERTME'
  • 创建一个恢复最新提交的新提交:git revert HEAD
  • 用于git rebase -ifixup一个新提交,并可选择reword恢复提交。
于 2013-10-01T10:42:59.573 回答
0

对此进行排序的另一种简单方法是从文件中删除所有内容,除了您在第一次提交中想要的一行。暂存它,然后添加回文件的其余部分。从那时起,您可以像往常一样上演帅哥/台词

于 2017-12-21T16:24:44.327 回答