更好的git-add-p?

更好的git-add-p?,git,version-control,Git,Version Control,有时我在没有安装X窗口的系统上工作,不能使用GitGUI 除了git add-p,还有哪些现有的控制台替代方案 我几乎喜欢它所做的一切(实际上比Git GUI更喜欢),但我讨厌它不允许我查看整个图片并选择我想要查看的块的顺序。对我来说,这是GitGUI相对于GitAdd-p的唯一实际优势,但它是相当关键的一个 我尝试了tig,但我不喜欢它提供的用户体验 有什么建议吗?Vim有一个“逃犯”插件 编辑:这本书非常好,我推荐它。我想补充一点提示,通常不需要用手写方式键入:diffget和:diffpu

有时我在没有安装X窗口的系统上工作,不能使用GitGUI

除了git add-p,还有哪些现有的控制台替代方案

我几乎喜欢它所做的一切(实际上比Git GUI更喜欢),但我讨厌它不允许我查看整个图片并选择我想要查看的块的顺序。对我来说,这是GitGUI相对于GitAdd-p的唯一实际优势,但它是相当关键的一个

我尝试了
tig
,但我不喜欢它提供的用户体验


有什么建议吗?

Vim有一个“逃犯”插件

编辑:这本书非常好,我推荐它。我想补充一点提示,通常不需要用手写方式键入
:diffget
:diffput
,因为您可以通过按do和dp在正常/可视模式下直接键入

此功能的最佳开始命令似乎是
:Gstatus


Vim是一个终端编辑器(碰巧也有一个gui端口)

逃犯插件可以让你简单地编辑文件的索引和工作树版本,并允许你进行diffput/diffget,直到你满意为止。Vim的diff模式非常复杂,比git add--patch更灵活/直观

  • 卷轴装订
  • 同时突出显示语法和行内(字级)差异突出显示
  • 自动差异折叠(不变区域)
你可以

:他是个逃犯

在工作树中编辑文件并进行一些更改。使用|:Gdiff |打开 索引版本。在不同的大块头上使用| do |和| dp |将文件带入 同步,或使用|:Gread |拉入所有更改。将索引版本写入 暂存文件

一个简单的

git diff
“查看全貌”,然后

git add -i
5

要选择要提交的第一个文件,请先准备好这些大块头,然后对下一个文件重复这个过程?

如果我和你处于相同的情况下(一组大块头,其中一些大块头比其他人“更重要”),我会用易于区分的提交消息将较小的帅哥提交到他们自己的提交中,只留下那些“更重要”的帅哥,这样他们就不会妨碍diff或git add-I


对于“特权较低”的大块头来说,有了易于识别的提交消息,以后应该可以很容易地处理它们。

这里的“5”有什么意义吗?我希望能够同时完成所有这一切。通常,我有几个未提交的帅哥系列,它们位于几个不同的文件中(即每次提交一个系列)。每次运行
git add-p
循环都相当乏味。另外,
git add-i
的使用与在
git add-p
调用中使用实际的文件名相同,没有太大的改进。@sehe:这是一个文件列表菜单项编号。@Alexander Gladysh:我不确定你的意思-我想通过
git add-i
给你提供更多的概述(例如,看到代码行发生了变化)。是的,您必须为每一次不同的/下一次提交调用
git add-i
git commit
,但git就是这样工作的。“同时做所有事情”的确切含义是什么?亚历山大·格拉迪什:那你对我就不走运了。我能给你的另一个提示是,改变你的编码风格,一次只对一个小的提交进行更改,并在开始下一次提交之前提交。然后,您不需要将更改委托给不同的提交,这更符合git的理念:一次只做一件事。做出小小的承诺。如果您从事不同的工作,请为每个工作创建一个临时分支。相应地合并/重新设置它们的基础。你有没有看过《逃犯》?-也就是说,作为一个通用的编辑器,我非常确定Emacs将有一个diff模式。最近也有一个。你知道“g”命令吗?这当然不太理想,但它确实给了你一个所有帅哥的列表,以及移动到特定帅哥的能力(有效地让你选择顺序)。我知道这一点,但这还不够好-我需要查看整个文件中的所有帅哥,以决定是否现在就提交它们。