2012-12-18 14 views
5

Próbuję utworzyć zdalne repozytorium git (które zainicjowałem opcją --bare) i przesłać do niego kilka plików źródłowych.docelowy katalog pusty po git push do zdalnego

Mam lokalnego repo git i gołe Pilot:

[email protected]:~/notebooks$ cat .git/config 
[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
[branch "master"] 
[remote "nbcsm"] 
    url = ssh://[email protected]/home/ubuntu/notebooks/.git 
    fetch = +refs/heads/*:refs/remotes/nbcsm/* 

stworzyłem lokalnego repo z: 1. git init 2. git add *.ipynb 3. `git commit -m„pierwszy import ipython Notatniki "

Następnie zweryfikowałem, czy moje lokalne repozytorium śledzi w nim pliki, używając vi, aby edytować plik * .ipynb, a następnie uruchamiając git status. git nie widzi zmienionego pliku.

Jednak kiedy wykonać git push nbcsm master push pojawia się, aby odnieść sukces, ale katalog docelowy na moim komputerze zdalnym/instancji jest pusta (czyli nie zawiera plików próbuję naciskać na pilocie):

[email protected]:~/notebooks$ git push nbcsm master 
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Counting objects: 11, done. 
Compressing objects: 100% (9/9), done. 
Writing objects: 100% (9/9), 2.49 KiB, done. 
Total 9 (delta 5), reused 0 (delta 0) 
To ssh://[email protected]/home/ubuntu/notebooks/.git 
7a50f44..295a4fa master -> master 
[email protected]:~/notebooks$ 

sprawdzeniu, że pliki nie są na pilota:

[email protected]:~/notebooks$ ssh [email protected] 
Enter passphrase for key '/home/ubuntu/.ssh/id_rsa': 
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64) 

* Documentation: https://help.ubuntu.com/ 

System information as of Tue Dec 18 16:46:23 UTC 2012 

System load: 0.02    Processes:   63 
Usage of /: 41.7% of 7.97GB Users logged in:  0 
Memory usage: 12%    IP address for eth0:REMOTE-IP 
Swap usage: 0% 

Graph this data and manage this system at https://landscape.canonical.com/ 

Get cloud support with Ubuntu Advantage Cloud Guest 
http://www.ubuntu.com/business/services/cloud 
*** /dev/xvda1 will be checked for errors at next reboot *** 

[email protected]:~$ sudo find /home/ubuntu/ -name "*.ipynb" 
/home/ubuntu/notebooks/Untitled0.ipynb 
[email protected]:~$ 

Istnieje około 12 * .ipynb pliki z lokalnego repo, które nie są pchane. Jestem prawie pewien, że jest to problem konceptualny, a nie składniowy, ale przeczytałem i ponownie przeczytałem rozdział Remote w książce O'Reilly Git i jestem zdumiony.

Odpowiedz

4

git push nie będzie, chyba że wyraźnie powiesz to za pomocą jednego ze skryptów przechwytujących, zaktualizuj katalog roboczy na zdalnym końcu. Zwykle, jeśli oddział, który wypisałeś na odległym końcu, jest jednym z oddziałów, które wypychasz, będzie głośno narzekał i nie będzie naciskał. Jednak to ostrzeżenie może być wyłączone, co pozwala na naciśnięcie, ale nadal nie aktualizuje katalogu roboczego. Możesz uruchomić git reset --hard HEAD w swoim zdalnym repozytorium (lub git checkout master lub coś podobnego) lub skonfigurować hak post-receive, aby zrobić to za Ciebie lub coś. Prawdopodobnie lepiej jest mieć zdalne repozytorium - być może wprowadzając trzecie repozytorium, aby repozytorium rozwoju mogło tam popchnąć, a repozytorium produkcyjne może od niego odciągnąć.

Edycja: OK, teraz jest to inne pytanie, ponieważ wspomniałeś, że twoje zdalne repozytorium zostało utworzone pod numerem --bare. Jeśli twoje zdalne repozytorium jest puste, nie powinieneś oczekiwać, że zobaczysz tam swoje pliki w "normalny" sposób, ponieważ repozytorium nie ma powiązanego katalogu roboczego. Zamiast zobaczysz kilka podkatalogów (jak branches, hooks, info, objects i refs) i pliki (config, description, HEAD), które normalnie można zobaczyć pod .git w zakaz nagiej repozytorium. Nadal powinieneś być w stanie uruchomić git log i inne polecenia (np. git show HEAD:<some_file>), aby sprawdzić, czy są tam twoje dane.

+0

Bardziej kompletne wyjaśnienie, zarówno dla repertuarów nagich, jak i nagich, niż moje. +1 – VonC

1

git status że git widzi plik zmieniony.

git status powinieneś powiedzieć, że żaden plik nie jest modyfikowany!

git status 
# On branch master 
nothing to commit (working directory clean) 

Jeśli Wymienia zmodyfikowane pliki, trzeba dodać i zobowiązać te pliki pierwszy przed popychanie:

git add . 
git commit -m "my commit message" 
git push -u nbcsm master 

Plus, upewnij się i sprawdź co oddział jest wyrejestrowany po stronie serwera :

cd /home/ubuntu/notebooks 
git branch 

Nie powinieneś być w stanie naciskać na repozytorium bez ostrzeżenia bez ostrzeżenia.
Ale ponieważ nie masz, możliwe jest, że inna gałąź jest wyrejestrowana.