0

请帮忙。

我总是难以将更改推送到修订号较新的现有远程存储库。即,在我最后一次拉动之后,有人推到了那个存储库。

我正在使用ubuntu 14.04, and netbeansand mercurialand meldand 我的项目是一个使用 laravel 框架的 php 应用程序。

我目前的解决方案是,

  1. 备份我的本地存储库;
  2. 然后,在我的第一个本地存储库中,强制更新tip标签;
  3. 使用第一个本地存储库获取远程存储库中的最新版本;
  4. 拉取远程存储库中的最新版本(我不知道 fetch 和 pull 之间的区别,如果有人能解释一下,我将不胜感激);
  5. 开放融合;比较两个存储库目录(第一个本地存储库和备份);然后记住哪些文件不同;
  6. 在netbeans中,在两个目录中的每个不同的文件中应用alt++ (格式shiftf,这样我就可以删除不必要的空格,并且我可以很容易地看到更改(当我在meld中再次比较两个目录时)具有适当的缩进和更清晰的换行符;
  7. 然后,打开 meld,再次比较两个存储库目录,这一次,我现在可以很容易地理解所做的更改;
  8. 对每个存储库应用必要的更改,直到它们彼此相等(在此步骤中您必须非常小心,因为它已经是您的备份正在被修改);
  9. 提交第一个本地存储库的更改。tip等于远程存储库中的最新版本;
  10. 然后,推送提交的更改。

我不想继续使用这个解决方案,因为它还要求您有第二个备份存储库(换句话说,存储容量问题)。请帮我找到另一个解决方案。

如果我做所有不同的事情,例如,首先,从远程存储库中提取最新的更改(由我的同事):我收到一个错误:

abort: outstanding uncommitted changes

如果我先推:错误是:

abort: push creates new remote heads on branch 'default'!
(did you forget to merge? use push -f to force)

然后有时,如果我使用终端拉,它需要我合并。当您无法控制首先要合并哪些文件时,在终端中合并非常困难(终端按字母顺序为每个更改的文件打开融合比较工具),

有时您必须先将“格式”应用于每个文件,以便轻松了解所执行更改的目标。

但是如果您退出合并,它将假定您已成功合并文件(或没有?CMIIW。)

4

1 回答 1

4

简而言之,Mercurial 已经为您提供了提示。您可以随时提取远程更改。但是,如果您的工作目录中有未提交的更改,则不能将它们与您的更改合并。

所以只需提交这些(或搁置它们,如果你还没有完成),进行合并,解决任何冲突,然后提交合并。然后您可以将所有内容推送到远程服务器。

于 2015-02-26T23:40:00.890 回答