【问题标题】:Better git add -p?更好的 git add -p?
【发布时间】:2011-05-01 21:14:12
【问题描述】:

有时我在没有安装 X Window 的系统上工作,并且无法使用 Git GUI。

git add -p 的现有控制台替代品有哪些?

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

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

有什么建议吗?

【问题讨论】:

  • 你知道'g'命令吗?这当然不太理想,但它确实为您提供了所有帅哥的列表以及移动到特定帅哥的能力(有效地让您选择顺序)。
  • 我知道这一点,但这还不够好——我需要查看一个文件中的所有数据块以决定我现在是否要提交它们。

标签: git version-control


【解决方案1】:

Vim 有一个插件 'fugitive'

编辑linked vimcast (comments) 非常好,我推荐它。我想补充一点提示,通常不需要直接输入:diffget:diffput,因为您可以通过按 do 和 dp.

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


Vim 是一个终端编辑器(恰好也有一个 gui 端口)

fugitive 插件将简单地让您一起编辑文件的索引和工作树版本,并让您 diffput/diffobtain 直到您满意为止。 Vim 的 diff 模式很复杂,比git add --patch 更灵活/直观。

  • 滚动绑定
  • 语法高亮和行内(字级)差异同时高亮
  • 自动差异折叠(未更改区域)

你可以get fugitive here

来自:he fugitive的片段:

编辑工作树中的文件并进行一些更改。使用 |:Gdiff|打开 索引版本。使用 |做|和 |dp|各种帅哥把文件带进来 同步,或使用 |:Gread|拉入所有更改。将索引版本写入 暂存文件。

【讨论】:

【解决方案2】:

简单的呢

git diff

“查看整个图片”,然后是一个

git add -i
5

选择您要提交的第一个文件,暂存大块,然后对下一个文件重复该过程?

【讨论】:

  • “5”有什么意义吗?
  • 我希望能够同时完成所有这些工作。通常我有几个系列的未提交的大块坐在几个不同的文件中(每次提交将是一个系列)。每次为每个循环运行git add -p 循环是相当乏味的。此外,git add -i 的这种使用与在git add -p 调用中使用实际文件名相同,没有太大改进。
  • @sehe:这是一个文件列表菜单项编号。
  • @Alexander Gladysh:我不确定你的意思——我想通过git add -i 给你更多的概述(例如,看到代码行发生了变化)。是的,你必须为每个不同的/下一次提交调用 git add -igit commit,但这就是 git 的工作方式。你到底是什么意思“同时”做?
  • @Alexander Gladysh:那你对我不走运。我能给你的唯一其他提示是,改变你的编码风格,一次只对一个小提交进行更改,并在你开始下一次提交之前提交它们。然后你不需要将更改委托给不同的提交,这就是 git 的哲学:一次只做一件事。进行小提交。如果您处理不同的事情,请为每个事情创建一个临时分支。相应地合并/重新设置它们。
【解决方案3】:

如果我和你处于同样的情况(混合了一些帅哥,其中一些帅哥比其他帅哥“更重要”),我会将较小的帅哥提交到他们自己的提交中,并带有易于区分的提交消息,只留下那些'更重要的'帅哥,这样他们就不会妨碍差异,或者 git add -i。

对于“特权较低”的帅哥来说,通过易于区分的提交消息,以后应该很容易处理它们。

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2011-01-23
    • 2012-08-07
    • 2016-09-02
    相关资源
    最近更新 更多