【问题标题】:Can you interact with the index/staging area with TortoiseGit?你能用 TortoiseGit 与索引/暂存区交互吗?
【发布时间】:2011-08-29 04:02:02
【问题描述】:

我的任务是向我的同事介绍 Git,他们几乎完全是习惯于使用 TortoiseCVS 的 Windows 用户。我已经使用 Git 大约一年了,但我几乎只使用 Unix 命令行界面。

所以我一直在尝试熟悉包括 TortoiseGit 在内的 Windows GUI Git 工具。但在我看来,这不仅仅是 Git 命令行界面上的 GUI 皮肤,而且实际上完全抽象了一些东西,特别是索引。

例如,当我在 Windows 资源管理器中右键单击一个新的、未版本控制的文件时,我可以从 TortoiseGit 菜单中选择“添加”,然后提交该文件,但是已经存在的文件中缺少相同的菜单项Git,在这种情况下,我只看到“子模块添加”选项。

有没有办法用 TortoiseGit 与索引交互?

我正在寻找 git addgit diff --cachedgit reset HEAD 的类似物。

Here's 向 Google 小组发送了一条关于此的消息,但这是去年夏天的消息。

如果重要的话,我正在使用 TortoiseGit 1.6.5.0 版和 msysgit 1.7.4.msysgit.0 版。我几天前才安装了这些,所以它们可能是最新的。

【问题讨论】:

    标签: git tortoisegit


    【解决方案1】:

    答案是:不,你不能

    对我来说,TortoiseGit 是一个工具,您可以使用它来更轻松地从 CVS 过渡到 Git(就像我在对 Does TortoiseGit actually make Git a lot easier to use like TortoiseSVN? 的回答中所写的那样)。但是,一旦完成过渡并且您的同事对 Git 更加熟悉,就该拿出真正的工具了。

    与 Git 交互最强大的工具是命令行。时期。 Git Gui 和gitk 也可以使用,带来一些便利但缺乏资源管理器集成(至少在覆盖方面)。但是在多头开发框的时代:为什么不在一台监视器(用于一般管理的监视器)上打开 Git Gui,然后在另一台监视器上工作?

    我最近还在我的团队中介绍了 Git。我们习惯了 TortoiseSVN,所以我也向他们展示了如何使用 Tortoise 添加文件,如何提交等。但在每张幻灯片上,我还注意到他们必须在 Git Bash 中输入什么才能获得相同的结果。这样,一旦他们更有经验,他们就可以拿出介绍幻灯片并查看他们必须使用的命令。

    【讨论】:

    • 谢谢,我有点害怕。感谢您提供包含 GUI 内容和命令行调用的幻灯片提示,这是一个非常好的主意。
    • +1:强调命令行是最终的解决方案,而不是试图解决它,这在我的书中非常重要。 (如果你能处理编程,你可以随时处理 CLI。)
    • 我相信这个答案已经过时了。肯定有 git addgit reset 支持,以及针对工作副本的差异等。
    • @ScottStafford:不,不是。使用 TGIT 的最大问题之一是,它不遵守 Git 命名法,而是使用 SVN 的词汇表:git add 将更改添加到索引,而 TGIT 的 add 选项表示 add untracked files。此外,他们没有reset,但有一个revert,在Git 中将是git checkout。扭曲了你的想法?现在你知道我为什么反对使用 TGIT (stackoverflow.com/questions/5645732/…)
    • @eckes:我的立场是正确的。我从没想过add 的区别——因为我总是使用 TortoiseGit 的提交 GUI,所以区别不太相关。作为记录,真正的reset 是可用的,虽然有点隐藏:tortoisegit.org/docs/tortoisegit/tgit-dug-reset.html
    【解决方案2】:

    在有限的范围内,您可以在 TortoiseGit 中执行这些操作。例如,有一个reset 对话框。它们并不突出(我认为),因为使用 TortoiseGit 意味着您对 git 索引的需求较少——有方便且功能强大的 GUI 方法来选择和审查您打算提交的内容,因此索引变得不那么必要。

    话虽如此,TortoiseGit 为初学者和高级 git 用户带来了许多有用的东西,尽管它只是命令行的补充,而不是替代。

    作为一个额外的过渡,您可能对我使用的批处理文件感兴趣,它允许从命令行方便地调用那些 TortoiseGit GUI 窗口,从而稍微模糊了界限:https://github.com/ses4j/tgit

    【讨论】:

    • 只是出于兴趣:为什么我需要在命令行中使用残缺的 TortoiseGit ???
    • TGIT 菜单中的Addgit add 完全不同。
    • @eckes:我首选的 git 工作流程是从命令行调用大多数操作。但不是git add/git commit -m 序列(或提交这么多意外文件的邪恶git commit -am),我打开了 TortoiseGit 的提交 GUI,我可以通过双击一个一个地查看每个更改的文件,确保我添加/删除了我想要的任何内容,并在一个不错的地方编辑了提交消息。 logdiff 的常见简单操作也是如此——也许您可以轻松阅读统一差异,但我更喜欢可以在差异工具中逐一查看的文件列表。
    【解决方案3】:

    事实比迄今为止的答案更糟糕。我尝试了一个实验:git add 对索引进行一些更改,恢复工作树以匹配当前 HEAD,然后运行 ​​TortoiseGit 提交。

    它将更改的文件列为有资格包含在提交中的文件之一,因此它知道某些内容已更改,这给人的印象是它至少知道如何完成已由另一个工具暂存的提交.但是当我选择它时,提交实际上使用了工作树副本并破坏了索引中未提交的数据,并且提交最终成为对该文件的无操作。

    一个危险的工具,我想我会避免它。

    【讨论】:

      【解决方案4】:

      最近遇到了使用git add 来应用存储的需要,当对相同的文件进行更改时,我发现我可以通过一个技巧来使用它:在 repo 中创建一个新文件(例如 .txt) , 打开提交窗口,该窗口将显示更改的文件以及新文件。选择所有更改的文件和新文件。右键单击新文件,您将在那里看到Add 命令。它会将git add 应用于所有选定的文件。之后你可以Revert 新文件。 所有这些都让我可以对修改过的文件应用 stash。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-08
        • 1970-01-01
        • 2016-04-14
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-07
        相关资源
        最近更新 更多