我使用git同时使用命令行和GUI,我曾经使用SourceTree作为Git GUI,而在SourceTree中,你可以,对于文件中的每个修改,可视化添加/删除的行,并且变化区域是包装成你可以添加或不添加的块。
例如,让我们拿这个文件:
Foo
Bar
Baz
Git is awesome!
我将其修改为:
Foo
Modif 1
Bar
Baz
Git is awesome!
Modif 2
SourceTree允许您只选择" Modif1"要进行提交,将Modif2保留在我的本地文件中,但不会被删除。
但是git status
只会给我一些修改过的文件的名称,而且您无法精确地处理将要上演的内容以及不会上演的内容。
我怎样才能在命令行中实现这种精度?
我找到的唯一方法是git diff,删除你不想上演的所有部分,然后提交,并替换你尚未上演的部分。这非常不方便。
答案 0 :(得分:1)
git add -p foo.txt
然后,Git将为您提供输出,显示文件差异的一部分并询问要播放的内容。如果输入'?'在propmt,你会收到一条帮助信息,解释你的选择。对于示例中的文件,两个修改都包含在第一个大块中,但是如果你在分段提示符下提供's',那么大块将分成较小的块,允许你通过提供'y'来进行第一次修改',然后回答'n'到第二个变化。如果再次运行git status,您将看到在分阶段和非分阶段更改下列出的文件。运行'git diff'命令将显示未暂存的更改集,运行'git diff --cached'将显示已暂存的更改集。