我可以承诺只有部分我的代码使用SVN或刺客?
-
02-07-2019 - |
题
我用龟SVN通,但我已经找到善变的,因为它是一个分布式修改控制系统。
我正在寻找,在这两种系统,是一个工具,让我选择只有部分的一个文件,并提交他们。如果我现在要做到这一点,我有以复制到一个临时版本的文件,只保留改变我的想要承诺在目前的版本,然后再复制的临时版本的当前版本之后再次犯。它只是这样一个麻烦和程序应该能够做到这对我来说。
我听说Git支持这一点,请让我知道如果这是正确的。
解决方案
Mercurial可以使用记录扩展程序执行此操作。
它会提示您输入每个文件和每个差异。例如:
% hg record
diff --git a/prelim.tex b/prelim.tex
2 hunks, 4 lines changed
examine changes to 'prelim.tex'? [Ynsfdaq?]
@@ -12,7 +12,7 @@
\setmonofont[Scale=0.88]{Consolas}
% missing from xunicode.sty
\DeclareUTFcomposite[\UTFencname]{x00ED}{\'}{\i}
-\else
+\else foo
\usepackage[pdftex]{graphicx}
\fi
record this change to 'prelim.tex'? [Ynsfdaq?]
@@ -1281,3 +1281,5 @@
%% Local variables:
%% mode: latex
%% End:
+
+foo
\ No newline at end of file
record this change to 'prelim.tex'? [Ynsfdaq?] n
Waiting for Emacs...
提交后,剩下的差异将留下:
% hg di
diff --git a/prelim.tex b/prelim.tex
--- a/prelim.tex
+++ b/prelim.tex
@@ -1281,3 +1281,5 @@
%% Local variables:
%% mode: latex
%% End:
+
+foo
\ No newline at end of file
或者,您可能会发现使用MQ(Mercurial Queues)将存储库中的各个更改分成补丁更容易。还有一个MQ变体记录(qrecord)。
更新:还可以尝试 crecord 扩展程序,它为hunk / line选择提供了curses接口。
其他提示
是的,git允许你这样做。 git add
命令有一个 -p
(或 - patch
)选项,允许您逐个检查您的更改,选择哪个阶段(你也可以改善帅哥或编辑补丁)。您还可以使用交互模式进行git-add( git add -i
)并使用“p”。选项。
这是一个关于交互式添加的截屏视频,它还演示了 git add的补丁功能代码>
查看TortoiseHG,它将进行大块选择,并允许您对不同的提交对一个文件进行不同的更改。
它甚至允许您对一些文件提交所有更改,并在一次提交中对其他文件进行部分更改。
我问一个 类似的问题 只是一个小时前得到的答复的使用 hgshelve扩展 正是我寻找的。
你做之前提交,你可以把变化是从不同的文件(或帅哥的变化在一个文件)的"架子",然后提交你想要的东西。然后你可以取消搁置的变化,你没有承诺和继续工作。
我已经使用了过去几天和喜欢它了。很容易想象和使用。
Mercurial现在为 commit
命令提供了一个选项 - interactive
(或 -i
),它可以直接启用此功能。框。
这直接来自命令行,所以如果你是一个命令行发烧友,它是完美的!
运行
> hg commit -i
开始一个交互式会话,允许检查,编辑和记录各个更改以创建提交。
此行为与 git add
和 git commit
- patch
和 - interactive
选项非常相似代码>命令。
我建议不要这样工作。
如果您需要进行一组更改,请设置A已准备好进行检查并设置尚未准备好的B,您如何确定只检查A组不会破坏您的构建/测试?你可能会错过一些行,忘记不同文件中的行,或者没有意识到A对B的依赖性打破了其他人的构建。
您的提交应该是谨慎的原子更改,不会破坏您团队中或其他的构建。如果你正在部分提交一个文件,你就会大大增加你为其他人打破构建的机会而不知道它,直到你有一些不快乐的同事敲门。
最大的问题是,为什么你觉得有必要以这种方式工作?