Экспорт тайника на другой компьютер - PullRequest
260 голосов
/ 20 октября 2010

Мне нужен способ экспорта сохраненных изменений на другой компьютер.

На компьютере1 я сделал

$ git stash save feature

Я пытаюсь получить патч для сохранения в файл, а затем импортировать его на другой компьютер

$ git stash show -p > patch

Эта команда дает мне файл, который я могу переместить на другой компьютер, на котором клонировано это хранилище, но вопрос в том, как снова импортировать его в качестве тайника.

Спасибо

Ответы [ 7 ]

262 голосов
/ 20 октября 2010

Вы можете применить файл исправления (пока не фиксируя изменения), просто запустив

git apply patchfile

Затем вы можете просто создать новый тайник из текущего рабочего каталога:

git stash
15 голосов
/ 04 января 2016

в качестве альтернативы вы можете создать ветку из вашего тайника (на компьютере 1), используя

git stash branch stashed_changes_branch

зафиксируйте ваши изменения:

git commit -a

затем добавьте его в качестве удаленного на компьютер 2:

git remote add pc1 user@computer1:/path/to/repo

теперь вы можете получить удаленную информацию, используя

git fetch pc1

теперь вы можете импортировать коммит так, как вы хотите; используя git cherry-pick , git rebase или что угодно ... Если вы хотите, чтобы это выглядело так, как будто вы только что сделали git stash apply ; Вы можете использовать git cherry-pick --no-commit.


Если у вас нет прямой связи между компьютером1 и компьютером2; Вы можете использовать пульт (например, GitHub или что-то подобное):

git push origin stashed_changes_branch

и на компьютере2:

git fetch
10 голосов
/ 08 апреля 2016

В качестве альтернативы вы можете экспортировать все локальные хранилища в другой компьютер следующим образом:

  • git pull как в старом, так и в новом каталоге git, чтобы обеспечить наличие последних изменений обоих.скопировать папку .git из старого каталога git в новый репозиторий
3 голосов
/ 18 июля 2017

Другой вариант - rsync папка .git с одного компьютера на другой.rsync обрабатывает только изменения файла (быстрее, чем копия).

Недостатком этого подхода является то, что конфиги также будут перезаписаны, что может быть нежелательно, если вы запустите разные конфиги .git между двумя компьютерами.Но вы могли бы преодолеть это, исключив файлы с параметром --exclude в rsync.

В целом я думаю, что нативное решение Git чище, но этот взлом rsync может быть полезен для спешащих, ктоможет быть лучше знаком с rsync, чем с git.

1 голос
/ 28 января 2019

Как сделать экспорт Stash в SourceTree:

1) Создайте новую ветку "StashTransfer" из ветви, в которой вы собираетесь использовать свой Stash

2) Примените к ней свой тайники сделайте коммит

3) Нажмите на ваш коммит и сделайте из него патч, возьмите файл патча с собой.

4) Перейдите в другой репозиторий, выберите ту же родительскую ветку, котораяВы только что использовали в 1)

5) Actions / Apply Patch, выберите Mode: Изменить файлы рабочей копии, нажмите Apply Patch, теперь у вас есть незафиксированные изменения из патча в вашей текущей рабочей среде

6) Создайте новый сундук для текущего репо

win!

1 голос
/ 11 октября 2017

Команда запуска из исходного поста:

git stash show -p stash@{x} > patch_file

у меня не сработало (по некоторым причинам он создал непригодные файлы патчей). Вместо этого я должен был:

git stash apply stash@{x}
git commit

за каждый тайник, который я хотел перенести. Затем я поместил репо «родителя» в файл: /// досягаемости репо «ребенка» и сделал следующее для каждого коммита хранения:

git fetch file:///path_to_parent_git && git cherry-pick commit_sha
git reset --soft HEAD^
git stash save my_new_stash_on_child

Это сложнее, но у меня получилось.

0 голосов
/ 24 июля 2018

Если вы хотите перенести свои изменения с одного компьютера на другой, вы всегда можете зафиксировать изменения на своем компьютере, а затем выполнить программный сброс на их компьютере.

Office

git commit -m "-stash-"

Кухня

git reset --soft HEAD~1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...