Ja kocham git dodać --interactive . Jest to teraz część mojego codziennego przepływu pracy.
Problem wydaje się, że nie działa z nieśledzonymi plikami. Chcę śledzić nowy plik, ale tylko dodać jego część, tzn. Niektóre części tego nowego pliku nie są jeszcze gotowe do przygotowania.
Na przykład, dzięki git add -i, mogę wybrać opcję łatki, a nawet edytować poszczególne porcje, aby wyeksponować części nowego kodu, pozostawiając komentarze kodu debugowania niestabilne. Uwielbiam pracować w ten sposób, ponieważ pokazuje, które miejsca mega łatki, nad którymi obecnie pracuję, nadal wymagają pracy.
Niestety nie wydaje mi się, że mogę zrobić to samo z nieśledzonym plikiem. Albo sfotografuję cały plik, albo nic. Obejściem, którego używałem, jest przemieszczanie lub nawet zatwierdzanie nowego pliku, gdy jest on pusty, a następnie stopniowanie poszczególnych zmian w zwykły sposób. Ale to rozwiązanie wydaje się brudnym hackem, a kiedy zapomnę lub zmienię zdanie, stwarza więcej problemów niż powinno być.
Pytanie brzmi zatem: w jaki sposób ustawić tylko część nowego pliku, aby ten nowy plik był śledzony, a cała scena lub jej część nie była wystawiana na scenę?
</shame>
-N
odkrycie, dzięki!-p
W tym przypadku wolałbym jednak to połączyć .gid add -N the_file
&git add -p
. Należy dodać, że-N
współpracuje również z-A
Najłatwiejszym sposobem na to (i ogólnie interaktywną inscenizację imho) jest
git gui
. Jest dostarczany w pakiecie z git i powinien działać na prawie wszystkich platformach obsługiwanych przez git.Po prostu uruchom,
git gui
a otworzy się GUI, które pozwala na pomostowe i nieetapowe porcje, a nawet pojedyncze linie śledzonych i nie śledzonych plików.źródło
git gui
. Na przykład w Debianie znajduje się w osobnym pakiecie o nazwie „git-gui”.git gui
nigdy nie działała. W rzeczywistości wyłącza te opcje menu .git gui
nowego pliku, musiszgit add -N new_file
najpierw uruchomić - patrz odpowiedź Richarda Hansena.Proste demo:
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
zamiast tego zakodować na stałe skrót . Nie polecam tego robić_NUL:
zamiast/dev/null
. W przeciwnym razie użyj czegoś takiegoecho -n '' | git hash-object --stdin -w
Teraz indeks będzie zawierał
newfile
jako pusty obiekt blob, a pusty obiekt został wprowadzony do bazy danych obiektów, jeśli jeszcze nie istniał:To powinno być dokładnie to, czego chcesz. Czy mogę również polecić zbiegłą wtyczkę vima do bardzo inteligentnego zarządzania indeksami (zobacz Lepsze dodawanie git -p? )
źródło
Edycja: wydaje się, że teraz nie działa. Jestem pewien, że było to wcześniej (na git 1.7.1). W przypadku, gdy to nie działa, sugeruję inscenizację,
/dev/null
jak sugeruje to powyżej:Jeśli korzystasz z systemu Windows (bez
/dev/null
), możesz zastąpić go ścieżką do pustego pliku.Oryginalna odpowiedź
Chcesz
To dodaje do mnie nieśledzone pliki. Ze strony podręcznika:
źródło
git add -p newfile
w ogóle nie działa (efekt nu), agit add --interactive
„[a] ddracked” ma taki efektgit add newfile
; Edycja sprawdzona również za pomocą git 1.7.5.3; bez kościDla przypomnienia innej możliwości: używam
Następnie możesz wystawić przystojniaków lub edytować je na miejscu.
źródło
add -N
zadd -i
. Właśnie dodałem, żeadd -p
zamiastadd -i
działa.