Zastrzeżenie: git nie jest skomplikowany, jest po prostu wszechstronny. Nie bój się, tylko dlatego mam wałęsał się w długą odpowiedź :)
Miałeś:
master: a-b-c-d-e-f
i chciał zmienić c
. Zrobiłeś:
* git checkout c
(. Uniknąć sprawdzania popełni w przyszłości Przesuń głowę gałąź zamiast)
* zmieniły niektóre pliki
Jesteś w:
master: a-b-c-d-e-f
\uncommitted-work,detached
Jeśli chcesz ponownie zastosować def na górze zmienionego "c"
(Jeśli już naciskasz, osób poniżej będzie mieć to recover from upstream rebase)
git stash .
git checkout master
git stash pop
(rozwiązywanie konfliktów)
git stage .
git commit -m "temporary name for g"
- (
master: a-b-c-d-e-f-g
)
git rebase c -i
("ponownie ubiegać się mój obecny oddział na punkcie c, i niech mi manipulować zobowiązuje interaktywnie", tj, re-rodzic (rebase) d-e-f
na nowy c
)
- Śledź guide to interactive rebase. Chcesz ponownie zamówić
g
, więc jest po C, a następnie zmień polecenie rebase z pick
na fixup
. dd
, aby usunąć linię, P
, aby ją umieścić, i
, aby wejść do trybu wstawiania, aby wpisać "fixup", a następnie :wq
, aby zapisać i opuścić vim.
- (
master: a-b-c'-d'-e'-f'
, gdzie c'
jest wynikiem scalenia g
i c
podczas remizy.d-e-f
stały d'-e'-f'
jak ich przodków zmieniła więc oni nie „same” zobowiązuje miarę git jest zaniepokojony, ale ich treść pozostaje taka sama)
Jeśli chcesz cofnąć d-e-f
(i przepisać historię tak, jakby nigdy nie uczynił je)
(Jeżeli wciśnięty, ludzie poniżej będzie mieć to recover from upstream rebase):
git stash .
git checkout master
- (
master: a-b-c-d-e-f
z ukryty plików pierwotnie w oparciu c)
git reset --hard c
(odrzucić wszystkie pliki i zobowiązuje się na pana od c)
- (
master: a-b-c
, z ukryty pliki)
git stash pop
(resolve konflikty)
- (
master: a-b-c-*
)
git stage .
git commit -m "description of g"
- (
master: a-b-c-g
)
Jeśli chcesz cofnąć D-E-F (ale zachować je w historii)
git stash
git revert --no-commit d
git revert --no-commit e
git revert --no-commit f
git push
git stash pop
(będzie żadnych konfliktów)
git stage .
git commit -m "Undo d-e-f in order to fix..."
git push
Jeśli masz git push
D-E-F i chcesz t o zachowaj je osobno:
Wygląda na to, że twoje nowe zmiany dotyczą nowego oddziału. git branch <foo>
.
* Dokonałem pewnych zmian i teraz chcę je zapisać. * Proszę podać dokładniejsze: co rozumiesz przez "zapisywanie"? Masz głównie dwie opcje: commit lub skrytka. Każda z nich "uratuje" twoje zmiany w pewnym sensie. Do którego odnosisz się? Możesz również utworzyć oddział. – Jubobs
Chcę zatwierdzić moje zmiany. – Nikolas
Odpowiednio zredagowałem Twoje pytanie. – Jubobs