Odpowiedzi:
Wygląda na to, że wszystko czego potrzebujesz to:
git stash
git checkout branch123
git stash apply
Powinieneś wrócić do swojej gałęzi, nie dotykając gałęzi głównej.
stashzapisuje lokalne modyfikacje, a następnie stash applyprzywraca je.
git reset --hard HEADi wróciłeś do ostatniego zatwierdzenia dokonanego w gałęzi master.
Przyjęta odpowiedź jest najdokładniejsza, ale istnieje szczególny przypadek, w którym można uprościć. Jeśli pliki, które zmodyfikowałeś w katalogu roboczym, są identyczne w obu masteri branch123możesz to zrobić po prostu
git checkout branch123
Nie trzeba niczego ukrywać, ponieważ domyślnym zachowaniem checkoutjest NIE zastępowanie zmodyfikowanych plików w katalogu roboczym, aby nic nie stracić. (Faktycznie zostało to wspomniane w pierwszych komentarzach Cascabel)
Jak wspomnieli inni w komentarzach, jeśli branch123jeszcze nie istnieje, możesz to zrobić
git checkout -b branch123
Na podstawie tego, co tu znalazłem .
git checkout -b newbranch
masteri branch123. Zobacz moją zredagowaną odpowiedź.
git stash jest to, czego potrzebujesz.
pełne wyjaśnienie można znaleźć w Git-Tools-Stashing
Ponieważ możliwe jest utworzenie nowej gałęzi, ale nie jest możliwe wyewidencjonowanie istniejącej gałęzi podczas wyewidencjonowywania plików, znalazłem następującą sztuczkę przy użyciu gałęzi tymczasowej do pracy:
Ten scenariusz działa przynajmniej z wtyczką Git VS 2015, ale najprawdopodobniej działałby z dowolnym narzędziem git.
EDYCJA: Dowiedziałem się, że będziesz musiał wykonać rebase (git rebase --onto) oddziału temp przed wykonaniem scalenia. W przeciwnym razie zmiany w wzorcu zostaną uwzględnione podczas scalania. Dodatkowy krok 3.5 powyżej. Zobacz więcej na temat rebase tutaj: https://git-scm.com/book/en/v2/Git-Branching-Rebasing