2009-08-29 15 views

Odpowiedz

149

Możesz po prostu sprawdzić gałąź testową, a następnie zatwierdzić. Nie tracisz niezatwierdzonych zmian podczas przechodzenia do innej gałęzi.

Przypuśćmy, jesteś w branży Master:

git checkout test 
git add . 
git add deletedFile1 
git add deletedFile2 
... 
git commit -m "My Custom Message" 

nie jestem pewien o usuniętych plików, ale myślę, że nie są one uwzględnione podczas korzystania git add .

+11

Czasami Zamówienie nie powiedzie się, ponieważ Twoje zmiany są sprzeczne z tą gałęzią. Możesz wypróbować -m, aby się połączyć. –

+1

Usunięte pliki można zarządzać, wykonując polecenie 'git -u add. ' –

+2

Próbowałem tego, ale wystąpił błąd: error: Twoje lokalne zmiany w poniższych plikach zostałyby zastąpione przez kasę. Zatwierdź zmiany lub przechowuj je, zanim będziesz mógł przełączać gałęzie. – ishwr

5
git checkout TEST 
git add file1 file2 
git commit 
+1

+1 dla czystej prostoty –

194

Ponadto można utworzyć nowy oddział i przełącz się na niego, wykonując:

git checkout -b new_branch 
git add . 

Używam go cały czas, ponieważ zawsze zapominam o rozpoczęciu nowego oddziału przed rozpoczęciem edycji kodu.

+13

+1 najkrótsza, najprostsza odpowiedź. –

+2

ten sam problem co @jouni zaznaczony dla drugiej odpowiedzi - możesz napotkać trudności w łączeniu gałęzi z powrotem do master, jeśli dodatkowe zmiany są niezgodne z oryginalnymi zmianami. IMO ten wątek lepiej odpowiada na pytanie: http: // stackoverflow.com/questions/556923/git-how-to-merge-my-local-working-change-into-another-branch – jpwynn

+0

Krótkie, słodkie i uspokajające ... "Używam tego cały czas ..." –

35

Dlaczego po prostu nie używać git skrytki. Myślę, że jest bardziej intuicyjny jak kopiuj i wklej.

$ git branch 
    develop 
* master 
    feature1 
    TEST 
$ 

Masz kilka plików w bieżącym oddziale, 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 
[email protected]{0}: WIP on master: 934beef ...great changes 
$ 

Przejdź do innej gałęzi.

$ git checkout TEST 

i zastosować

$ 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 
# 

Lubię też git stash ponieważ używam git flow, który skarży się, kiedy chcesz wykończenia gałąź funkcji jednocześnie konieczności zmian nadal w katalogu roboczym.

Podobnie jak w przypadku @Mike Bethany, dzieje się tak przez cały czas, ponieważ pracuję nad nowym problemem, zapominając, że nadal jestem w innej branży. Możesz więc ukryć swoją pracę, git flow feature finish... i w nowym oddziale git flow feature start ....

+2

'git stash' jest moim preferowanym sposobem radzenia sobie z niezatwierdzonymi zmianami. Z pewnością jest to metoda intuicyjna, gdy myślisz o niej jako o wycięciu i wklejeniu. –

+0

To wydaje mi się dobrym podejściem. Działało bez problemu. –

+0

Nie wiedziałem, że możesz to zrobić i wszystko działało dobrze. Czuje się nieco bardziej intuicyjnie niż inne metody. – glaucon

Powiązane problemy