在Mercurial中,Peter或我必须采取什么步骤才能恢复回滚版本?

在Mercurial中,Peter或我必须采取什么步骤才能恢复回滚版本?,mercurial,dvcs,Mercurial,Dvcs,简短的问题是:如果我hg rollback,如果Peter从我身上克隆,他如何获得我的回滚版本他或我必须执行或键入的确切步骤是什么? F:\>hg init hgme F:\>cd hgme F:\hgme>echo the code is 7 > code.txt F:\hgme>hg add code.txt F:\hgme>hg commit -m "this is version 1" F:\hgme>cd .. F:\>hg clone

简短的问题是:如果我
hg rollback
,如果Peter从我身上克隆,他如何获得我的回滚版本他或我必须执行或键入的确切步骤是什么?

F:\>hg init hgme
F:\>cd hgme
F:\hgme>echo the code is 7 > code.txt
F:\hgme>hg add code.txt
F:\hgme>hg commit -m "this is version 1"
F:\hgme>cd ..
F:\>hg clone hgme hgpeter
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\>type hgpeter\code.txt
the code is 7
F:\>cd hgme
F:\hgme>notepad code.txt   [now i change 7 to 11]
F:\hgme>hg commit -m "this is version 2"
F:\hgme>cd ..\hgpeter
F:\hgpeter>hg pull
pulling from f:\hgme
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
F:\hgpeter>hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\hgpeter>type code.txt
the code is 11
F:\hgpeter>cd ..\hgme
F:\hgme>hg rollback
rolling back last transaction
F:\hgme>cd ..
F:\>hg clone hgme hgmary
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\>type hgmary\code.txt
the code is 7
F:\>cd hgpeter
F:\hgpeter>hg pull
pulling from f:\hgme
searching for changes
no changes found
F:\hgpeter>type code.txt
the code is 11
这与

详情如下:

在下列步骤之后,Mary有
7
,Peter有
11
。我的存储库是
7
彼得或我必须采取什么具体步骤或键入什么才能让彼得得到7分?

F:\>hg init hgme
F:\>cd hgme
F:\hgme>echo the code is 7 > code.txt
F:\hgme>hg add code.txt
F:\hgme>hg commit -m "this is version 1"
F:\hgme>cd ..
F:\>hg clone hgme hgpeter
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\>type hgpeter\code.txt
the code is 7
F:\>cd hgme
F:\hgme>notepad code.txt   [now i change 7 to 11]
F:\hgme>hg commit -m "this is version 2"
F:\hgme>cd ..\hgpeter
F:\hgpeter>hg pull
pulling from f:\hgme
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
F:\hgpeter>hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\hgpeter>type code.txt
the code is 11
F:\hgpeter>cd ..\hgme
F:\hgme>hg rollback
rolling back last transaction
F:\hgme>cd ..
F:\>hg clone hgme hgmary
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
F:\>type hgmary\code.txt
the code is 7
F:\>cd hgpeter
F:\hgpeter>hg pull
pulling from f:\hgme
searching for changes
no changes found
F:\hgpeter>type code.txt
the code is 11

Peter或我必须执行或键入哪些确切步骤才能使Peter返回7?Peter从我克隆后,应该可以执行一些步骤来获取我存储库的“当前状态”。我不需要敲他的前门告诉他,“嘿,你需要回滚”或其他任何事情。

如果有人已经删除了你的更改(你正在描述的情况),回滚是不合适的

hg
手册:

此命令不可使用 关于公共存储库。一旦改变 可供其他用户拉取, 在本地回滚事务是非常困难的 无效(其他人可能已经 我们已经完成了更改)。此外 一场竞赛是有可能的 储存库;例如,正在进行的 如果 执行回滚

您应该做的是退出变更集,然后告诉Peter退出


如果您坚持回滚,您可以告诉Peter重新克隆存储库,但我不建议这样做。

如果有人已经删除了您的更改(您正在描述的情况),则回滚是不合适的

hg
手册:

此命令不可使用 关于公共存储库。一旦改变 可供其他用户拉取, 在本地回滚事务是非常困难的 无效(其他人可能已经 我们已经完成了更改)。此外 一场竞赛是有可能的 储存库;例如,正在进行的 如果 执行回滚

您应该做的是退出变更集,然后告诉Peter退出


如果您坚持回滚,您可以告诉Peter重新克隆存储库,但我不建议这样做。

是的,这种代码更改场景不应该使用
hg rollback
。它应该使用
hg backout
hg rollback
删除历史记录,但如果

1) 有人从你身边拉走了
2) 或者,你推了

然后你的版本被称为“野外”,有朝一日可以通过添加回你的存储库“回来咬你”。因此,规则是,永远不要使用
hg rollback
,除非您正在回滚存储库中本不应该存在的内容,例如使存储库历史记录非常大的所有编译的目标代码文件,并且您确定没有人拉过,也没有人推过,然后使用
hg rollback
。对于普通版本控制使用,请使用
hg backout

hg backout tip
将备份存储库中的上一个修订版(通过创建新的变更集和历史记录)

参考资料:

处理已提交更改的部分

是的,此代码更改场景不应使用
hg回滚
。它应该使用
hg backout
hg rollback
删除历史记录,但如果

1) 有人从你身边拉走了
2) 或者,你推了

然后你的版本被称为“野外”,有朝一日可以通过添加回你的存储库“回来咬你”。因此,规则是,永远不要使用
hg rollback
,除非您正在回滚存储库中本不应该存在的内容,例如使存储库历史记录非常大的所有编译的目标代码文件,并且您确定没有人拉过,也没有人推过,然后使用
hg rollback
。对于普通版本控制使用,请使用
hg backout

hg backout tip
将备份存储库中的上一个修订版(通过创建新的变更集和历史记录)

参考资料:

处理已提交更改的部分

似乎我应该使用“hg backout-r-1”——也就是说,backout我以前的版本(取消我以前的提交)。。。并创建了一个新版本。因此,不管彼得是否知道,当他进行“hg拉动”和“hg更新”时,无论如何都会得到“回退”。如果他做了更改并且想要提交和推送,hg会告诉他先拉送和更新,这也会得到“退出”。你是对的。回滚是一种撤销,您应该执行回滚,然后peter会将其作为其正常推/拉循环的一部分。我似乎应该使用“hg backout-r-1”--也就是说,回滚我以前的版本(取消我以前的提交)。。。并创建了一个新版本。因此,不管彼得是否知道,当他进行“hg拉动”和“hg更新”时,无论如何都会得到“回退”。如果他做了更改并且想要提交和推送,hg会告诉他先拉送和更新,这也会得到“退出”。你是对的。回滚是一种撤销操作,您应该执行回滚,然后peter会将其作为其正常推/拉循环的一部分