2012-12-18 10 views
5

Sto tentando di creare un repo git remoto, (che ho inizializzato con l'opzione --bare) e di inviarvi alcuni file sorgente.directory di destinazione vuota dopo git push su remoto

Ho un repository git locale e una remota nuda:

[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/* 

ho creato il repo locale con: 1. git init 2. git add *.ipynb 3. `git commit -m "prima importazione di IPython Notebook "

Ho quindi verificato che il mio repository locale ha tracciato i file in esso utilizzando vi per modificare un file * .ipynb e quindi eseguendo git status. git vede il file modificato.

Tuttavia, quando eseguo git push nbcsm master la spinta sembra essere successo, ma la directory di destinazione sul mio computer/istanza remota è vuoto (cioè non contiene i file che sto cercando di spingere al telecomando):

[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$ 

Verificando che i file non sono remote:

[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]:~$ 

ci sono circa 12 * .ipynb file nel repository locale che non vengono spinte. Sono abbastanza certo che si tratta di un problema concettuale piuttosto che di una sintassi, ma ho letto e riletto il capitolo Remote nel libro O'Reilly Git e sono perplesso.

risposta

4

git push, a meno che non lo comunichi esplicitamente tramite uno degli script di aggancio, aggiorna la directory di lavoro sul terminale remoto. Di solito, se il ramo che hai controllato sul lato remoto è uno dei rami che stai spingendo, si lamenterà rumorosamente e rifiuterà la spinta. Tuttavia, tale avviso può essere disabilitato, consentendo di eseguire il push, ma non aggiornerà comunque la directory di lavoro. Puoi eseguire git reset --hard HEAD nel tuo repository remoto (o git checkout master o qualcosa di simile), o impostare un hook post-receive per farlo per te o qualcosa del genere. Probabilmente è meglio avere il repository remoto in condizione di essere scoperto, possibilmente introducendo un terzo repository in modo che il repository di sviluppo possa spingerlo e il repository di produzione possa trarne vantaggio.

Modifica: Ok, ora questa è una domanda diversa, poiché si menziona il repository remoto creato con --bare. Se il tuo repository remoto è nullo, non dovresti aspettarti di vedere i tuoi file lì in un modo "normale", perché un repository nudo non ha una directory di lavoro ad esso associata. Invece si vedrà un paio di sottodirectory (come branches, hooks, info, objects e refs) e file (config, description, HEAD) che normalmente vedere sotto .git in un repository non-nudo. Dovresti comunque essere in grado di eseguire git log e altri comandi (come git show HEAD:<some_file>) per verificare che i tuoi dati siano lì, comunque.

+0

Spiegazione più completa, sia per repository non bare e bare, che miniera. +1 – VonC

1

git status che git vede il file modificato.

git status dovrebbe dirti che nessun file è in fase di modifica!

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

Se elenca i file modificati, è necessario aggiungere e impegnarsi quei file prima, prima di spingere:

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

Inoltre, assicurarsi e verificare che ramo è verificato sul lato server :

cd /home/ubuntu/notebooks 
git branch 

Non si dovrebbe essere in grado di passare a un repository non nudo senza un avviso.
Ma poiché non ce l'hai, è possibile che venga estratto un altro ramo.