Bardzo często pracuję nad niektórymi cechami mojego projektu, że muszę zrobić sobie przerwę, zanim będzie wystarczająca do zatwierdzenia. Jednak używam codziennie dwóch różnych komputerów do kodowania (mój laptop i pulpit mojego laboratorium badawczego). Np .: pracuję nad funkcją w domu, a potem zatrzymuję się i idę do laboratorium.
Nie chcę mieszać synchronizacji w chmurze (np. Dropbox) ze zdalnym śledzeniem GitHub.
Po prostu popełniłem niedokończone (i niechlujne) stany mojego kodu przed (i wypchnąłem go) tylko w celu wciągnięcia go na inny komputer, aby kontynuować pracę. Jestem pewien, że to zła praktyka.
Dziś jednak natknąłem git stash
się trochę na Googlinga. Wydaje się to idealnym rozwiązaniem dla tego, czego potrzebuję.
Jednak dokumentacja nie mówi, czy przejdzie do github po wprowadzeniu zmian. Poza tym chcę wiedzieć, czy istnieje bardziej skuteczny sposób na osiągnięcie mobilności, której potrzebuję.
Z góry dziękuję!
Odpowiedzi:
Popełnianie niechlujnej niedokończonej pracy jest w porządku. Wykonuj swoją pracę w branży tematycznej. Popełniaj wcześnie i często popełniaj. Czytaj dalej Kiedy zatwierdzić kod? po wskazówki dotyczące tego, kiedy dokonać zatwierdzenia. Specjalnie dla Gita, zaangażuj się w gałąź tematyczną i pchaj ją tak często, jak chcesz.
Jeśli ta gałąź tematów jest właśnie dla Ciebie, zatwierdzaj i wypychaj uszkodzony kod. Należy tylko Defer od pchania złamany kod do oddziału, który jest używany przez innych ludzi. Nie krępuj się złamać własnego kodu.
źródło
Skrytki są przeznaczone do użytku lokalnego, jako tymczasowe miejsce do układania rzeczy podczas bałaganu z gałęziami.
Jeśli jesteś jedynym pracującym w oddziale, nie ma problemu z popełnieniem zepsutego kodu. To, co robię, gdy w podobnych sytuacjach jest zrobienie złamanego zatwierdzenia, a następnie po pociągnięciu go w inne miejsce, wykonaj jego
git reset HEAD~1
cofnięcie. Oczywiście wymaga to użycia--force
na twoim urządzeniupulls
ipushes
po zmianie lokalizacji.Albo po prostu czekam do pierwszego zatwierdzenia i robię
git commit --amend
. Albo po prostu wyciskam wszystkie złamane zatwierdzenia, gdy zatwierdzam gałąź funkcji. Albo po prostu nie martwię się o kilka wyraźnie zaznaczonych złamanych zobowiązań w mojej historii, ponieważ zwykle nie wychodzę, dopóki nie znajdę się w dobrym miejscu. Istnieje wiele opcji.źródło
--amend
więc wymaga--force
to popychania. Lepiej zaangażuj się tylko w odrzutową gałąź.stash
nie jest tak naprawdę satysfakcjonujący dla niczego poza czyszczeniem katalogu roboczego w celu „odblokowania gałęzi”; jeśli nie od razu stanieszstash pop
się stanem, sprawy staną się bardzo zagmatwane.Jeśli trzeba zapisać rzeczywistą pracę, nawet jeśli nie nadaje się ona do stałego wpisu repo, nadal powinna być zatwierdzona. W rzeczywistości nigdy nie zostawiam mojego katalogu roboczego w stanie, który nie jest pod kontrolą wersji - używam bardzo prostych skryptów Python, aby zapisać każdą zmianę jako tymczasowe zatwierdzenie. Jeśli chcesz spróbować, oto co możesz zrobić:
git-tmp-commit
. Automatycznie zatwierdzi wszystkie zmiany w nowym, unikalnym oddziale.ccd
skryptu, który faktycznie sprawdza wszystko od zera do folderu tymczasowego , automatycznie wybierając najnowszą gałąź ... ale możesz też po prostu ręcznie pobrać i pobrać gałąźtemporary-commits/original-branch/YYYY-MM-DD...
z istniejącego klonu repo.git-tmp-commit -r
. Spowoduje to powrót do oryginalnej gałęzi † (np.master
) I pozostawienie zmian tymczasowego zatwierdzenia w katalogu roboczym, abyś mógł kontynuować tutaj, aż nadejdzie czas na prawidłowe zatwierdzenie (lub tymczasowe, jeśli będziesz musiał ponownie wyjść).† Sposób pisania skryptu w tej chwili działa tylko wtedy, gdy
master
w repozytorium transakcji nie ma gałęzi . W razie wątpliwości musiałbyśgit branch -d master
; to oczywiście nie jest naprawdę idealne ...źródło