我刚刚从远程克隆了一个回购。本地提交后的差异
我构建的软件,更改了约4个文件,承诺他们在本地,现在想创建一个补丁,我可以显示他们。
当我运行:
hg diff -U8p abc efg pqr > patch_file
我没有看到我所做的更改。 hg diff
只会将当前文件与上次提交的文件进行比较吗?
我如何得到这个工作?
我刚刚从远程克隆了一个回购。本地提交后的差异
我构建的软件,更改了约4个文件,承诺他们在本地,现在想创建一个补丁,我可以显示他们。
当我运行:
hg diff -U8p abc efg pqr > patch_file
我没有看到我所做的更改。 hg diff
只会将当前文件与上次提交的文件进行比较吗?
我如何得到这个工作?
要diff
针对特定版本REV
工作目录,使用
hg diff -r REV
要互相比较两个版本,使用
hg diff -r REV1 -r REV2
要弄清楚哪些修订比较,检查hg log
的输出。如果你会做这个有很多和基础版本是固定的,给它一个名称(例如,whatipulled)与
hg tag -r REV whatipulled
然后,您可以指定whatipulled
作为修订,而不是数字转速ID (或散列)。
要导出的diff更丰富的格式,包括提交评论等,你还可以使用其目的是为了这个目的如下:
hg export -r REV
还有hg bundle -r REV
,其产生的二进制文件具有类似的信息。
但是,如果你发送更改回母公司回购,最好的方法是使用hg push
。它将您的变更集直接传达给家长;你甚至不需要知道哪些变更需要推送。当然,你必须有权推到父母回购。
hg push [ parent_repo_url ]
(如果你很拽,善变应该已经知道的路径,你可以离开它)。
如果父回购是在bitbucket上,并且您没有pu,则可以在bitbucket上设置您自己的帐户,从本地回购库中拉出/推送该帐户,然后发出“拉请求”给项目回购,要求他们从你那里拉。
以上所有都有控制其行为的选项,请参阅。
默认情况下,hg diff
将当前检出的文件与上次提交进行比较。您可以通过添加选项更改此:
-r REV
当前签出的文件与特定修订REV
进行比较。-c REV
显示了修订版本的情况下做出REV
所以变化hg diff -c 123 ...
会给你的差异。如果只指定一个版本,那么提交123
如果我需要将它与最初克隆的回购进行比较,该怎么办?我做了任何改变之前的一个。该版本的“REV”是什么? – batman 2013-02-24 12:50:59
从hg help diff
该修订版与工作目录
在diff的-r中,必须先使用旧的提示(最新的“不是你的”变更集),并在差异化之前更新到提示(最新的变更集)。
如果一些二进制数据是在您的变更修改,不要忘记使用-g选项
hg up & hg diff -r <CSET> -g > some.patch
改进DIFF任何主动变更,没有手的工作检测基地变更(线性在单分支历史==)
hg diff -r "parent(min(outgoing()))" -r tip
我的猜测是,hg outgoing
是你想要什么 - 它比较您在本地有犯了什么默认远程服务器上有什么,并向您显示这些更改集的列表或-p
提交。
但是,这样做会分别显示每个变更集。如果你想看到所有组合的变化,你必须做hg diff -r HERE -r THERE
或因为-r HERE
是默认的,hg diff -r THERE
我看到你问了注释“我怎么知道有什么”,其中其中是最后一个远程变更集,您可以通过执行hg outgoing
来获得答案。如果hg outgoing
显示它会发送变更集66,67和68,那么您想要做hg diff -r 65
来比较已有的(65)和本地的(68)。
使用revset(直接在diff中)会更聪明。在线性历史记录的情况下,revset将为“父(min(outgoing()))” – 2013-02-24 20:10:48
良好的呼叫。你应该改变你的答案。 – 2013-02-25 03:40:20
为什么不使用捆绑,如果双方是水银,而不是差异? – 2013-02-24 14:20:25
@LazyBadger:我不知道这一点。是的我可以。但是他们的网站提到了这种方法 – batman 2013-02-24 16:31:27