1 mercurial中, 和git一样是区分working tree和repo的。repo中就是历史版本的“数据库”, mercurial中你要是pull的话, 只是拉去对方的repo,而当前working tree根本不涉及, 所以无论你working tree处于什么状态, 都所谓。
但是你要将repo中的某个版本刷新到working tree中,这时候mercurial会提醒你,如果Work tree中有改动。 这时候你可以有各种选择,比如强制刷新,比如shelve(把改动暂存起来,刷新后有必要的话手动在恢复出来)或者放弃等。重要的是,所有的选择产生的结果都符合你的直觉,不会说把你的某个提交搞得隐藏起来,让你都不知道。
2 你要是用git checkout的话,没问题;你要是用git reset的话, 你自己看一下log,不就知道效果了?reflog是没有丢,但你能在改动历史中看到吗?
【 在 DoorWay (DoorWay) 的大作中提到: 】
: 29楼我真诚问了俩问题,可否解答下:
: “我特么就是同步一下仓库,怎么还把我的当前源代码给改了” -- 你说的那个软件,是如何维持的? 比如如果本地有修改,分commit / 没commit两种状态。怎么做到不改本地源码的。
: 还有游走版本时,会丢reflog吗?我一直不会丢呢,都是非常放心的reset --hard. 你这搞得我犹豫了。
: ...................
--
FROM 120.244.225.*