Мне нужен способ экспортировать сохраненные изменения на другой компьютер.
На компьютере1 я сделал
$ git stash save feature
Я пытаюсь получить патч для сохранения в файл, а затем импортировать его на другой компьютер
$ git stash show -p > patch
Эта команда дает мне файл, который я могу переместить на другой компьютер, на котором клонировано это хранилище, но вопрос в том, как снова импортировать его в качестве тайника.
Спасибо
git stash save
настоящее время устарела в пользуgit stash push
Ответы:
Вы можете применить файл патча (без внесения изменений), просто запустив
Затем вы можете просто создать новый тайник из текущего рабочего каталога:
источник
git stash show "stash@{0}" -p > patch
вместо второй команды оболочки OP.stash@{0}
..В качестве альтернативы вы можете создать ветку из вашего тайника (на компьютере 1), используя
зафиксировать ваши изменения:
затем добавьте его в качестве удаленного на компьютере 2:
Теперь вы можете получить удаленную информацию, используя
теперь вы можете импортировать коммит так, как вы хотите; используя git cherry-pick , git rebase или все что угодно ... Если вы хотите, чтобы это выглядело так, как будто вы только что применили git stash ; Вы можете использовать git cherry-pick --no-commit.
Если у вас нет прямой связи между компьютером1 и компьютером2; Вы можете использовать пульт (например, GitHub или что-то подобное):
и на компьютере2:
источник
git stash list --oneline
), Так что вам технически не нужно применять тайник к новому объекту коммитов. Другими словами, создание новой ветки не обязательно. Тем не менее, перенести тайник непосредственно на пульт управления сложно, если не сказать больше.В качестве альтернативы вы можете экспортировать все локальные тайники в другой компьютер следующим образом
git pull
как в старом, так и в новом каталоге git, чтобы последние имели последние изменения.источник
Как сделать экспорт Stash в SourceTree:
Примените свой тайник к нему и сделайте коммит
Нажмите на свой коммит и сделайте из него патч, возьмите файл патча с собой.
Перейдите в другой репозиторий, выберите ту же родительскую ветку, которую вы только что использовали в 1)
Действия / Применить патч, выберите Режим: Изменить файлы рабочей копии, нажмите «Применить патч», теперь у вас есть незафиксированные изменения из патча в текущей рабочей среде.
Сделайте новый Stash для текущего репо
источник
Вы можете создать stash как файл исправления с одного компьютера, а затем поделиться этим файлом исправления с другими компьютерами.
Создание тайника в виде патча
«Stash @ {0}» - это ссылка на stash. Он создаст файл патча с последним тайником. Если вы хотите другую команду
$ git stash list
список, чтобы увидеть список ваших тайников и выбрать, какой из них вы хотите установить.Применение патча
Теперь перенесите этот тайник на другой компьютер и вставьте его в корневую папку вашего проекта. Затем запустите эту команду
Если есть ошибка, и вы хотите отменить изменение
источник
Другой вариант заключается в
rsync
в.git
папку с одного компьютера на другой компьютер.rsync
обрабатывает только изменения файла (быстрее, чем копия).Недостатком этого подхода является то, что конфиги также будут перезаписаны, что может быть нежелательно, если вы запустите разные конфиги .git между двумя компьютерами. Но вы можете преодолеть это, исключив файлы с
--exclude
опцией вrsync
.В целом, я думаю, что нативное решение Git чище, но этот
rsync
хак может быть полезен для спешащих, кто может быть лучше знаком с rsync, чем с git.источник
Команда запуска из исходного поста:
не работал для меня (по какой-то причине он создал непригодные файлы патчей). Вместо этого я должен был:
за каждый тайник я хотел перенести. Затем я поместил репо «родителя» в файл: /// досягаемости репо «ребенка» и сделал следующее для каждой фиксации stash:
Это сложнее, но сделал свое дело для меня.
источник
Если вы хотите перенести изменения с одного компьютера на другой, вы всегда можете зафиксировать изменения на своем компьютере, а затем выполнить программный сброс на их компьютере.
офис
git commit -m "-stash-"
Кухня
git reset --soft HEAD~1
источник
Шкатулка - это специальный коммит слияния рабочего дерева между базовым коммитом и индексом. Одним из способов может быть сохранение каждого из них в виде отдельных исправлений, извлечение первого родителя хранилища, восстановление индекса и рабочего дерева из двух исправлений и, наконец, восстановление хранилища (кажется, что один ответ идет таким образом).
Это необходимо для полного воссоздания всей информации из хранилища, и, если вас это не волнует, вам следует как минимум проверить первого родителя хранилища перед его восстановлением, чтобы избежать конфликтов и отследить, где был создан хранилище.
Это то, что я сделал, чтобы полностью восстановить все тайники из одного репо в другой. Если у вас их нет на одном компьютере, вы можете сохранить теги stash в комплекте после их создания и скопировать список ссылок и пакет на целевой компьютер.
Из корня оригинального репо:
stash_
+ число (и) в логической ссылке на stash)NB: для этого требуется bash или совместимая оболочка (ksh, zsh должен делать ...). Вы также можете увеличить значение переменной, например
stash_$((i++))
если ваша оболочка не поддерживает${param//pattern}
Теперь в новом репо для каждого реф:
источник