Cum pot vizualiza orice local se angajează am'am făcut, că am't a fost încă împinsă la depozit la distanță? Ocazional, git status
va imprima sucursalei este X se angajează înainte de `origine/de master, dar nu întotdeauna.
Este aceasta o problemă cu instalarea de Git, sau imi scapa ceva?
Dacă doriți să vedeți toate comite pe toate ramurile care sunt't împins încă, ai putea fi în căutarea pentru ceva de genul asta:
git log --branches --not --remotes
Și dacă doriți doar pentru a vedea cele mai recente comite pe fiecare ramură, și ramura de nume, acest lucru:
git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
Puteți afișa toate se angajează pe care le au la nivel local, dar nu amonte cu
git log @{u}..
@{u} " sau " @{amonte}
înseamnă în amonte ramura de ramura curentă (a se vedea git rev-analiza --help
sau git ajuta revizii
pentru detalii).
Aceasta a lucrat pentru mine:
git cherry -v
Cum este indicat la Git: Vezi toate unpushed se angajează sau se angajează că nu sunt într-o altă ramură.
La îndemână git alias pentru căutarea unpushed se angajează în curent ramura:
alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline
Ce practic face:
git log origin/branch..branch
dar determină, de asemenea, actualul nume de ramură.
Toate celelalte răspunsuri vorbesc despre "din amonte" (ramura nu se trage de la). Dar un filiala locală poate apăsați pentru a diferite ramura decât cea a trage de la.
"maestrul" nu s-ar putea împinge la distanță de urmărire branch "origine/master". La *amonte* ramura pentru "maestrul" s-ar putea fi de origine/de master, dar s-ar putea împinge la distanță de urmărire ramură
origine/xxx "sau chiar" anotherUpstreamRepo/yyy. Acestea sunt stabilite de ramură.*.pushremote pentru actuala sucursală împreună cu
global remote.pushDefault` valoare.
E care la distanță de urmărire ramură care contează atunci când caută unpushed se angajează: una care urmărește la filiala de la distanță
unde filiala locală ar fi împins la.
Anii la filiala de la distanță poate fi, din nou, de origine/xxx "sau chiar" anotherUpstreamRepo/yyy
.
<branch>@{push}
A se vedea comite 29bc885, comite 3dbe9db, comite adfe5d0, comite 48c5847, comite a1ad0eb, comite e291c75, comite 979cb24, comite 1ca41a1, comite 3a429d0, comite a9f9f8c, comite 8770e6f, comite da66b27, comite f052154, comite 9e3751d, comite ee2499f [toate din 21 Mai 2015], și comite e41bf35 [01 Mai 2015] de Jeff King (peff
).
(Fuzionat cu Junio C Hamano -- gitster
-- în comite c4a8354, 05 Jun 2015)
Comite adfe5d0 explică:
sha1_name
: punerea în aplicare a@{push}
prescurtare
Într-un triunghiular de flux de lucru, fiecare ramură poate avea două puncte distincte de interes:
@{amonte}
care, in mod normal trage de la, și de destinația pe care în mod normal apasă. Nu e't o prescurtare pentru acesta din urmă, dar's util de a avea.
De exemplu, poate doriți să știți care angajează ai't împins încă:
git log @{push}..
Sau ca o mai complicate de exemplu, imaginați-vă că, în mod normal, trage modificările de origine/master (care a stabilit ca
@{amonte}
), și împingeți-modificări de personal furculita (de exemplu, camyfork/subiect
). Te poate împinge la furca de la mai multe utilaje, care necesită să vă integra modificările la push destinație, mai degrabă decât în amonte. Cu acest patch-uri, puteți face:
git rebase @{push}
mai degrabă decât tastarea numele complet.
Comite 29bc885 adaugă:
pentru-fiecare-ref
: accept "%(push)
" format
Doar ca am "
%(în amonte)
" pentru a raporta "@{amonte}
" pentru fiecare arbitru, acest patch adaugă "%(push)
" pentru a se potrivi "@{push}
". Acesta susține același urmărire format modificatori ca în amonte (pentru că poate doriți să știți, de exemplu, care ramurile au angajează să împingă).
Dacă doriți să vedeți cât de multe comite filiale locale sunt față/spate în comparație cu ramura sunteți împingându-a:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
Ai putea incerca....
gitk
Știu că nu este o pură opțiune de linie de comandă, dar dacă aveți instalat și sunt pe o interfata grafica a sistemului it's o modalitate foarte bună de a vedea exact ceea ce cauti, plus un întreg lot mai mult.
(M-am'm de fapt un fel de surprins ca nimeni nu a menționat-o până acum.)
Am avut o comite făcut anterior, nu împins la orice sucursală, nici la distanță, nici local. Doar comis-o. Nimic de la alte răspunsuri lucrat pentru mine, dar cu:
git reflog
Acolo mi-am găsit comis-o.
Eu folosesc următoarele alias pentru a obține lista de fișiere (și statutului) care au fost comise, dar am't a fost împins (pentru ramura curentă)
git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"
apoi, doar să faceți:
git unpushed
Cred că cel mai tipic mod de a face acest lucru este de a rula ceva de genul:
git cherry --abbrev=7 -v @{upstream}
Cu toate acestea, eu personal prefer funcționare:
git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..
care arată comite de toate ramuri care nu sunt unite în amonte, plus ultimul comite în amonte (care apare ca un nodul rădăcină pentru toate celelalte comite). Îl folosesc atât de des, încât am creat alias `noup pentru ea.
git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'
Îți sugerez să te duci sa vezi script https://github.com/badele/gitcheck am codat acest script pentru a verifica într-o singură trecere toate git repositories, și arată care nu a comis și care nu a împins/tras.
Aici o mostră de rezultat
Acesta nu este un bug. Ceea ce, probabil, văzând starea git, după eșecul auto-merge în cazul în care modificările de la distanță sunt preluate, dar încă nu au fuzionat.
Pentru a vedea angajează între repo locală și la distanță a face acest lucru:
git fetch
Acest lucru este 100% sigur și nu va bate joc de dumneavoastră copia de lucru. Dacă există modificări git status
wil show `X se angajează față de origine/de master.
Acum puteți arăta jurnal se angajează ca sunt din telecomanda dar nu și în cele locale:
git log HEAD..origin
Nu există instrument numit unpushed, care scanează toate Git, Mercurial și Subversiune repos specificate în directorul de lucru și afișează lista de ucommited fișiere și unpushed se angajează. Instalarea este simplă sub Linux:
$ easy_install --user unpushed
sau
$ sudo easy_install unpushed
pentru a instala la nivel de sistem.
Utilizare este simplu:
$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)
Vezi unpushed --helpsau [descriere oficială][2] pentru mai multe informații. Ea are, de asemenea, un cronjob script
unpushed-notifica pentru notificare pe ecran de uncommited și unpushed modificări.
Dacă numărul se angajează că nu au fost împins afară este o singură cifră, care de multe ori este, cel mai simplu mod este:
$ git checkout
git răspunde prin a vă spune că sunt "înainte N comite" relativ la origine. Deci, acum ține doar de faptul că numărul în minte atunci când vizualizarea busteni. Daca're "înainte de 3 comite", în top 3 se angajează în istorie sunt încă privat.