Czasami kasa się nie powiedzie, ponieważ zmiany powodują konflikt z tą gałęzią. Możesz spróbować realizacji transakcji -m, aby scalić.
Jouni K. Seppänen
2
Próbowałem tego, ale wystąpił błąd: błąd: lokalne zmiany w następujących plikach zostałyby zastąpione przez kasę. Zatwierdź zmiany lub schowaj je, zanim będziesz mógł zmienić oddziały.
ishwr
Chociaż to zadziała, odpowiedź, która mówi, że używanie skrytki powinno być preferowane, IMO. Może po prostu osobisty wybór, ale jest to logicznie czystszy przepływ pracy i wprowadza STASH, który jest przydatnym poleceniem.
Patrick,
Brakuje opcji „-b”, ponieważ nagłówek sugeruje, że pytanie dotyczy „nowej” gałęzi.
Guntram
195
Możesz także utworzyć nowy oddział i przejść do niego, wykonując:
git checkout -b new_branch
git add .
Używam tego cały czas, ponieważ zawsze zapominam założyć nowy oddział, zanim zacznę edytować kod.
ten sam problem, co @jouni zanotowany dla drugiej odpowiedzi - możesz napotkać trudności z połączeniem gałęzi z powrotem w master, jeśli dodatkowe zmiany są sprzeczne z oryginalnymi zmianami. IMO ten wątek lepiej odpowiada na pytanie: stackoverflow.com/questions/556923/…
jpw 20.04.13
Krótko, słodko i uspokajająco ... „Używam tego cały czas ...”
ϹοδεMεδιϲ
1
Nie zapomnij wykonać commit w new_branch. Jeśli przełączysz się z powrotem na gałąź główną i przywrócisz zmienione pliki, stracisz je również w gałęzi new_branch.
petrsyn
36
Dlaczego nie skorzystać z git stash. Myślę, że jest bardziej intuicyjny jak kopiowanie i wklejanie.
$ git branch
develop
* master
feature1
TEST
$
W bieżącym oddziale masz kilka plików, które chcesz przenieść.
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: awesome.py
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: linez.py
#
$
$ git stash
Saved working directory and index state \
"WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$
Przejdź do drugiej gałęzi.
$ git checkout TEST
I aplikuj
$ git stash apply
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# modified: awesome.py
# modified: linez.py
#
Podoba mi się również, git stashponieważ używam git flow, który narzeka, gdy chcesz zakończyć gałąź funkcji, a zmiany są nadal w katalogu roboczym.
Podobnie jak @Mike Bethany, zdarza mi się to cały czas, ponieważ pracuję nad nowym problemem, zapominając, że wciąż jestem w innym oddziale. Możesz więc ukryć swoją pracę git flow feature finish...i git stash applynowy git flow feature start ...oddział.
git stashto mój preferowany sposób radzenia sobie z niezatwierdzonymi zmianami. Jest to z pewnością intuicyjna metoda, gdy myślisz o tym jako wycinanie i wklejanie.
Matthew Mitchell,
To wydaje mi się dobre podejście. Działa bez problemu.
Yunus Nedim Mehel
Nie wiedziałem, że możesz to zrobić i działało to ładnie. Czuje się nieco bardziej intuicyjnie niż inne metody.
glaucon
Myślę, że ukrywanie to bardziej profesjonalny sposób, zamiast korzystania z usługi git checkout, a następnie dodawania. Myślę, że twoja odpowiedź powinna wynosić ponad 100 głosów.
Odpowiedzi:
Możesz po prostu przejść do oddziału testowego, a następnie zatwierdzić. Nie tracisz swoich nieoczekiwanych zmian, przenosząc się do innego oddziału.
Załóżmy, że jesteś w oddziale głównym:
Naprawdę nie jestem pewien co do usuniętych plików, ale myślę, że nie są one uwzględnione, gdy używasz
git add .
źródło
Możesz także utworzyć nowy oddział i przejść do niego, wykonując:
Używam tego cały czas, ponieważ zawsze zapominam założyć nowy oddział, zanim zacznę edytować kod.
źródło
Dlaczego nie skorzystać z git stash. Myślę, że jest bardziej intuicyjny jak kopiowanie i wklejanie.
W bieżącym oddziale masz kilka plików, które chcesz przenieść.
Przejdź do drugiej gałęzi.
I aplikuj
Podoba mi się również,
git stash
ponieważ używamgit flow
, który narzeka, gdy chcesz zakończyć gałąź funkcji, a zmiany są nadal w katalogu roboczym.Podobnie jak @Mike Bethany, zdarza mi się to cały czas, ponieważ pracuję nad nowym problemem, zapominając, że wciąż jestem w innym oddziale. Możesz więc ukryć swoją pracę
git flow feature finish...
igit stash apply
nowygit flow feature start ...
oddział.źródło
git stash
to mój preferowany sposób radzenia sobie z niezatwierdzonymi zmianami. Jest to z pewnością intuicyjna metoda, gdy myślisz o tym jako wycinanie i wklejanie.git stash --include-untracked
źródło