Как сохранить изменения между локальным репозиторием и удаленным репозиторием
Я хочу сохранить все изменения между локальным репозиторием и удаленным источником/мастером. Есть некоторые коммиты, сделанные в локальном репозитории, в то же время некоторые другие изменения, сделанные в удаленном репозитории.
- Я хочу спрятать различия между локальными и удаленными.
- сбросить все локальные коммиты
- синхронизировать локальный репозиторий с удаленным.
- применить изменения моего тайника.
Как я могу этого достичь с помощью команды 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
редактировать
изменить для вашего пересмотренного вопроса:
я хочу спрятать различия между местными и дистанционный.
отбросить все локальные коммиты
синхронизировать локальный репозиторий с удаленным.
применить изменения моего тайника.
прежде всего, номер 2 будет конфликтовать с номером 4. Поэтому я объясню, как обновить с помощью remote, спрятав:
спрячь свои изменения. Это позволит удалить их из текущего рабочего каталога.
git stash
тянуть ваши изменения из удаленного
git pull origin <branch>
поп ваши изменения обратно.
git stash pop
примечание. Я рекомендую установить инструмент слияния для этого случая, когда вы запускаете для слияния конфликтов. Я предпочитаю P4Merge. Если вы получаете конфликты слияния:
git mergetool
если вы хотите знать, как сделать это индивидуально:
я хочу спрятать различия между локальным и удаленным.
git stash
сбросить все местные совершает Я просто делаю
git stash
и забудь о моей заначке. Я не знаю, предпочтительнее это или нет. Я думаю, вы можете "бросить" свою сдачу, Если вам нужно.синхронизировать локальный репозиторий с удаленным.
git stash
git pull origin <branch>
git stash pop'применить изменения моего тайника. Если вы хотите сохранить свой тайник в списке тайников:
git stash apply
если вы хотите удалить stash из списка stash:git stash pop
и ваш весь набор. Надеюсь, это поможет