Ответ 1
Вы можете применить файл исправления (без внесения изменений еще), просто выполнив
git apply patchfile
Затем вы можете просто создать новый stash из текущего рабочего каталога:
git stash
Мне нужен способ экспортировать спрятанное изменение на другой компьютер.
На компьютере1 я сделал
$ git stash save feature
Я пытаюсь получить патч файл в файл, а затем импортировать его на другой компьютер.
$ git stash show -p > patch
Эта команда дает мне файл, который я могу переместить на другой компьютер, на котором клонируется это репо, но вопрос заключается в том, как снова импортировать его в файл.
Спасибо
Вы можете применить файл исправления (без внесения изменений еще), просто выполнив
git apply patchfile
Затем вы можете просто создать новый stash из текущего рабочего каталога:
git stash
в качестве альтернативы вы можете создать ветку из своего кошелька (на компьютере 1), используя
git stash branch stashed_changes_branch
зафиксировать изменения:
git commit -a
затем добавьте его как удаленный компьютер 2:
git remote add pc1 [email protected]:/path/to/repo
теперь вы можете получить удаленную информацию, используя
git fetch pc1
теперь вы можете импортировать фиксацию так, как хотите; используя git вишневый выбор, git rebase или все, что вам нравится... Если вы хотите, чтобы он выглядел так, как будто вы выполнили git прикладывание; вы можете использовать git cherry-pick -no-commit.
Если у вас нет прямого соединения между компьютером1 и компьютером2; вы можете использовать удаленный (например, github или что-то подобное):
git push origin stashed_changes_branch
и на компьютере2:
git fetch
В качестве альтернативы вы можете экспортировать все локальные штампы на другой компилятор следующим образом
git pull
в вашем старом и новом каталоге git, чтобы обе версии имели последние изменения.Другим вариантом является rsync
папка .git
с одного компьютера на другой компьютер. rsync
обрабатывает только изменения файлов (быстрее, чем копия).
Один недостаток этого подхода - это также перезаписывать конфиги, что может быть нежелательно, если вы запускаете разные конфигурации .git между двумя машинами. Но вы могли бы преодолеть это, исключив файлы с опцией --exclude
в rsync
.
В целом я думаю, что родное решение Git чище, но этот взлом rsync
может быть приятным для кого-то, кто спешит, который может быть более знаком с rsync, чем git.
Команда запуска из исходного сообщения:
git stash show -p [email protected]{x} > patch_file
не работал у меня (по какой-то причине он создал непригодные файлы патчей). Вместо этого мне пришлось:
git stash apply [email protected]{x}
git commit
для каждого штампа, который я хотел передать. Затем я поместил "родительское" репо в файл:///досягаемость репо-объекта "child" и сделал следующее для каждого фиксации:
git fetch file:///path_to_parent_git && git cherry-pick commit_sha
git reset --soft HEAD^
git stash save my_new_stash_on_child
Это сложнее, но помогло.
Если вы хотите перенести свои изменения с одного компьютера на другой, вы всегда можете зафиксировать изменения на своем компьютере, а затем выполнить программный сброс на их компьютере.
офис
git commit -m "-stash-"
Кухня
git reset --soft HEAD~1
Как сделать экспорт Stash в SourceTree:
1) Создайте новую ветку "StashTransfer" из ветки, в которой вы собираетесь использовать свой Stash
2) Примените свой тайник к нему и сделайте коммит
3) Нажмите на свой коммит и сделайте из него патч, возьмите файл патча с собой.
4) Перейдите в другой репозиторий, выберите ту же родительскую ветку, которую вы только что использовали в 1)
5) Действия/Применить патч, выберите Режим: Изменить файлы рабочей копии, нажмите "Применить патч", теперь у вас есть незафиксированные изменения из патча в текущей рабочей среде.
6) Создайте новый Stash для текущего репо
выиграть!