我最近发现了git 命令的patch选项add,我必须说它真的是一个很棒的功能.我还发现通过s按键可以将大块子分成较小的块,这增加了提交的精度.但如果我想要更精确,如果分裂的大块不够小怎么办?
例如,考虑这已经拆分的大块头:
@@ -34,12 +34,7 @@
width: 440px;
}
-/*#field_teacher_id {
- display: block;
-} */
-
-form.table-form #field_teacher + label,
-form.table-form #field_producer_distributor + label {
+#user-register form.table-form .field-type-checkbox label {
width: 300px;
}
Run Code Online (Sandbox Code Playgroud)
如何仅将CSS注释删除添加到下一次提交?该s选项不再可用!
我可以使用git有多个临时区域或达到类似的效果吗?
我的典型工作流程如下:
git add -p,y,ygit reset HEAD .git add -p,n,n,y,q,git commit -m "style changes"git add -p ..提交实际的东西有时我会从一大堆变化中做出20个较小的提交.它可以节省我一天的时间,如果我可以运行像这样的补丁git add -p,然后将每个补丁"发送"到它自己的暂存区域并分别提交每个区域.
我有一个文件,我一直在努力,然后意识到我在我工作的几行上面有一个错误.我很快就修正了这个错误,并且在我完成剩下的工作之前想要提交它.太好了,这就是git add --patch的用武之地!
除此之外,我只会看到一个包含两个变化的大块头.是否有可能手动告诉git我想要两个帅哥?
当我git diff在C#文件上使用时,我看到这样的东西:
diff --git a/foo.cs b/foo.cs
index ff61664..dd8a3e3 100644
--- a/foo.cs
+++ b/foo.cs
@@ -15,6 +15,7 @@ static void Main(string[] args)
string name = Console.ReadLine();
}
Console.WriteLine("Hello {0}!", name);
+ Console.WriteLine("Goodbye");
}
}
}
Run Code Online (Sandbox Code Playgroud)
hunk标题行包含当前方法(static void Main(string[] args))的第一行,这很好.然而,它似乎并不是非常可靠......我看到很多情况它不起作用.
所以我想知道,这段摘录是从哪里来的?是否git diff以某种方式识别语言的语法?有没有办法定制它?
我在阅读一些git文档时正在寻找"hunk"的定义.
我知道这意味着描述两个文件之间的区别,并且它有一个定义良好的格式,但我无法想到一个简洁的定义.
我尝试用谷歌搜索,但有很多有点虚假的点击.
使用时git add -p,可以选择对文件进行更改以进行分段.
可以手动更改块大小(我可以修改git-add的块大小吗?),但我想知道如何更改默认的块大小(例如更改为单行).
在从快照计算变更集时,Git并不总是正确选择块边界.git diff有一个--diff-algorithm选项允许在这方面进行一些调整; git diff --minimal有时比git diff单独给出更好的结果.
有没有办法获得相同的优化变更集布局git add -p(基本上以diff交互方式显示帅哥)?它似乎不允许这个--diff-algorithm选项.