我经常在补丁模式下使用git add --interactive
来尝试不同的工作和非工作事务来创建多个提交(关于工作事项的非工作和有效代码的评论)。为了创建这些提交,我会多次交互地浏览补丁集,并且有一些我想要删除的补丁,即既不添加当前提交也不添加到以下提交之一。如果我必须花费很多时间来完成补丁,我总是必须决定将补丁保留下来,而不是让它消失一次就像我对git reset --hard HEAD -- [path]
的文件一样。< / p>
有没有办法实现这种优化?
示例:
> git add --interactive --patch
diff --git a/file b/file
index 3652a25..296f68d 100644
--- a/file
+++ b/file
@@ -1,5 +1,7 @@
abc
-def
+123
ghi
+
+456
Stage this hunk [y,n,q,a,d,/,s,e,?]? s
Split into 2 hunks.
@@ -1,5 +1,5 @@
abc
-def
+123
ghi
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? n
@@ -4,2 +4,4 @@
ghi
+
+456
在此,我不希望在def
的任何进一步调用中看到123
替换为git add --interactive
,并且能够添加,跳过和拆分所有其他补丁为预期
答案 0 :(得分:1)
使用git checkout -p [file]
:
与git add -p
非常相似,它将以交互模式运行,如果您想保留原样或者还原它,请询问[file]
上的每个差异块。