【发布时间】:2020-01-28 14:04:12
【问题描述】:
我从工作树中删除了一个文件,方法是将其内容拆分并将其移动到单独的文件中。我一次完成了所有这些工作,现在我想将更改作为单独的提交提交,每次提交都会将大文件的一部分移动到一个新的小文件中。
即我有:
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: big.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
small-1.txt
small-2.txt
small-3.txt
small-4.txt
no changes added to commit (use "git add" and/or "git commit -a")
通常在暂存我的更改时,我只选择与该提交相关的块或行(例如,使用git gui 或git add -p)。但是当我尝试执行此操作时,如果删除了文件,我的请求将被忽略 - 它要么是整个文件,要么什么都没有。
我知道我可以在未跟踪的文件上使用git add -N 来指定它将被添加,然后从该文件中选择单独的行以添加到它的第一次提交中。但是在已删除的文件上运行git add -N 并没有相同的效果。
那么:有没有一种方法可以暂存已删除文件中的单个行,并将该删除分散到多个提交中?这无需返回,恢复文件并逐个删除,这当然是蛮力选项。
【问题讨论】:
-
如果您使用更好的 GUI 工具,它可能会轻松处理。我建议尝试 git-fork
-
@JoePhillips 我以为我都看过了,但我以前从未遇到过git-fork。哇,它甚至还有一个用于交互式变基的 UI!我一定会试一试的。