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.jsdodano 4 linie i usunięto 4 linie. Obecnie nie jest wystawiany, ponieważ aktualny stan zgłasza „bez zmian”. Gdy plik zostanie przemieszczony, bit+4/-4zostanie przeniesiony do kolumny przemieszczanej, a kolumna niestabilna będzie czytać „nic”. -
package.jsonzostał 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