Git
Inscenizacja
Szukaj…
Uwagi
Warto zauważyć, że inscenizacja ma niewiele wspólnego z samymi „plikami” i wszystko, co dotyczy zmian w poszczególnych plikach. Wprowadzamy pliki zawierające zmiany, a git śledzi zmiany jako zatwierdzenia (nawet jeśli zmiany w zatwierdzeniu są dokonywane w kilku plikach).
Rozróżnienie między plikami i zatwierdzeniami może wydawać się niewielkie, ale zrozumienie tej różnicy jest fundamentalne dla zrozumienia podstawowych funkcji, takich jak cherry-pick i diff. (Zobacz frustrację w komentarzach dotyczących złożoności zaakceptowanej odpowiedzi, która proponuje cherry-pick jako narzędzie do zarządzania plikami .)
Jakie jest dobre miejsce do wyjaśniania pojęć? Czy to w uwagach?
Kluczowe idee:
Pliki to najczęstsza metafora tych dwóch technologii informatycznych. Zgodnie z najlepszymi praktykami nazwa pliku nie zmienia się wraz ze zmianą zawartości (z kilkoma rozpoznanymi wyjątkami).
Zatwierdzenie to metafora unikalna dla zarządzania kodem źródłowym. Zatwierdzenia to zmiany związane z określonym wysiłkiem, takie jak naprawa błędu. Zatwierdzenia często obejmują kilka plików. Pojedyncza, drobna poprawka błędu może obejmować poprawki w szablonach i css w unikalnych plikach. Gdy zmiana jest opisywana, opracowywana, dokumentowana, sprawdzana i wdrażana, zmiany w oddzielnych plikach mogą być opatrzone adnotacjami i obsługiwane jako jedna jednostka. Pojedynczą jednostką w tym przypadku jest zatwierdzenie. Równie ważne jest to, że skupienie się tylko na zatwierdzeniu podczas przeglądu pozwala bezpiecznie ignorować niezmienione wiersze kodu w różnych plikach, których dotyczy problem.
Inscenizacja pojedynczego pliku
Aby przygotować plik do zatwierdzenia, uruchom
git add <filename>
Inscenizacja wszystkich zmian w plikach
git add -A
git add .
W wersji 2.x git add .
wprowadzi wszystkie zmiany do plików w bieżącym katalogu i wszystkich jego podkatalogach. Jednak w wersji 1.x będzie wystawiał tylko nowe i zmodyfikowane pliki, a nie pliki usunięte .
Użyj git add -A
lub równoważnego polecenia git add --all
, aby wprowadzić wszystkie zmiany do plików w dowolnej wersji git.
Stwórz usunięte pliki
git rm filename
Aby usunąć plik z git bez usuwania go z dysku, użyj flagi --cached
git rm --cached filename
Usuń scenę z pliku zawierającego zmiany
git reset <filePath>
Interaktywne dodawanie
git add -i
(lub --interactive
) da ci interaktywny interfejs, w którym możesz edytować indeks, aby przygotować to, co chcesz mieć w następnym zatwierdzeniu. Możesz dodawać i usuwać zmiany w całych plikach, dodawać nieśledzone pliki i usuwać pliki ze śledzenia, ale także wybierać podsekcje zmian do umieszczenia w indeksie, wybierając fragmenty zmian do dodania, dzieląc te fragmenty, a nawet edytując plik różnic . Wiele graficznych narzędzi zatwierdzania dla Git (takich jak np. git gui
) zawiera taką funkcję; może to być łatwiejsze w użyciu niż wersja wiersza poleceń.
Jest to bardzo przydatne (1), jeśli masz splątane zmiany w katalogu roboczym, które chcesz umieścić w osobnych zatwierdzeniach, a nie wszystkie w jednym zatwierdzeniu (2), jeśli jesteś w środku interaktywnej bazy i chcesz się podzielić duże zatwierdzenie.
$ git add -i
staged unstaged path
1: unchanged +4/-4 index.js
2: +1/-0 nothing package.json
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
Górna połowa tego wyniku pokazuje aktualny stan indeksu w podziale na kolumny etapowe i niestacjonarne:
-
index.js
dodano 4 linie i usunięto 4 linie. Obecnie nie jest wystawiany, ponieważ aktualny stan zgłasza „bez zmian”. Gdy plik zostanie przemieszczony, bit+4/-4
zostanie przeniesiony do kolumny przemieszczanej, a kolumna niestabilna będzie czytać „nic”. -
package.json
został dodany jeden wiersz i został zainscenizowany. Nie ma dalszych zmian, ponieważ został on zainscenizowany, jak wskazano w wierszu „nic” pod kolumną bezetapową.
Dolna połowa pokazuje, co możesz zrobić. Wprowadź liczbę (1-8) lub literę ( s
, u
, r
, a
, p
, d
, q
, h
).
status
pokazuje wyjście identyczne z górną częścią wyjścia powyżej.
update
umożliwia wprowadzanie dalszych zmian w zatwierdzeniach etapowych za pomocą dodatkowej składni.
revert
spowoduje przywrócenie informacji o zatwierdzeniu etapowym z powrotem do HEAD.
add untracked
pozwala add untracked
, które wcześniej nie były śledzone przez kontrolę wersji.
patch
pozwala na wybranie jednej ścieżki z wyjścia podobnego do status
do dalszej analizy.
diff
pokazuje, co zostanie popełnione.
quit
kończy działanie polecenia.
help
przedstawia dalszą pomoc dotyczącą korzystania z tego polecenia.
Dodaj zmiany według przystojniaka
Możesz zobaczyć, jakie „porcje” pracy byłyby wystawiane do zatwierdzenia za pomocą flagi łatki:
git add -p
lub
git add --patch
Spowoduje to otwarcie interaktywnego monitu, który pozwala spojrzeć na różnice i pozwala zdecydować, czy chcesz je uwzględnić, czy nie.
Stage this hunk [y,n,q,a,d,/,s,e,?]?
- W tym etapie przystań na następny zatwierdzenie
- n nie wystawiaj tego przystawki do następnego zatwierdzenia
- q wyjdź; nie wystawiaj tego przystojniaka ani żadnego z pozostałych przystojniaków
- etap ten przystojniak i wszystkie późniejsze bryły w pliku
- d nie umieszczaj tego fragmentu ani żadnego z późniejszych fragmentów w pliku
- g wybierz przystojniak, do którego chcesz przejść
- / wyszukaj przystojniak pasujący do podanego wyrażenia regularnego
- j pozostaw ten przystojniak niezdecydowany, patrz następny niezdecydowany przystojniak
- J zostaw ten przystojniak niezdecydowany, patrz następny przystojniak
- k pozostaw ten przystojniak niezdecydowany, patrz poprzedni niezdecydowany przystojniak
- K zostaw ten przystojniak niezdecydowany, patrz poprzedni przystojniak
- s podzielił obecny przystojniak na mniejsze przystawki
- e ręcznie edytuj bieżący przystojniak
- ? wydrukuj pomoc przystojniaka
Ułatwia to wychwycenie zmian, których nie chcesz zatwierdzać.
Możesz to również otworzyć poprzez git add --interactive
i wybierając p
.
Pokaż zmiany etapowe
Aby wyświetlić porcje przygotowane do zatwierdzenia:
git diff --cached