2012-03-13 19 views
19

Ho un server in cui c'è qualche configurazione che non so bene dove ho appena git pull e ottiene ciò che è in un repository github, quindi lo riavvio per l'implementazione.Git pull che non tira tutto

Il fatto è che c'è un commit che non è il mio ultimo, non è sul mio server. I file non sono in .gitignore. Come posso assicurare che un tiro, tirato un impegno?

io davvero non so come risolvere il problema, sto pensando di riavviare tutto :(

14:41][[email protected]] someserver_dir (master)$ git status 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: Gemfile 
# modified: Gemfile.lock 
# modified: config/assets.yml 
# modified: config/database.yml 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# randomfiles 
+0

Maggiori informazioni renderà più facile per rispondere. la tua domanda. Cosa fa 'git status' sho tu? Sei sul ramo giusto localmente? Ad esempio, se stai guardando il ramo 'master' sul server, sei stato sottoposto a' master' localmente? Che ne dici di 'git log origin/master..master'? –

+0

Il repository git è pubblico? In tal caso, fornire un URL. –

+0

non pubblico, lo stato git mi mostra che tutto è bello, c'è solo un ramo. – thiagofm

risposta

51

Se si vuole sempre la versione del server per riflettere un commit dal repo, probabilmente è meglio utilizzare git reset invece di git pull - in questo modo non hai mai richiama la funzionalità merge, ma invece impostare tutti i file esattamente quello che sono nella impegnano si reimposta a ad esempio:

git fetch origin master 
git reset --hard FETCH_HEAD 
+4

Ho sempre dimenticato questo comando, quindi continuo a tornare su questo thread. Volevo solo aggiungere che il cambio di "master" con qualsiasi altro nome di ramo funziona bene, se vuoi recuperare tutto da un ramo specifico. – mdegges

+0

si potrebbe anche reimpostare su un ramo specifico, quindi git reset --hard origine/master funziona anche, così come qualsiasi ramo specificato. (abbastanza divertente vedermi fare questa domanda 5 anni fa, ricordo che stavo gestendo un server remoto che usava git per implementare e finì in cattivo stato ... ahah) – thiagofm