如何有效地从git分支中选择文件删除,创建和移动?

时间:2018-01-16 01:21:14

标签: git

假设我正在寻找一个问题的解决方案,并尝试多个解决方案,我忘记了或改变了多个事情,并且更改应该变成多个提交。然后我将所有内容存储到分支temp

git checkout -b temp master && git add . && git commit -m "pick piece by piece"

现在,我唯一可以想到的是逐个选择更改git difftool(我现在可能已经错了),它可以完成文件更改的工作。如果我在temp中存储的更改包含文件删除,创建或移动,meld并假设每个其他git difftool同时显示对/dev/null的删除和插入,并移动作为一个文件删除加一个文件插入。

为了从分支中选择它们,能够选择接受删除,插入等文件操作会更方便,类似于合并,在查看文件的选项旁边被删除,创建或移动。

我目前在单独的终端中删除,移动或复制的方法很不方便,因为我必须在git difftool正在进行时切换终端。对于仅存在于diffed分支上的文件,我必须从difftool中复制内容并将其粘贴到文件中或中止diff,checkout temp,将文件复制到临时位置,checkout {{1}再次将文件移动到它所属的位置。

合并或挑选不是一个选项,因为我不希望对提交进行所有更改,而是逐行和文件操作逐个文件操作。

我确信再次了解master会有一个很棒的新事物。

1 个答案:

答案 0 :(得分:1)

您可以对主分支的头部进行软重置,这将保留当前的工作目录,但将分支和索引重置为主分区。

git reset --soft master

在你提交之前,一切都将恢复原样。然后,您可以添加单个文件。

git add <file>

添加部分单个文件。

git add --patch <file>

或者全力以赴并使用完整的互动添加。

git add --interactive

有关深入指南,请参阅Pro Git Book中有关交互式分段的完整章节。