假设我正在寻找一个问题的解决方案,并尝试多个解决方案,我忘记了或改变了多个事情,并且更改应该变成多个提交。然后我将所有内容存储到分支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
会有一个很棒的新事物。
答案 0 :(得分:1)
您可以对主分支的头部进行软重置,这将保留当前的工作目录,但将分支和索引重置为主分区。
git reset --soft master
在你提交之前,一切都将恢复原样。然后,您可以添加单个文件。
git add <file>
添加部分单个文件。
git add --patch <file>
或者全力以赴并使用完整的互动添加。
git add --interactive
有关深入指南,请参阅Pro Git Book中有关交互式分段的完整章节。