Jak mogę udostępnić skrytkę git?


32

Czy istnieje sposób na udostępnienie skrytki w git?

Pracuję na wielu maszynach i często chcę móc przenosić mój obecny stan roboczy z jednego do drugiego.

Szukam sposobu, w jaki mogę pchać / ciągnąć skrytkę z jednego klonu do drugiego i sprawić, by pojawiała się albo jako skrytka dla drugiego klonu, albo jako widoczna gałąź zdalna. Nie oczekuję jednak, że ten pierwszy będzie koniecznie działał, jeśli pilot ma już własną skrytkę.

Biorąc pod uwagę, że skrytka jest w rzeczywistości już gałęzią z zatwierdzeniami (najwyraźniej), nie szukam rozwiązań w stylu „przydziel każdą skrytkę do gałęzi, a następnie udostępnij je” - mam już wiele, wiele oddziałów. Dlatego szukam refspec lub podobnego, którego mogę użyć do kontrolowania push / pull.

Odpowiedzi:


26

Skrytka jest po prostu stashlub refs/stash, którą możesz przekazać do zdalnego oddziału:

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

refs/stashJednak Git odmówi pchania bezpośrednio do . Ponadto wydaje się, że nie ma sposobu, aby przesuwać całe dzienniki , w których przechowywane są poprzednie skrytki .


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)powinien zrobić dobrze dla wszystkich skrytek; Zobacz także stackoverflow.com/a/5248758/85371
sehe

11

Nie jest tak dobrze zintegrowany, git pushale aby uniknąć tworzenia gałęzi, używam git stash show -p > change.patch(po schowaniu zmian), a nawet, git diff --cached > change.patchaby utworzyć łatkę, którą mam git apply change.patchna następnej maszynie, z której pracuję.

Przy takim rozwiązaniu przynajmniej jeśli wiele plików zostanie zmienionych w bieżącym stanie roboczym, wszystko jest zawarte w pojedynczej jednostce danych.


Tak ale jak ? git stash -p pyta mnie tylko interaktywnie o każdy przystojniak - potem wypluwa długą linię, której nie rozumiem. Gdzie jest ta „łatka”, którą mogę zabrać ze sobą na inną maszynę? a czym różni się git-cache? i jak korzystasz z git? Czy możesz rozwinąć nieco dalej?
Motti Shneor

Wyszczególniłem i poprawiłem swoją odpowiedź
Neo

4

Możesz zrobić łatkę i wysłać ją komuś. musicie to zastosować.

git diff >> file.diff

3
Zauważ, że zadziała to tylko dla obiektów, które generują różnicę; uważaj na „Pliki binarne różnią się” na wyjściu.
Liam,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.