Domanda

Come fa questo in realtà è venuto in mente?

Sto lavorando in una repo da me al momento, questo è il mio flusso di lavoro:

  1. Modificare i file
  2. Commit
  3. Ripetere fino a 1-2 soddisfatto
  4. Push-to-master

Quindi quando faccio un git status mi dice che il mio ramo è avanti di X si impegna (presumibilmente lo stesso numero di commit che ho fatto).È perché quando si preme il codice in realtà, non aggiornare il file memorizzati localmente (in .git cartelle)? git pull sembra 'fix' questo strano messaggio, ma io sono ancora curioso di sapere perché succede, forse sto usando git sbagliato?


tra cui quello di ramo viene stampato il messaggio

Il mio ramo locale è avanti di master

dove ti spingi/tira la corrente del ramo

Sto spingendo su GitHub e tirando a qualsiasi computer mi capita di essere al lavoro su a che punto nel tempo, la mia copia locale è sempre completamente aggiornato, come io sono l'unico a lavorare su di esso.

in realtà, non di controllo remoto repo

Che è quello che ho pensato, ho pensato che avrei assicurarsi che la mia comprensione di esso è stata corretta.

state passando alcuni argomenti aggiuntivi ad esso?

Non quelle che posso vedere, magari c'è qualche divertente config sul mio fine?

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
È stato utile?

Soluzione

Se questo messaggio viene visualizzato dopo aver fatto un git pull remote branch, prova a seguire il tutto con un git fetch.(In alternativa, eseguire git fetch -p potare eliminati i rami dai repo)

Fetch sembra di aggiornare la rappresentazione locale di filiali remote, che non necessariamente succede quando si fa un git pull remote branch.

Altri suggerimenti

Utilizzare

git pull --rebase

L' --rebase opzione significa che git spostare il commit locale a parte, la sincronizzazione con il telecomando e poi tenta di applicare il commit dal nuovo stato.

Utilizzare questi 3 semplici comandi

Passo 1 : git checkout <branch_name>

Passo 2 : git pull -s recursive -X theirs

Passo 3 : git reset --hard origin/<branch_name>

Ulteriori dettagli : https://stackoverflow.com/a/39698570/2439715

Godere.

Penso che tu sia una cattiva lettura del messaggio — il ramo non è davanti master, è è master.E ' davanti a origin/master, che è un monitoraggio remoto ramo che registra lo stato del repository remoto dal tuo ultimo push, pull, o fetch.È che dice esattamente ciò che hai fatto;hai davanti il telecomando e si ricorda di spingere.

Qualcuno ha detto che potrebbe essere una cattiva lettura del tuo messaggio, che non lo sono.Questo problema ha a che fare con il vostro <project>/.git/config file.Sarà una sezione simile a questa:

