Stack Overflow 上有多个问题解决暂存和仅提交文件部分的问题。但是,我无法让它工作。
假设我们想使用一些基本方法在 php 中实现一个虚拟数学类(语言无关紧要):add
、subtract
、乘法
和除法。
让我们从类定义开始:
<?php
class Math {
}
?>
现在:
$ git add math.php
$ git commit -m "Create Math class."
下一步我们实现add
和subtract
四个方法:
<?php
class Math {
public function add($a, $b) {
return $a + $b;
}
public function subtract($a, $b) {
return $a - $b;
}
}
?>
但现在我们想在单独的提交中提交 add
和 subtract
方法的实现。
这可能吗?
我尝试过的
$ git add -p
出现以下内容:
我想把大块分割成更小的 block ,所以我按 s
,出现以下内容:
似乎 git 并没有把它分成更小的 block 。
现在让我们尝试手动编辑当前的大块头。所以我按:e
。
我的默认文本编辑器(sublime text)打开了,在这里我可以编辑大块:
我尝试简单地删除第 8、9、10、11 行 - 因为我只想暂存 add
函数。
我保存,关闭编辑器,但是 git 说:
您编辑的 hunk 不适用。再次编辑(说“不”丢弃!)[y/n]?
我对 git add -p
和交互式暂存真的很陌生,所以也许这是我做错了什么,或者根本不可能是我想要的,真的希望一些更有经验的 git 用户有一些说明也可能是我的解决方案。
谢谢!
最佳答案
您所做的与我过去所做的完全一样,我什至在 UNIX 机器上重新创建了您的整个实验,并且它按预期工作。
我怀疑您的编辑器在保存时更改了 diff hunk 中的行尾。
关于Git:提交部分更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134656/