Hoe kan ik de diff
zien tussen een lokale vestiging en een externe vestiging?
Antwoord 1, autoriteit 100%
Om remote tracking branches bij te werken, moet je eerst git fetch
typen en daarna:
git diff <mainbranch_path> <remotebranch_path>
Je kunt git branch -a
gebruiken om alle branches (lokaal en remote) weer te geven en dan de branchnaam uit de lijst te kiezen (verwijder gewoon remotes/
uit de remote branch naam.
Voorbeeld: git diff main origin/main
(waarbij “main” de lokale main branch is en “origin/main” een remote is, namelijk de origin en main branch.)
Antwoord 2, autoriteit 92%
git diff <local branch> <remote>/<remote branch>
Bijvoorbeeld git diff main origin/main
, of git diff featureA origin/next
Om de remote-tracking branchte hebbenmoet je eerst git fetch
hebben; en je hebt het nodig om up-to-date informatie te hebben over branches in de remote repository.
Antwoord 3, autoriteit 26%
Eerste type
git branch -a
om de lijst met beschikbare branches te krijgen. Op de uitvoer zie je misschien iets als
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
Toon vervolgens het verschil
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
Antwoord 4, autoriteit 25%
Als je in een bepaalde branch zit en je wilt je werkkopievergelijken met de upstream branch die je volgt, gebruik dan:
git diff @{upstream}
Als u uw huidige hoofd wilt vergelijken met de stroomopwaartse tak (bedankt @arijoon ):
git diff @ @{upstream}
Als uw stroomopwaartse niet is ingesteld, kunt u @{push}
gebruiken om een ​​diff tegen de tak te krijgen waaraan u bent ingesteld Druk op (ook van @arijoon ‘s commentaar):
git diff @{push}
Courtesy van dit antwoord , de git-documentatie voor Opgeven van revisies heeft:
<branchname>@{upstream}
, b.v.master@{upstream}
,@{u}
Het achtervoegsel
@{upstream}
naar een filiaal (korte vorm<branchname>@{u}
) verwijst naar
de tak die de tak gespecificeerd doorbranchname
is ingesteld om op te bouwen
Bovenaan (geconfigureerd metbranch.<name>.remote
enbranch.<name>.merge
).
Een ontbrekendebranchname
standaardinstellingen op de huidige.
Antwoord 5, Autoriteit 6%
Ik begrijp veel beter de uitvoer van:
git diff <remote-tracking branch> <local branch>
Dat laat me zien wat er wordt gevallen en wat er wordt toegevoegd als ik de lokale tak duw. Natuurlijk is het hetzelfde, alleen de omgekeerde, maar voor mij is het meer leesbaar, en ik kijk comfortabel naar wat er gaat gebeuren.
Antwoord 6, Autoriteit 4%
De eenvoudige manier:
git fetch
git log -p HEAD..FETCH_HEAD
Hiermee worden eerst de wijzigingen opgehaald van uw standaard afstandsbediening (oorsprong). Deze wordt automatisch aangemaakt wanneer u een repository kloont. Je kunt ook expliciet zijn: git fetch origin master
.
Vervolgens wordt git log
gebruikt om je huidige branch te vergelijken met degene die zojuist is opgehaald. (De optie -p
(patch genereren) laat de verschillenzien.)
Antwoord 7, autoriteit 2%
Dit is hoe ik het doe.
# To update your local.
git fetch --all
Dit haalt alles op van de remote, dus als je het verschil controleert, vergelijkt het het verschil met de remote branch.
# To list all branches
git branch -a
De bovenstaande opdracht geeft alle takken weer.
# 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
Nu kunt u de verschillen als volgt controleren.
git diff origin/<branch_name>
Hiermee wordt uw lokale vestiging vergeleken met de externe vestiging.
Antwoord 8, autoriteit 2%
TLDR: git diff <local branch> <remote branch>
Als ik Git in de shell gebruik, oriënteer ik me eerst door rond te kijken.
Hier is een commando om alle takken te tonen
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
Hier heb ik twee lokale takken (my-branch
en master
) en vier externe takken (some-branch
, some-other-branch
, master
, EN my-branch
).
Ook, het asterisk naast my-branch
signaleert het feit dat ik momenteel in die branche ben (u zou ook weten door de opdracht git status
dat te gebruiken zou uitgaan: On branch my-branch.
).
Opmerking: de externe takken in de git bash Shell wordt in het rood getoond terwijl de lokale in groen worden getoond.
Als u gewoon op afstand wilt tonen :
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
Om alleen lokale takken te tonen, kunt u in de verleiding komen om git branch -l
te gebruiken, maar dat is een heel ander opdracht. Naar Toon lokale takken Gebruik git branch
zonder opties
$ git branch
* my-branch
master
Om een ​​beoordeling van de standaardtakopties te voltooien, is er de --list
dat, in tegenstelling tot wat u zou verwachten, er is om filteren toe te staan. Gebruik het met een patroon als volgt:
$ git branch --list 'my*'
* my-branch
U kunt ook --list
combineren met de opties -a
EN -r
, maar zorg ervoor dat u uw patroon dienovereenkomstig aanpast (Denk eraan: externe takken beginnen met “afstandsbediening” ).
Voorbeeld:
# This will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# Better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
Documentatie: git-branch
Je kunt nu twee filialen vergelijkenvan alle beschikbare (je kunt ook twee lokale bewoners of twee afstandsbedieningen vergelijken).
Hier vergelijk ik de lokale met de externe my-branch
. Ze zijn gesynchroniseerd, dus ik krijg geen output:
$ git diff my-branch remotes/origin/my-branch
Opmerking: u moet de volledige namen van de takken opgeven zonder aanhalingstekens.
Ik kan de lokale my-branch
ook vergelijken met de externe master
. Hier krijg ik wat output, omdat de remote my-branch
niet is gemerged in de master branch.
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
Antwoord 9
Laat uw werkende tak ontwikkelingzijn en u wilt onderscheid maken tussen de lokale ontwikkelingstak en de externe ontwikkelingstak. In dat geval zou de syntaxis als volgt moeten zijn:
git diff remotes/origin/development..development
Of
git fetch origin
git diff origin/development
Antwoord 10
Als je het verschil wilt zien omdat alleen de namen van de bestanden zijn veranderd, gebruik dan:
git diff --name-status <remote-branch> <local-branch>
Anders zou dit alle verschillen tussen de twee takken tonen:
git diff <remote-branch> <local-branch>
Antwoord 11
Hier is een verkort antwoord als je je huidige branch vergelijkt met iets dat je wilt git pull
.
git fetch
git diff FETCH_HEAD
Het eerste commando zal uitzoeken welke remote branch overeenkomt met je huidige branch. Een artefact van die berekening in de FETCH_HEAD
referentie. Dan gebruikt het tweede commando die referentie om te vergelijken met wat je huidige branch heeft.
Antwoord 12
In mijn geval heb ik een tweede afstandsbediening genaamd heroku
die nietde origin
is en omdat deze niet synchroon liep, kreeg ik deze fout bij het uitvoeren van de git diff master heroku/master
:
fataal: dubbelzinnig argument ‘heroku/master’: onbekende revisie of pad niet in de werkboom.
Of dit bij het proberen van de andere benadering git diff master..heroku/master
:
fataal: slechte revisie ‘master..heroku/master’
De oplossing was het expliciet vermelden van de externe naam in git fetch
voordat git diff
werd uitgevoerd, in mijn geval:
$ git fetch heroku
$ git diff master heroku/master
Antwoord 13
git difftool <commit> .
Dit zal de commit die je wilt vergelijken met je lokale bestanden. Vergeet de punt op het einde niet (voor lokaal).
Bijvoorbeeld om je lokale bestanden te vergelijken met een bepaalde commit:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341 .
(en je hebt git fetch niet nodig, tenzij vergelijken met nieuwe commits nodig is)
Antwoord 14
Voorbeeld
git diff 'master' 'testlocalBranch'
Als u een editor zoals WebStormgebruikt, kunt u met de rechtermuisknop op een bestand, selecteer vergelijken met vertakking en typ/selecteer uw vertakking.
Antwoord 15
Ik vraag me af of er een verandering is in mijn masterbranch…
-
Eerst moet je je branch wijzigen (als je al onder deze branch zit, hoef je dit niet te doen!):
git checkout master
-
Je kunt met dit commando zien welk bestand is gewijzigd onder je master branch:
git status
-
Laat de takken zien
git branch -a
- meester
afstandsbedieningen/oorsprong/master
- meester
-
Zoek de verschillen
git diff origin/master
Antwoord 16
Probeer:
git diff origin HEAD
Ervan uitgaande dat je de HEAD
van je huidige lokalebranch wilt vergelijken met de oorsprong.
En ervan uitgaande dat je op het lokale filiaal zit. 🙂
Antwoord 17
Dit is vrij eenvoudig. U kunt gebruiken: git diff remote/my_topic_branch my_topic_branch
Waar my_topic_branch
je onderwerpbranch is.
Antwoord 18
Stel dat je je origin
al hebt ingesteld als de externe repository. Dan,
git diff <local branch> <origin>/<remote branch name>
Antwoord 19
Voer in Visual Studio 2019gewoon ophalen. Gebruik geen trekcode.
Dit is wat ik deed. Ik heb het onderstaande toegevoegd aan het bestand .gitconfigzodat ik Beyond Compare
File location: C:\Users\[username]\.gitconfig
Hieronder toegevoegd
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
Open een opdrachtprompt en ga naar de werkmap. Ik gaf het onderstaande om de lokale devbranch te vergelijken met de remote devbranch:
git difftool dev origin/dev --dir-diff
Dit zal Beyond Compare openen en mappen openen die bestanden hebben die verschillen. Als er geen wijzigingen zijn, wordt Beyond Compare niet gestart.
Antwoord 20
Instellen
git config alias.udiff 'diff @{u}'
HEAD verwisselen met HEAD@{upstream}
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
Verschillen met een willekeurige externe vertakking
Dit beantwoordt de vraag in uw kop (“zijn afstandsbediening”); als je wilt differentiëren tegen “a remote” (die niet is geconfigureerd als de upstream voor de branch), moet je deze direct targeten. U kunt alle externe vertakkingen zien met het volgende:
git branch -r
U kunt alle geconfigureerde afstandsbedieningen zien met het volgende:
git remote show
U kunt de vertakkings-/trackingconfiguratie voor een enkele afstandsbediening (bijv. oorsprong) als volgt bekijken:
git remote show origin
Zodra je de juiste oorsprongstak hebt bepaald, doe je gewoon een normale diff 🙂
git diff [MY_LOCAL] MY_REMOTE_BRANCH
Antwoord 21
In Android Studiois het mogelijk om het verschil tussen branches te zien met behulp van een grafische interface.
Selecteer uw externe tak en en “Vergelijk met huidig” in de lijst. Vanaf dat moment kunt u het tabblad bestanden selecteren om te zien of er bestanden zijn met een inhoudsverschil tussen beide takken. Als er geen bestand wordt gezien, zijn beide takken up-to-date met elkaar.
Antwoord 22
Voor het tellen van de verschillende commits van HEAD naar origin/master:
git remote update
git rev-list HEAD..origin/master --count
Om de huidige HEAD commit hash-ID te krijgen:
git rev-parse HEAD
Om de hash-ID van origin/master commit op afstand te krijgen:
git rev-parse origin/master
Antwoord 23
Als u TortoiseGitgebruikt (het biedt een GUI voor Git), kunt u met de rechtermuisknop op uw Git-repositorymap klikken en klik vervolgens op Git Sync.
U kunt uw vestigingen selecteren om te vergelijken als ze niet zijn geselecteerd. Dan kun je de verschillen commit bekijken. Je kunt ook met de rechtermuisknop op een vastlegging klikken en dan Vergelijken met vorige revisieom de verschillen naast elkaar te bekijken.