[remote "origin"]
    url = <url>
    fetch = +refs/heads/*:refs/remotes/origin/*

Se si rimuove il recupero dalla linea del tuo progetto .git/config file ti fermare "Il ramo davanti 'origin/master' da N commette." fastidio che si verificano.

O almeno così spero.:)

Ho avuto questo problema sul mio palco server dove faccio solo tira.E l'hard reset mi ha aiutato a pulire la TESTA per lo stesso telecomando.

git reset --hard origin/master

Così ora ho di nuovo:

On branch master
Your branch is up-to-date with 'origin/master'.

Nel mio caso è stato perché ho acceso la master utilizzando

 git checkout -B master

Solo per estrarre la nuova versione di esso invece di

 git checkout master

Il primo comando reimposta la testa di master la mia ultima si impegna

Ho usato

git reset --hard origin/master

Per la correzione

Sono andato attraverso ogni soluzione su questa pagina, e fortunatamente @anatolii-pazhyn commentato perché la sua soluzione è stata quella che ha funzionato.Purtroppo non ho abbastanza reputazione per dare un voto positivo a lui, ma vi consiglio di provare la sua soluzione:

git reset --hard origin/master

Che mi ha dato:

HEAD is now at 900000b Comment from my last git commit here

Ho anche consigliamo di:

git rev-list origin..HEAD
# to see if the local repository is ahead, push needed

git rev-list HEAD..origin
# to see if the local repository is behind, pull needed

È inoltre possibile utilizzare:

git rev-list --count --left-right origin/master...HEAD
# if you have numbers for both, then the two repositories have diverged

In bocca al lupo

Ho avuto questo stesso problema su una macchina Windows.Quando mi sono imbattuto in un git pull origin master comando, vorrei avere il "davanti 'origin/master" di X si impegna" avvertimento.Ho scoperto che se ho invece corse git pull origin e NON specificare il ramo, quindi avrei più visualizzato il messaggio di avviso.

Si ricorda solo le differenze tra la corrente del ramo e il ramo che si occupa della traccia corrente.Si prega di fornire ulteriori informazioni, tra cui quello di ramo viene stampato il messaggio e dove spingere/tirare il ramo attuale.

Anche se questa domanda è un po ' vecchio...ero in una situazione simile e la mia risposta qui mi ha aiutato a risolvere un problema simile l'ho avuto

Provare prima con push -f o opzione force

Se non funziona è possibile che (come nel mio caso) il repository remoti (o meglio, i riferimenti agli archivi remoti che git remote -v potrebbero non essere sempre aggiornati.

Esito di sopra push sincronizzato il tuo locale/ramo con telecomando/ramo tuttavia, la cache del repository locale mostra ancora commit precedente (locale/filiale di ...disponibili solo singolo commit è stato spinto) come responsabile.

Per confermare la di sopra di clonare il repository in una posizione diversa e provare a confrontare locali/ramo di TESTA e remoto/ramo di TESTA.Se entrambi sono uguali allora probabilmente siete di fronte al problema ho fatto.

Soluzione:

$ git remote -v
github  git@github.com:schacon/hw.git (fetch)
github  git@github.com:schacon/hw.git (push)
$ git remote add origin git://github.com/pjhyett/hw.git
$ git remote -v
github  git@github.com:schacon/hw.git (fetch)
github  git@github.com:schacon/hw.git (push)
origin  git://github.com/pjhyett/hw.git (fetch)
origin  git://github.com/pjhyett/hw.git (push)
$ git remote rm origin
$ git remote -v
github  git@github.com:schacon/hw.git (fetch)
github  git@github.com:schacon/hw.git (push)

Ora fare un push -f come segue

git push -f github master ### Nota il comando non dispone di origin più!

Fare un git pull ora git pull github master

su git status ricevere

# On branch master

nothing to commit (working directory clean)

Spero che questo utile per qualcuno come il numero di visualizzazioni è così alta che la ricerca di questo errore, quasi sempre, le liste di questo thread in alto

Fare riferimento anche gitref per i dettagli

In realtà ho avuto questo accada quando stavo facendo un interruttore/checkout con TortiseGIT.

Il mio problema era che avevo creato il ramo basato su un altro ramo locale.Ha creato un "merge" di entrata in /.git/config che sembrava qualcosa di simile a questo:

[branch "web"]
    merge = refs/heads/develop
    remote = gitserver

Dove ogni volta che ho acceso il "web" del ramo, è stato a dirmi che è stato 100+ impegna davanti a sviluppare.Beh, io non ero più impegnandosi a sviluppare, in modo che era vero.Sono stato in grado di semplicemente rimuovere la voce e sembra funzionare come previsto.Il corretto tracciamento con il telecomando rif invece di lamentarsi di essere dietro lo sviluppo di un ramo.

Come Vikram detto, questo Overflow dello Stack del thread è il primo risultato in Google durante la ricerca di questo problema, così ho pensato di condividere la mia situazione e la soluzione.

Quindi quando faccio un git status mi dice che il mio ramo è avanti di X si impegna (presumibilmente lo stesso numero di si impegna che ho fatto).

La mia esperienza è in un ambiente della squadra con molti rami.Noi, in questa nostra caratteristica rami (in locale cloni) ed è stato uno di quelli che git status mi è stato 11 commette in avanti.La mia ipotesi di lavoro, come la questione dell'autore, è stato il +11 era da si impegna mia.

Si è scoperto che avevo tirato i cambiamenti dal comune develop filiale nella mia funzione di ramo molte settimane prima, ma si è dimenticato!Quando ho rivisitato il mio locale funzione ramo di oggi e ha fatto un git pull origin develop il numero è balzata al +41 commette in avanti.Molto lavoro è stato fatto in develop e così il mio locale funzione ramo è stato ancora più avanti della funzione di ramo i origin repository.

Quindi, se si ottiene questo messaggio di pensare a qualsiasi tira/fonde si potrebbe avere fatto da altri rami (della propria o di altri) si ha accesso.Il messaggio di segnali è necessario git push quelli pulled modifiche al origin repo ("tracking ramo') dal tuo repository locale per ottenere le cose sincronizzato fino.

Le risposte che suggeriscono git pull o git fetch sono corrette.
Il messaggio viene generato quando git status vede una differenza tra .git/FETCH_HEAD e .git/refs/remotes/<repository>/<branch> (ad es. .git/refs/remotes/origin/master).

L'ultimo record del file la TESTA dall'ultima operazione di recupero (per il repository/ramo).Facendo git fetch aggiornamenti entrambi i file per la filiale di TESTA corrente.
Naturalmente, se non c'è nulla da recuperare (perché il repository locale è già aggiornato) e poi .git/FETCH_HEAD non cambia.

Vorrei ribadire la stessa, come indicato da @Mariano Zburlia sopra.Ha funzionato per me e direi lo stesso per gli altri.

git pull origin develop

dovrebbe essere seguita da $ git pull --rebase.

Questo consente di rimuovere i commenti a venire fino al $ git status dopo l'ultimo tiro.

git fetch per risolvere questo per voi

Se la mia comprensione è corretta, il locale (cache) origin/master non è aggiornato.Questo comando aggiorna i repository di stato dal server.

Questo ha funzionato per me

git reset --hard origin/master

L'uscita deve apparire come

On branch dev HEAD is now at ae1xc41z Last commit message

Se questo messaggio viene visualizzato dopo aver fatto un commit per si annulla la registrazione di file nel ramo, provare a fare qualche modifica in qualsiasi file ed eseguire il commit.A quanto pare non è possibile rendere unico il commit che comprende solo untracking precedentemente rilevate file.Infine, questo post mi ha aiutato a risolvere tutto il problema https://help.github.com/articles/removing-files-from-a-repository-s-history/.Ho dovuto rimuovere file dal repository storia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top