【发布时间】:2014-07-10 23:52:28
【问题描述】:
我一直在努力掌握如何与 Mercurial 合作以跟踪对我的本地 Galaxy 实例所做的更改。在投入生产之前,我有一个测试服务器(本地笔记本电脑)和一个开发服务器(集群)来测试东西。我首先从 dev 推送到 bitbucket 存储库,然后从 bitbucket 拉到我的测试服务器。现在我正试图让事情朝着另一个方向发展。 我已经使用 Eclipse Mercurial 插件从 test 推送到 bb。现在我从 dev 尝试以下操作:
hg pull
hg update
hg resolve --all
emacs .hgignore
hg resolve -m .hgignore
hg commit -m 'Helpful and informative message'
我认为这会将我在测试中所做的更改与我在开发服务器上的当前工作目录合并。我从开发端开始工作,但很明显,开发端的一些文件被更新完全覆盖了。我惊慌失措并试图摆脱它:
hg heads
hg rollback
hg incoming
hg heads
hg status
hg incoming
hg pull
我真的不知道在这种情况下该怎么做,因为我不想以这样的方式剥离或退出拉取,这样它就会被记录或删除我在测试服务器上所做的所有辛勤工作当我从 dev 推到 bb 时。我再次尝试拉动:
hg update -C bf3924ee142c
#Revert to a clean copy of my last working code
146 files updated, 0 files merged, 0 files removed, 0 files unresolved
less job_conf.xml
#This is my most recent local copy and it looks correct
hg merge 6dc34fa
abort: nothing to merge (use 'hg update' or check 'hg heads')
hg update 6dc34fa
201 files updated, 0 files merged, 15 files removed, 0 files unresolved
less job_conf.xml
#Entirely replaced by the remote copy
它重现了相同的行为,我的本地副本完全丢失了。我尝试从我的测试服务器上删除该文件并推送到 bb,然后拉到 dev,但该文件在 dev 中被完全删除。 这个 job_conf.xml 文件必须在每次安装软件时设置不同,所以我在测试服务器上设置它时更改了文件。我可能已经删除了它,然后从 job_conf.xml.sample 文件中复制了它(将其重命名为 job_conf.xml)——我不确定这是否会搞砸。
感谢您对此行为的任何建议/启发!
【问题讨论】:
-
我注意到您的第一部分命令中没有
hg merge。这是剪切和粘贴错误吗?hg heads在hg pull之后的输出是什么?此时你应该(至少)有两个头。6dc34fa是什么?根据上面的输出,它似乎不是一个单独的头。 -
不是错字-我当时没有进行合并(我认为它说在我拉出后更新)。我不记得当时 hg head 的输出是什么,但现在看起来我只有一个。 6dc34fa 是 BB 提示之前的变更集 - 在我从跟踪中删除文件之前。
-
你拉的时候有没有修改过文件?我不明白你为什么要执行
hg resolve命令。通常只有在合并发生冲突时才会这样做。 -
确实,我的 .hgignore 文件确实有冲突(我的 bb 和 dev 不同)。
标签: mercurial