git - 我可以使用 SVN 或 Mercurial 只提交部分代码吗?

标签 git svn version-control mercurial tortoisesvn

我通常使用 Tortoise SVN,但我一直在研究 Mercurial,因为它是一个分布式版本控制系统。

在这两个系统中,我正在寻找的是一种工具,可以让我只选择文件的一部分并提交它们。如果我现在想这样做,我必须将文件复制到一个临时版本,并只保留我想在当前版本中提交的更改,然后在提交后再次将临时版本复制到当前版本。这真是太麻烦了,程序应该能够为我做这件事。

我听说 Git 支持这个,请告诉我这是否正确。

最佳答案

Mercurial 可以用 record 做到这一点扩展名。

它会提示您输入每个文件和每个 diff hunk。例如:

% 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 队列)将存储库中的各个更改分成补丁更容易。还有一种 MQ 记录变体 (qrecord)。

更新:也试试 crecord扩展,它为大块/行选择提供了一个 curses 接口(interface)。

crecord screenshot

关于git - 我可以使用 SVN 或 Mercurial 只提交部分代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149198/

相关文章:

linux - SVN 更新 Crontab Linux

git - Excel-VBA代码的版本控制系统

git - ssh 配置不工作。权限被拒绝(公钥)

Git pull 直到某个提交(标记)

git - 在 Visual Studio 中禁用 git 的 pull 按钮

git - hg 到 git 的转换和 subrepo merge

git - 使用 git 从谷歌代码克隆一个颠覆项目

git - 为什么 git rm --cached my_dir/* 删除本地文件?

svn - 配置注释 Intellij 命令以进行 SVN 集成

svn - 如何将SVN服务器从1.6升级到1.7