Как сохранить изменения между локальным репозиторием и удаленным репозиторием

Я хочу сохранить все изменения между локальным репозиторием и удаленным источником/мастером. Есть некоторые коммиты, сделанные в локальном репозитории, в то же время некоторые другие изменения, сделанные в удаленном репозитории.

  • Я хочу спрятать различия между локальными и удаленными.
  • сбросить все локальные коммиты
  • синхронизировать локальный репозиторий с удаленным.
  • применить изменения моего тайника.

Как я могу этого достичь с помощью команды git?

2 ответов


я хочу сохранить все изменения между локальным репозиторием и удаленным источником/мастером.

"тайник" имеет особое значение в Git, git stash ставит незафиксированные изменения в специальной фиксации для поиска позже. Он используется, когда у вас есть какая-то работа, которая не готова к фиксации, но вам нужно что-то сделать с репозиторием, например, проверить другую ветку или нажать или потянуть. Для остальной части этого ответа я буду использовать "stash" для имею в виду git stash.

есть некоторые коммиты, сделанные в локальном репозитории, в то же время некоторые другие изменения, сделанные в удаленном репозитории.

это нормальная ситуация.

я хочу спрятать различия между локальными и удаленными. Отбросьте все локальные коммиты

эти шаги не нужны. Git может позаботиться об этом. Увидеть ниже.

принесите локальный репозиторий в синхронизация с пультом дистанционного управления.

вы получаете актуальную версию удаленного репозитория с помощью git fetch origin (предполагая, что пульт называется origin). Это безопасно и не будет изменять локальные ветви.

применить изменения моего тайника.

нет необходимости перемещать локальный commits С дороги. Git может объединить вашу локальную работу с пультами ДУ. Однако если у вас есть незафиксированные работы ты захочешь спрячь его. git stash save будет белка вашей незафиксированной работы на потом.

после получения вы можете git merge origin/master чтобы объединить вашу работу с пультом дистанционного управления или git rebase origin/master чтобы поместить все ваши изменения поверх пульта дистанционного управления.

вы можете выполнить выборку и слияние / rebase в одной команде. Для извлечения и слияния используйте git pull origin master. Для выборки и перебазирования используйте git pull --rebase origin master.

теперь, когда вы в курсе, вы можете git stash pop для восстановления сохраненных изменений.

git pull --rebase - это обычным способом вы должны уточнять в местных отделениях, с работе пульта. Много слияния, которое ничего, кроме обновления пульта, приведет к запутанной истории, перебазирование сохраняет все хорошее и линейное. Вам не нужно говорить ему пульт и ветку, Git обычно может понять это для вас. Обычный рабочий процесс выглядит так.

  • git stash save если у вас есть незафиксированные работы.
  • git pull --rebase для получения обновлений с пульта ДУ и применения их!--62-->
  • git stash pop восстановить несохраненные работы.

git stash будет хранить ваши изменения в грязном рабочем каталоге

git stash pop удалите одно скрытое состояние из списка и примените его поверх текущего состояния рабочего дерева.

git diff master покажет различия.

чтобы увидеть больше вариантов тайника:git stash --help

редактировать

изменить для вашего пересмотренного вопроса:

  1. я хочу спрятать различия между местными и дистанционный.

  2. отбросить все локальные коммиты

  3. синхронизировать локальный репозиторий с удаленным.

  4. применить изменения моего тайника.

прежде всего, номер 2 будет конфликтовать с номером 4. Поэтому я объясню, как обновить с помощью remote, спрятав:

спрячь свои изменения. Это позволит удалить их из текущего рабочего каталога. git stash

тянуть ваши изменения из удаленного git pull origin <branch>

поп ваши изменения обратно. git stash pop

примечание. Я рекомендую установить инструмент слияния для этого случая, когда вы запускаете для слияния конфликтов. Я предпочитаю P4Merge. Если вы получаете конфликты слияния: git mergetool

если вы хотите знать, как сделать это индивидуально:

  1. я хочу спрятать различия между локальным и удаленным. git stash

  2. сбросить все местные совершает Я просто делаю git stash и забудь о моей заначке. Я не знаю, предпочтительнее это или нет. Я думаю, вы можете "бросить" свою сдачу, Если вам нужно.

  3. синхронизировать локальный репозиторий с удаленным. git stash git pull origin <branch> git stash pop'

  4. применить изменения моего тайника. Если вы хотите сохранить свой тайник в списке тайников: git stash apply если вы хотите удалить stash из списка stash: git stash pop

и ваш весь набор. Надеюсь, это поможет