git:Il ramo è avanti di X si impegna
-
19-09-2019 - |
Domanda
Come fa questo in realtà è venuto in mente?
Sto lavorando in una repo da me al momento, questo è il mio flusso di lavoro:
- Modificare i file
- Commit
- Ripetere fino a 1-2 soddisfatto
- 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)
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 pull
ed 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.