Git:提交部分更改

标签 git

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

假设我们想使用一些基本方法在 php 中实现一个虚拟数学类(语言无关紧要):addsubtract乘法除法。

让我们从类定义开始:

<?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

出现以下内容:

enter image description here

我想把大块分割成更小的 block ,所以我按 s,出现以下内容:

enter image description here

似乎 git 并没有把它分成更小的 block 。

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

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

enter image description here

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

您编辑的 hunk 不适用。再次编辑(说“不”丢弃!)[y/n]?

我对 git add -p 和交互式暂存真的很陌生,所以也许这是我做错了什么,或者根本不可能是我想要的,真的希望一些更有经验的 git 用户有一些说明也可能是我的解决方案。

谢谢!

最佳答案

您所做的与我过去所做的完全一样,我什至在 UNIX 机器上重新创建了您的整个实验,并且它按预期工作。

我怀疑您的编辑器在保存时更改了 diff hunk 中的行尾。

关于Git:提交部分更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134656/

相关文章:

git stash 和 edited hunks

git - git pull 后如何解决冲突?

git - 为什么我不能用 git push origin :branchname? 删除远程 git 分支

git - 如何将 "develop"分支推送到远程 "origin"?

git - 解决我们删除的 git rebase

linux - git否定排除 stash 文件的 stash 目录

python - 如何设置 Git 以将 python 应用程序文件部署到 Ubuntu Server 中?

git 命令行选项接受默认提交消息

Git Difftool Meld 在 Babun 中不起作用

windows - puppet 特工: provider git is not functional on this host