2013-04-17 7 views
7

Czy można pominąć obszar pomostowy i (również) zatwierdzić nierozdrobniony, nowe pliki do git?Czy można pominąć obszar przemieszczania i (również) zatwierdzić niepotwierdzone, nowe pliki do git?

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository

Zapewnienie opcję -a do polecenia git commit powoduje Git automatycznie wystawić każdy plik, który jest już śledzone przed wykonaniem commit, co pozwala pominąć git dodać część:

$ git commit -a -m 'added new benchmarks'

Dzięki.

+0

Możesz również określić nazwy plików w linii poleceń po 'commit'. – Richard

+0

@Richard To nie będzie zatwierdzać plików, które są nieśledzone. Otrzymasz komunikat o błędzie "nie pasuje do żadnego pliku znanego git" –

Odpowiedz

2

Może się to wydawać dość trywialne dla guru, ale jest niewielka dla mnie rewelacja (przyznaję) - przynajmniej ja właśnie użył go po raz pierwszy i teraz działa (bez niestandardowych aliasów): Tak użyć średnika ; i będzie ona działać jako jedną wkładką:

git add --all; git commit -m "some informative commit message"

13

Korzystanie z pojedynczego wbudowanego polecenia wiersza poleceń? Nie

Korzystanie dwa polecenia:

git add -A 
git commit 

Korzystanie z niestandardowego Alias:

Dodaj to do .gitconfig:

[alias] 
    commituntracked = "!git add -A; git commit" 

Następnie można zrobić

git commituntracked 
+0

Czy mogę prosić o rozszerzenie tego niestandardowego aliasu, aby zawierał również komunikat zatwierdzający ("zmienna")? Dzięki! –

+0

Zależy od systemu operacyjnego, na którym pracujesz. To pytanie ma kilka dobrych przykładów: http://stackoverflow.com/questions/3321492/git-alias-with-positional-parameters-git-foo-aaa-bbb-ccc-foo-aaa-bar-bbb –

+0

Linux. Przykro mi, ale ja (przynajmniej na pierwszy rzut oka) nie mogę napisać przykładów tego linku razem i zastosować ich tutaj, aby dołączyć komunikat zatwierdzenia git. Czy mogę po prostu dodać '-m', aby nadać' git commituntracked -m "jakąś wiadomość" '? –

2

Tak. Istnieją co najmniej dwa główne sposoby robienia tego. Po pierwsze, nie musisz używać "miejsca" przemieszczania, możesz mieć dowolną liczbę miejsc postoju - ustaw GIT_INDEX_FILE=/path/to/private/index i rób to, co chcesz; po drugie możesz sam skonstruować commit, bezpośrednio. To nawet nie jest trudne.

Rdzeń repozytorium Git zajmuje się obiektami typu blob, tree i commit (również nieistotnymi tutaj, notatkami i znacznikami opisowymi). Polecenie git do zrzutu obiektów to git cat-file -p.

Kropelka to tylko bag-o-bity. Dodaj jeden do repozytorium, używając git hash-object -wfilename, wydrukuje on ~ prawdziwe imię ~ kropki w tym pliku i doda go do repo. Drzewo wiąże obiekt z nazwą systemu plików. Dodaj jeden do repozytorium z git mktree; aby zobaczyć, jak go nakarmić, wydrukuj drzewo za pomocą np. git cat-file -p HEAD^{tree}. Dodaj zobowiązać się do repozytorium z git commit-tree, w zasadzie, można powiedzieć git commit-tree -pmom-pdad sometree, ustawić kilka zmiennych środowiskowych i paszy commit wiadomość na stdin.

To wszystko, co konieczne; Jeśli chcesz się dalej kroić i pokroić w kostkę z drzewami i wystawiać na próbę read-tree i write-tree może być bardzo przydatny, jeśli jest to w ogóle atrakcyjne dla Ciebie, git core tutorial to dobry przegląd.

Powiązane problemy