2009-11-16 14 views
25

właśnie popełnił moje drzewo roboczą, dodawane do indeksu po pierwsze, z „$ git commit -m«test»” Uratowałem stdout-put z tego do pliku i widzę na górze ona, że mówigit commit problemów

# On branch master 
# Changed but not updated: 
# (use "git add/rm ..." to update what will be commited) 
# (use "git checkout -- ..." to discard changes in working directory)" 

problemem jest to, że moje drzewo robocza nie jest przyznaniem się do repo, a mam wrażenie, to ma coś wspólnego z tym

dzięki

+0

Jakiego systemu operacyjnego używasz? W szczególności używasz Git w systemie Windows, a jeśli tak, to w jakim środowisku? –

+0

Serwer Ubuntu, git 1.5.6 – deepblue

+1

Pierwszą rzeczą, którą mogę zasugerować, jest uaktualnienie wersji Git, najnowsza wersja to 1.6.5.3. Jestem pewien, że te konkretne wiadomości, które cytowałeś, zostały poprawione od 1.5.x. –

Odpowiedz

5

Przed zobowiązać się do zmiany, musisz najpierw dodać go do indeksu:

git add myfile 
git commit -m "test" 

Alternatywnie, można pracować w bardziej SVN podobnym stylu i zobowiązać się wszystko, co jest Zmieniono:

git commit -a -m "test" 

Albo można po prostu dodać-i-commit pojedynczego pliku:

git commit myfile -m "test" 
+0

zrobił to wszystko. jak wspomniałem poniżej w komentarzu do odpowiedzi Jeda, poruszyłem wiele plików, więc nie sądzę, że popełniam błąd - w tym przypadku działałoby, ponieważ pliki są usuwane i ponownie wprowadzane ... i myślę, że git traktuje je jako nowe pliki następnie – deepblue

+0

Mogę tylko zasugerować, że nie dodałeś plików do repozytorium, gdy myślałeś, że zrobiłeś; twoja wiadomość jest dokładnie tym, co widzę po uruchomieniu 'git commit' bez' git add'. –

+0

Dziwne. Robię "git add". każdego razu. to powinno zrobić trick.hmmm. dziękuję za wskazanie, że chociaż – deepblue

0

Naprawdę musisz przeczytać dokumentację.

git add yourfile 
git commit -m "test" 

Albo popełnić wszystkie zmienione pliki -

git commit -a -m "test" 
+0

ofcourse Dodałem drzewo robocze do indeksu jako pierwsze ($ git add.), Po które uruchomiłem ($ git commit -m 'test'> view_file). Przerobiłem trochę drzewo robocze od ostatniego zatwierdzenia, więc wiele usuniętych plików starych miejsc i wstawienie ich do nowych miejsc ... to dlatego zapisuję dane wyjściowe w pliku, dzięki czemu mogę sprawdzić, co powiedział git – deepblue

2

Czy zrobić git add . przed wami zaangażowana?

Zawsze dobrze jest zrobić git status przed git add lub git commit, aby zobaczyć, co zostało zmienione i zainscenizowane.

Jest również bardzo przydatny zrobić git diff zobaczyć konkretnych zmian Masz zamiar popełnić.

Oto co git status pokazuje jeśli dodano plik, a następnie przemianowano ją.

[email protected]:~$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: foo.txt 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: foo.txt 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# bar.txt 

W tym momencie można po prostu zrobić git add . a następnie git status will give you more information, perhaps pointing out that you still have a new file and a deleted file called foo.txt . To fix this you need to manually git rm foo.txt before doing git commit`

W przyszłości, jeśli masz pliki w repo git że chcesz move powinieneś użyć git mv.

+0

tak, git status ' jest super. to także zgłasza komunikat, który umieściłem w pytaniu. te cholerne zmiany po prostu nie są popełniane. Cały dzień spędziłem czytając samouczki i dokumenty próbujące znaleźć coś do wypróbowania. – deepblue

+1

Musisz ponowić 'git add', jeśli wprowadzisz zmiany, które chcesz uwzględnić w zatwierdzeniu. Jeśli zrobisz "status git", to znowu "git add.", A następnie "git status", powinieneś zauważyć różnicę. – mlibby

+0

I przez "wprowadź zmiany" Załączam zmiany do plików, zmieniając nazwy plików, usuwając pliki, dodając pliki ... wszystko, co może zmylić git. – mlibby

1

Inną rzeczą, aby pamiętać, git add dodaje zawartość tych plików do indeksu w momencie kiedy go uruchomić. Jeśli uruchomisz git add, a następnie zmienisz pliki, nowe zmiany nie pojawią się w indeksie.

+0

nie wykonano dodatkowej pracy między wywołaniami "dodaj" i "zatwierdz" – deepblue

0

Jeśli przenosić pliki i korzystać git add potem git tylko dodaje nową kopię, ale nie usuwa stary:

$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ mv from to 
$ git add . 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: to 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
$ git commit -m "..." 
$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Aby usunąć stare kopie należy również używać git rm:

$ git rm from 
rm 'from' 
$ git commit -m "..." 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

Ale ja nie rozumiem, dlaczego nie pozwalają popełnić tych zmian.

28

Krótka odpowiedź:

git push -u origin master

Dłuższa odpowiedź:

Ty najprawdopodobniej próbuje naciskać zobowiązuje się do oddziału, który nie został jeszcze utworzony - na przykład na nowo utworzonej Github repozytorium bez automatycznego utworzenia pliku README. Wywołując git push -u origin master, określasz zarówno pilota, do którego musisz przesłać, jak i (gałąź, która jest zwykle domyślnie git) i gałąź (master, również domyślna w typowych przypadkach). Zgodnie z dokumentacją git:

-u, --set-upstream Dla każdej branży, która jest na bieżąco lub z powodzeniem pchnął, dodać upstream (tracking) Znak używany przez git mniej argumentów -pull (1) i inne polecenia. Aby uzyskać więcej informacji na temat , zobacz gałąź ..merge w git-config (1).

Oznacza to, że po pomyślnym przebiegu tego polecenia, od tej pory będzie można po prostu użyć git push i git pull i będzie domyślnie origin master (z pewnym exceptions).

0

Faceci Miałem ten sam problem z Git.
Używam Cygwin na Windows 8.

  1. sprawdź czy masz repozytorium, które chcesz zaangażować się.
  2. check ścieżka

$ git remote -v # to jest, jak widać ścieżka

$ git remote set-url origin [email protected]:username/repos.git # ten sposób można ustawić nową ścieżkę zdalnie naciskać pliki do prawej repozytorium. $ git remote -v #, aby sprawdzić, czy ustawiono właściwą ścieżkę.

  1. $ git add.

4.

$ git push origin master 

Hope this helps