Как правильно отправить репозиторий с более новым номером версии?

Пожалуйста помоги.

У меня всегда возникают трудности с отправкой моих изменений в существующий удаленный репозиторий, где номер версии новее. т. е. кто-то отправил в этот репозиторий после того, как я в последний раз вытащил.

Я использую ubuntu 14.04, и netbeans, и mercurial, и meld, и мой проект представляет собой приложение php, использующее структуру laravel.

мое текущее решение,

  1. сделать резервную копию моего локального репозитория;
  2. затем в моем первом локальном репозитории принудительно обновите тег tip;
  3. получить последнюю версию в удаленном репозитории, используя первый локальный репозиторий;
  4. вытащить последнюю версию в удаленный репозиторий (я не знаю разницы между fetch и pull, если кто-то может пролить свет, я определенно был бы признателен);
  5. открытый сплав; сравнить два каталога репозитория (первый локальный репозиторий и резервную копию); тогда помните, какие файлы отличаются;
  6. в netbeans примените alt+shift+f (формат) в каждом из файлов, которые различаются, в обоих каталогах, чтобы я мог удалить ненужные пробелы, и я мог легко увидеть изменения (когда я снова сравниваю два каталога в объединении) с правильными отступами и более четкими разрывами строк;
  7. затем откройте объединение, снова сравните два каталога репозитория, и на этот раз я теперь мог легко понять выполненные изменения;
  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.)


person migs    schedule 26.02.2015    source источник
comment
mercurial.selenic.com/wiki/ также известный как. РТФМ ;)   -  person DanMan    schedule 27.02.2015


Ответы (1)


Короче говоря, Mercurial уже дает вам подсказку. Вы можете получить удаленные изменения в любое время. Но вы не можете объединить их со своими изменениями, если в вашем рабочем каталоге есть незафиксированные изменения.

Так что просто зафиксируйте их (или отложите, если вы еще не закончили), выполните слияние, разрешите все конфликты и зафиксируйте слияние. Затем вы можете отправить все на удаленный сервер.

person DanMan    schedule 26.02.2015