Stack Overflow上存在多个问题,解决了暂存和提交文件中的部分问题.但是,我无法使其发挥作用.
比方说,我们要实现一个虚拟的数学课在PHP(语言无所谓)与像一些基本的方法:add
,subtract
,multiply
和divide.
让我们从类定义开始:
<?php
class Math {
}
?>
Run Code Online (Sandbox Code Playgroud)
现在:
$ git add math.php
$ git commit -m "Create Math class."
Run Code Online (Sandbox Code Playgroud)
在下一步,我们实现这两个add
和subtract
四个方法:
<?php
class Math {
public function add($a, $b) {
return $a + $b;
}
public function subtract($a, $b) {
return $a - $b;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
但是现在我们想要在单独的提交中提交add
和subtract
方法的实现.
这可能吗?
我尝试了什么
$ git add -p
出现以下内容:
我很想将大块头分成小块,所以我按下s
,出现以下内容:
似乎git没有把它分成更小的帅哥.
我们现在尝试手动编辑当前的大块头.所以我按:e
.
打开我的默认文本编辑器(sublime text),在这里我可以编辑hunk:
我试图简单地删除第8,9,10,11行 - 因为我只想暂存该add
功能.我保存,关闭编辑器,但是git说:
Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]?
我真的很喜欢git add -p
和交互式演出,所以也许这是我做错了,或者只是它不可能是我想要的,并且真的希望一些更有经验的git用户有一些指令也许对我来说也是一个解决方案.
谢谢!
Chr*_*ial 13
由于git喜欢命令行,所以这并不像是绝对的"git方式",但这就是我所做的:
Git捆绑在一起git gui
- 您可以通过运行该命令来启动它.在那里,您可以选择未分级的文件,标记要提交的行,然后单击"提交阶段行".如果您希望它的行为更像命令行工具,则可以运行git gui citool
,这会导致ui在您提交时关闭.
请注意,此工具已与git正确集成.你不需要在这个ui中进行提交.您可以暂存相关的行,关闭它,也许再做一些git add
,然后通过命令行提交.
一般来说,我喜欢git命令行界面,即使我不一定是贝壳粉丝,但我会在一段时间之后爱上它.我尝试了多个GUI并将它们全部扔掉,因为它们无法与git命令行界面竞争.但是git add -p
我肯定会说这是GUI的任务.使用部分提交更容易git gui
.复杂的历史浏览也是如此.gitk
(也随git一起提供)在那里做得比一般git log --graph -p
(但只要你真的需要了解树,现在还不是关于历史的状态).
注意:但你似乎仍然做对了一切 - 我尝试过你所做的并且必须同意Ben Jackson.那肯定会奏效.你的编辑必须搞砸了.
最后注意:您似乎正在使用带有标准Windows cmd
终端的git命令行.我强烈建议改用薄荷糖.下载msys版本,将其放在您的Program Files\Git\bin
目录中并运行它(创建快捷方式)mintty -
.这将获得相同的shell,但更好的一切(特别是更好的调整大小和复制和粘贴).