Git:提交部分更改

Stack Overflow有多个问题来解决暂存和仅提交文件部分的问题。 但是,我无法让它工作。

  • 我怎样才能在git中只提交一部分文件
  • 假设我们想用一些基本方法在php中实现一个虚拟数学类(语言无所谓),如: addsubtractmultiplydivide.

    我们从类定义开始:

    <?php
        class Math {
        }
    ?>
    

    现在:

    $ git add math.php
    $ git commit -m "Create Math class."
    

    在下一步,我们实现这两个addsubtract的四种方法:

    <?php
        class Math {
            public function add($a, $b) {
                return $a + $b;
            }
    
            public function subtract($a, $b) {
                return $a - $b;
            }
        }
    ?>
    

    但是现在我们要在单独的提交中提交addsubtract方法的实现。

    这可能吗?

    我试过的

    $ git add -p

    出现以下内容:

    在这里输入图像描述

    我很乐意将大块头分成小块,所以我按s ,出现以下内容:

    在这里输入图像描述

    git似乎没有将它分成更小的区块。

    现在我们尝试手动编辑当前的大块。 所以我按: e

    我的默认文本编辑器(崇高文本)打开,在这里我可以编辑大块:

    在这里输入图像描述

    我试着简单地删除第8,9,10,11行 - 因为我只想add函数。 我保存,关闭编辑器,但git说:

    Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]?

    我对git add -p和交互式登台非常陌生,所以也许这是我做错的一件事,或者根本不可能实现我想要的,并且真的希望一些更有经验的git用户有一些指示可能也是我的一个解决方案。

    谢谢!


    你正在做我以前完成的工作,我甚至在UNIX机器上重新创建了整个实验,并且它的工作方式与预期的一样。

    我怀疑你的编辑在节省时正在改变差异的结尾。


    因为git喜欢命令行,所以这并不是绝对的“git方法”,但这是我所做的:

    Git捆绑了git gui - 你可以通过运行这个命令来启动它。 在那里你可以选择未分类的文件,标记你要提交的行并点击“提交阶段行”。 如果你希望它更像是一个命令行工具,你可以运行git gui citool ,这会影响到你在提交时ui会关闭的效果。

    部分与git gui分期

    请注意,此工具已正确与git集成。 你不需要在这个UI中做出承诺。 你可以将相关的行关闭,关闭它,也许再做一些git add ,然后通过命令行提交。

    一般来说,我喜欢git comand界面,尽管我不一定是shell粉丝,但我只是在一段时间后才喜欢它。 我尝试了多个GUI,并将它们全部扔掉,因为它们无法与git命令行界面竞争。 但是对于git add -p我肯定会说这是GUI的一项任务。 使用git gui部分提交更容易。 复杂的历史浏览也一样。 gitk (也附带git)在git log --graph -p (只要你确实需要了解树并且不太了解历史状态)方面做得比git log --graph -p更好。

    注意:但是你似乎仍然在做一切正确的事情 - 我尝试了你所做的并且必须同意本杰克逊。 这应该肯定有效。 你的编辑必须搞砸了。

    最后说明 :您似乎正在使用标准windows cmd终端的git命令行。 我强烈建议切换到mintty。 下载msys版本,把它放在你的Program FilesGitbin目录下,用mintty -运行它(创建一个快捷方式)。 这会让你获得相同的shell,但是更好的一切(尤其是更好的大小调整和复制和粘贴)。

    链接地址: http://www.djcxy.com/p/4179.html

    上一篇: Git: commit partial changes

    下一篇: Can you do partial commit in TortoiseGit?