Hel*_*iro 70 git merge mercurial dvcs
我是一个试图使用Mercurial的Git用户.
这是发生了什么:我做了hg backout一个我想要恢复的变更集.这创造了一个新头,所以hg指示我合并(回到"默认",我假设).合并后,它告诉我,我仍然必须承诺.然后我注意到在解决合并中的冲突时我做错了什么,并且我决定要像以前一样拥有所有内容hg backout,也就是说,我希望这个未经注册的合并消失.在Git上,这个未提及的东西将在索引中,我只是做了一个git reset --hard HEAD擦除它,但从我读过的,Mercurial上不存在索引.那我该怎么退出呢?
Ry4*_*ase 88
如果你还没有提交,听起来你没有,你可以撤消所有的合并工作hg update --clean.
但是,在较新的mercurial中,有一个方便的命令来重新合并单个文件:hg resolve path/to/file.ext.来自hg help resolve:
Run Code Online (Sandbox Code Playgroud)The available actions are: ... 4) discard your current attempt(s) at resolving conflicts and从头开始重新启动合并:"hg resolve file ..."(或所有未解析文件的"-a")
sbl*_*lom 21
这很接近:
hg update --clean
bin*_*nki 11
Hg Manual的GitConcepts页面解释了如何git在Mercurial中熟悉用户熟悉的许多操作.
Mercurial没有任何内置git reset --hard行为.但是,strip扩展提供了一个strip命令.要使用,首先strip在您的~/.hgrc文件中启用 ::
[extensions]
strip =
Run Code Online (Sandbox Code Playgroud)
注意:此扩展名为Mercurial-2.8中的新增功能.先前版本strip在mq扩展中提供了命令.
现在您可以运行类似hg strip甚至是命令hg help strip.要删除变更集及其所有子项,只需将changeset指定为参数即可hg strip.例如,要删除刚刚进行的上一次提交(在使用导致hg rollback报告不再有任何事务要回滚的命令之后),可以删除tip修订.每次运行此命令时,都将删除另一个修订.hg strip的行为应该被认为是不可逆转的; 不熟悉的用户在使用之前应该备份他们的存储库.
$ hg strip tip
Run Code Online (Sandbox Code Playgroud)
例如,使用revsets语法,我表示我想删除我的任何提交,这导致在我运行时显示额外的头hg heads.如果您在下面的表达式中指定特定修订tip版本,则将修剪当前分支中不是所选修订版本祖先的所有内容.这似乎与我发出命令时所需的行为最接近git reset --hard HEAD.
$ hg strip "branch(tip) and not(ancestors(tip)::tip)"
Run Code Online (Sandbox Code Playgroud)
从git,命令:
git reset --hard # reset to last commit
git clean -df # delete untracked files
Run Code Online (Sandbox Code Playgroud)
等于
hg update --clean # reset to last commit
hg purge # delete untracked files
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52364 次 |
| 最近记录: |