Palyginkite vietinį git filialą su nuotoliniu filialu?

Kaip matyti skirtumą tarp vietinio filialo ir nuotolinio filialo?

622
26 нояб. 26 m 2009-11-26 02:58 '09 at 2:58 am 2009-11-26 02:58
@ 13 atsakymų
204
26 нояб. atsakymas į meder omuraliev 26 lapkritis 2009-11-26 02:59 '09, 02:59 am 2009-11-26 02:59
 git diff <local branch> <remote>/<remote branch> 

Pavyzdžiui, git diff master origin/master arba git diff featureA origin/next

border=0

Žinoma, norint turėti nurodytą nuotolinio stebėjimo šaką, pirmiausia turite git fetch ; ir jūs turite turėti naujausią filialo informaciją nuotolinėje saugykloje.

1083
26 нояб. Jakub Narębski lapkričio 26 d. Atsakymas 2009-11-26 04:50 '09, 4:50 2009-11-26 04:50

Pirmasis tipas

 git branch -a 

gauti galimų filialų sąrašą. Išėjime galite pamatyti kažką panašaus

 * master remotes/main/master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/mt remotes/upstream/master remotes/upstream/mt 

Rodyti skirt

 git diff --stat --color remotes/main/master..origin/master git diff remotes/main/master..origin/master 
145
12 апр. atsakymas duotas xyz Bal 12 2012-04-12 22:26 '12, 22:26 pm 2012-04-12 22:26

Jei esate šiame filiale ir norite palyginti jį su kylančia šaka, kurią stebite, naudokite

 git diff @{upstream} 

Šį atsakymą pateikia versijos git dokumentacija

<branchname>@{upstream} , pvz. master@{upstream} , @{u}
@{upstream} priesaga prie filialo pavadinimo (trumpoji forma <branchname>@{u} ) reiškia šaką, kuriai filialas, nurodytas filialo branchname yra nustatytas viršuje (su nustatymų branch.<name>.remote ir branch.<name>.merge ). Dabartinio nėra numatytojo branchname .

52
16 июня '16 в 5:01 2016-06-16 05:01 atsakymą pateikė Andrew Grimm birželio 16 d., 16:01, 2016-06-16 05:01

Suprantu daug geresnę išvadą:

git diff <remote-tracking branch> <local branch>

kuris parodo, kas bus ištrinta, ir kas bus pridėta, jei spustelėsiu vietinį skyrių. Žinoma, tai yra tas pats dalykas, tik priešingai, bet man tai yra lengviau skaitoma, ir aš esu labiau įsitikinęs, kas nutiks.

37
14 апр. atsakymas pateikiamas 14 balandžio mėn. 2011-04-14 22:38 '11, 10:38 PM 2011-04-14 22:38

Lengvas būdas:

 git fetch git log -p HEAD..FETCH_HEAD 

Pirmiausia gausite pakeitimus iš numatytojo rezervo (šaltinio). Tai bus sukurta automatiškai repo klonavimo metu. Taip pat galite būti aiškūs: „ git fetch origin master .

Tada „git“ žurnalas naudojamas dabartiniam filialui palyginti su tuo, kurį pasirinkote. ( -p parinktis (generuoti pleistrą) rodo skirtumus.)

23
10 окт. Atsakymas duotas Brent Faust 10 oct. 2013-10-10 00:31 '13 - 0:31 2013-10-10 00:31

Leiskite savo darbo šakai vystytis ir norite atskirti vietinį plėtros padalinį ir nuotolinio kūrimo filialą, tokiu atveju sintaksė turėtų būti panaši į „ git diff remotes/origin/development..development pultą git diff remotes/origin/development..development
arba

git fetch origin git diff origin/development

8
19 февр. atsakymą pateikė Ratna Halder, vasario 19 d 2014-02-19 14:24 '14 at 14:24 2014-02-19 14:24

Taip aš tai darau.

 #To update your local. git fetch --all 

tai sukels viską iš konsolės, taigi, patikrindami skirtumą, jis palygins skirtumą su nuotoliniu filialu.

 #to list all branches git branch -a 

Pirmiau pateikta komanda parodys visus filialus.

 #to go to the branch you want to check difference git checkout <branch_name> #to check on which branch you are in, use git branch (or) git status 

Dabar galite patikrinti skirtumą taip.

 git diff origin/<branch_name> 

tai palygins jūsų vietinį filialą su nuotoliniu filialu

7
21 февр. atsakymas suteiktas naujai_pasaulis 21 vasaris 2017-02-21 09:27 '17 at 9:27 2017-02-21 09:27

Žinau, kad yra keletas atsakymų į šį klausimą, bet kai išbandžiau daugumą jų, aš gavau keistą klaidą.

Mano atveju, turiu antrą nuotolinį heroku skambutį, kuris nėra origin , ir kadangi jis nebuvo sinchronizuotas, šią klaidą gavau, kai bandžiau paleisti „ git diff master heroku/master :

fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.

ar tai yra bandant kitą požiūrį git diff master..heroku/master :

fatal: bad revision 'master..heroku/master'

Sprendimas aiškiai parodė nuotolinio naudotojo git fetch pavadinimo pavadinimą prieš paleisdamas „ git diff , mano atveju:

 $ git fetch heroku $ git diff master heroku/master 

Tikimės, kad ši problema padės kitiems.

4
16 марта '17 в 17:29 2017-03-16 17:29 atsakymas pateikiamas fagianioms kovo 17 d. 17 val. 17:29 2017-03-16 17:29

Čia pateikiamas trumpas atsakymas, jei lyginate dabartinį filialą ir ką norite git pull .

 git fetch git diff FETCH_HEAD 

Pirmoji komanda nustatys, kuris nuotolinis filialas atitinka jūsų dabartinį filialą. Šio skaičiavimo artefaktas yra FETCH_HEAD . Tada antroji komanda naudoja šį nuorodų palyginimą, palyginti su jūsų dabartinio filialo palyginimu.

4
07 июня '17 в 20:38 2017-06-07 20:38 atsakymas pateikiamas visišku padorumu birželio 07 d. 17, 20:38 2017-06-07 20:38

Jei norite matyti skirtumą, nes tik failų pavadinimai buvo pakeisti, naudokite:
git diff --name-status <remote-branch> <local-branch> ,
kitaip jis parodys visus skirtumus tarp dviejų filialų:
git diff <remote-branch> <local-branch>

3
02 нояб. atsakymą pateikė Sarvesh Kesharwani . 2016-11-02 11:11 '16 at 11:11 2016-11-02 11:11
 git difftool <commit> . 

Tai leis jums palyginti norimą įsipareigojimą su vietiniais failais. Nepamirškite taško gale (vietiniam).

Pavyzdžiui, jei norite palyginti vietinius failus su kai kuriais, atlikite:

git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.

(ir jei jums nereikia lyginti su naujais įsipareigojimais, jums nereikia gauti git

3
16 июля '17 в 15:18 2017-07-16 15:18 Atsakymą Izik pateikė 17 liepos 17 d. 15:18 2017-07-16 15:18

Pavyzdys

 git diff 'master' 'testlocalBranch' 

Jei naudojate redaktorių, pvz., Žiniatinklio, galite dešiniuoju pelės klavišu spustelėti failą, kad palygintumėte jį su filialu, ir įveskite / pasirinkite filialą.

2019

14 апр. atsakymas pateikiamas Kurkula 14 d. 2017-04-14 21:09 '17 at 9:09 pm 2017-04-14 21:09

Kiti klausimai apie žymę arba Užduoti klausimą