我正在以下列方式使用Git存储库:
我即将从Git切换到Mercurial,我想提前知道如何实现这样的目标.
如果我有一堆未提交的更改,并希望在处理其他内容时将其置于一边,然后稍后(几天之后发送)返回到它并继续工作.完成此任务最简单的工作流程是什么?(到目前为止,我只有使用Mercurial的基本功能).我通常的方法是使用clone创建一个新的分支,但可能有更好的方法.
假设我有一个本地和一个远程Mercurial存储库.现在,我开始研究一个功能.我正在努力,当我认为它完成后,我提交变更集.再测试一下,我发现我可以通过调整代码中的内容来进一步改进这个功能.我做出改变并提交.20分钟后,我发现这个新功能有一个错误,所以我修复它并提交它.
我现在有3个变更集,我真的想将其作为一个变更集推送到远程存储库,例如,消息"实现功能X".
如何在没有太多麻烦的情况下做到这一点?我相信我可以用补丁来做,但看起来很多工作.
我正在使用Mercurial,我在当地遇到了一个可怕的混乱,有三个头.我无法推送,我只想删除所有本地更改和提交,然后重新开始使用完全干净的代码和干净的历史记录.
换句话说,我希望最终得到(a)与远程分支的尖端中存在的本地完全相同的代码,以及(b)没有任何本地提交的历史记录.
我知道会hg update -C覆盖任何本地更改.但是如何删除任何本地提交?
要清楚,我没有兴趣保留我在当地完成的任何工作.我只想要最简单的方法来恢复到完全干净的本地结账.
使用时合并冲突的更改时hg merge,Mercurial 会将一组标记插入要在我的工作副本中合并的文件,如下所示:
<<<<<<< local
version = 0.2
=======
version = 0.1
>>>>>>> other
Run Code Online (Sandbox Code Playgroud)
然后我从生成的列表中手动编辑标记为U的所有文件hg resolve --all -l,然后我告诉mercurial我已经解决了它们hg resolve -m file1 file2 file3 ...
在许多情况下,我想接受一些冲突文件的my-only或only-only更改.我想创建两个简单的sed/awk /任何命名的脚本accept-theirs.sh,accept-my.sh或者有没有"正确"的方法来做到这一点?
在Subversion或CVS中处理多个合并到分支上只是必须经历的事情之一.在Mercurial(以及可能是任何其他分布式系统)中跟踪分支和合并非常容易,但我不知道为什么.还有其他人知道吗?
我的问题源于这样一个事实:使用Mercurial你可以采用类似于Subversions/CVSs中央存储库的工作实践,一切都会正常工作.您可以在同一分支上执行多个合并,并且您不需要具有提交编号和标记名称的无数废纸.
我知道最新版本的Subversion能够跟踪合并到分支机构,所以你不会有相同程度的麻烦,但它是一个巨大而重大的开发,并且它仍然不能完成开发团队所做的一切喜欢这样做.
它的运作方式必然存在根本区别.
如何确定给定变更集中更改的所有文件?
在这种情况下,我不是在寻找差异,只是添加/删除/修改列表.
hg log -vprX 做一个差异列表,但我只想要文件.
我一直在使用Mercurial但想要快速演示Git.
什么是Git等价物:
hg init . # start a project in the current directory
hg addremove # look for any added or deleted files
hg commit -m "comment" # commit any uncomitted changes
hg status # what have i changed since the last commit?
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在git中看到传入的提交?
什么是"hg outgoing"或"hg incoming"的git等价物?
在Mercurial中,hg outgoing列出比服务器上的更改集更新的变更集,如果我这样做,将发送hg push.同样反向hg incoming和hg pull.
我已经创建了远程仓库来推动我对ssl的本地更改.我确实hg showconfig --debug找到了我的远程hg路径,但它有点让我知道如何准确地找到它是什么.