Як я можу поділитися сховищем git?


32

Чи є спосіб поділитися сховищем в git?

Я працюю на ряді машин і часто хочу перенести свій поточний робочий стан з одного в інший.

Я шукаю спосіб, яким я можу підштовхнути / витягнути скриньку з одного клона в інший, і чи буде він виглядати як приховування для іншого клону, або як явна віддалена гілка. Я не сподіваюся, що колишній обов’язково спрацює, якщо на пульті вже є прихований пристрій.

Зважаючи на те, що фактично сховище - це вже галузь, яка виконує посилання (мабуть), я не шукаю рішень за принципом "привласнити кожну сховку до гілки, а потім поділитись цими" - у мене вже багато багато, гілок. Тому я шукаю перегляд або подібне, яке я можу використовувати для управління натисканням / потягуванням.

Відповіді:


26

Сховище - це просто stashабо refs/stash, яке ви можете натиснути на віддалену гілку:

git push origin stash@{2}:refs/heads/otherstash

refs/stashОднак Git відмовиться натискати безпосередньо на . Крім того, здається, що не існує способу виштовхувати цілі відмови , де зберігаються попередні скрині.


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)повинен робити красиво для всіх сташів; Дивіться також stackoverflow.com/a/5248758/85371
sehe

11

Це не так добре інтегровано, git pushале, щоб уникнути створення гілок, я використовую git stash show -p > change.patch(після приховання змін) або навіть git diff --cached > change.patchдля створення патча, git apply change.patchна якому я працюю на наступній машині, з якої працюю.

Принаймні, за допомогою цього рішення, якщо багато файлів змінено у поточному робочому стані, все міститься в одному блоці даних.


Так .. але як? git stash -p запитує мене лише інтерактивно про кожну луску - тоді випирає довгу лінію, яку я не розумію. Де той «латка», яку я можу взяти з собою до іншої машини? і чим відрізняється git? і як ви використовуєте git apply? Чи можете ви детальніше розглянути трохи далі?
Motti Shneor

Я детально і виправив свою відповідь
Нео,

4

Ви можете зробити патч і надіслати його комусь. що ви повинні зробити, це застосувати це.

git diff >> file.diff

3
Зверніть увагу, це буде працювати лише для об'єктів, які генерують розріз; остерігайтеся "Бінарні файли відрізняються" у виході.
Ліам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.