Git
voortvarend
Zoeken…
Invoering
Na het wijzigen, staging en plegen van code met Git, is push vereist om je wijzigingen beschikbaar te maken voor anderen en je lokale wijzigingen over te dragen naar de repository-server. In dit onderwerp wordt besproken hoe je code correct kunt pushen met Git.
Syntaxis
- git push [-f | --force] [-v | --verbose] [<remote> [<refspec> ...]]
parameters
Parameter | Details |
---|---|
--dwingen | Overschrijft de externe ref zodat deze overeenkomt met uw lokale ref. Kan ervoor zorgen dat de externe repository commits verliest, dus wees voorzichtig . |
--verbose | Ren uitgebreid. |
<Remote> | De externe opslagplaats die de bestemming is van de push-bewerking. |
<Refspec> ... | Geef op welke externe ref moet worden bijgewerkt met welke lokale ref of welk object. |
Opmerkingen
Stroomopwaarts en stroomafwaarts
In termen van bronbeheer, ben je "downstream" wanneer je kopieert (kloon, checkout, etc.) vanuit een repository. Informatie stroomde "stroomafwaarts" naar u toe.
Wanneer u wijzigingen aanbrengt, wilt u ze meestal "stroomopwaarts" terugsturen zodat ze in die repository terechtkomen, zodat iedereen die uit dezelfde bron haalt met dezelfde wijzigingen werkt. Dit is meestal een sociale kwestie van hoe iedereen zijn werk kan coördineren in plaats van een technische vereiste voor broncontrole. U wilt uw wijzigingen in het hoofdproject opnemen, zodat u geen uiteenlopende ontwikkelingslijnen volgt.
Soms lees je over pakket- of releasemanagers (de mensen, niet de tool) die praten over het indienen van wijzigingen in "upstream". Dat betekent meestal dat ze de originele bronnen moesten aanpassen zodat ze een pakket voor hun systeem konden maken. Ze willen die wijzigingen niet blijven maken, dus als ze ze "stroomopwaarts" naar de oorspronkelijke bron sturen, zouden ze in de volgende release niet met hetzelfde probleem moeten omgaan.
( Bron )
Duwen
git push
zal uw code pushen naar uw bestaande upstream. Afhankelijk van de push-configuratie, zal het ofwel code pushen van je huidige branch (standaard in Git 2.x) of van alle branches (standaard in Git 1.x).
Geef externe repository op
Wanneer je met git werkt, kan het handig zijn om meerdere externe repositories te hebben. Om een externe repository op te geven waarnaar u wilt pushen, voegt u gewoon de naam toe aan de opdracht.
git push origin
Geef tak op
Zeg feature_x
om naar een specifieke branch te feature_x
:
git push origin feature_x
Stel de externe volgvertakking in
Tenzij de branch waaraan je werkt oorspronkelijk afkomstig is van een externe repository, zal het eenvoudigweg de eerste keer niet werken om git push
te gebruiken. Je moet het volgende commando uitvoeren om git te vertellen om de huidige branch naar een specifieke remote / branch combinatie te pushen
git push --set-upstream origin master
Hier is master
de filiaalnaam op de externe origin
. Je kunt -u
als afkorting voor --set-upstream
.
Pushen naar een nieuwe repository
Om te pushen naar een repository die je nog niet hebt gemaakt of die leeg is:
- Maak de repository op GitHub (indien van toepassing)
- Kopieer de URL die u heeft gekregen in de vorm
https://github.com/USERNAME/REPO_NAME.git
- Ga naar je lokale repository en voer
git remote add origin URL
- Om te controleren of het is toegevoegd, voer je
git remote -v
- Om te controleren of het is toegevoegd, voer je
- Voer
git push origin master
Uw code zou nu op GitHub moeten staan
Zie voor meer informatie Een externe opslagplaats toevoegen
Uitleg
Pushcode betekent dat git de verschillen van je lokale commits en remote analyseert en ze naar de stroomopwaartse weg schrijft. Wanneer push slaagt, worden uw lokale repository en externe repository gesynchroniseerd en kunnen andere gebruikers uw commits zien.
Zie Opmerkingen voor meer informatie over de concepten "stroomopwaarts" en "stroomafwaarts".
Forceer duwen
Soms, als je lokale wijzigingen hebt die niet compatibel zijn met externe wijzigingen (dat wil zeggen, als je de externe branch niet snel vooruit kunt spoelen, of de externe branch geen directe voorouder van je lokale branch is), is de enige manier om je wijzigingen door te drukken een force push .
git push -f
of
git push --force
Belangrijke aantekeningen
Hierdoor worden eventuele externe wijzigingen overschreven en komt uw afstandsbediening overeen met uw lokale.
Let op: met deze opdracht kan de externe repository commits verliezen . Bovendien wordt het ten zeerste afgeraden om een force-push uit te voeren als u deze externe opslagplaats met anderen deelt, omdat hun geschiedenis elke overschreven vastlegging behoudt, waardoor hun werk niet meer synchroon loopt met de externe opslagplaats.
Als vuistregel geldt dat u alleen push moet drukken wanneer:
- Niemand behalve u heeft de wijzigingen doorgevoerd die u probeert te overschrijven
- Je kunt iedereen dwingen om een nieuwe kopie te klonen na de gedwongen push en iedereen zijn wijzigingen erop laten toepassen (mensen kunnen je hiervoor haten).
Push een specifiek object naar een remote branch
Algemene syntaxis
git push <remotename> <object>:<remotebranchname>
Voorbeeld
git push origin master:wip-yourname
Duwt je master branch naar de wip-yourname
branch van oorsprong (meestal de repository van waaruit je hebt gekloond).
Verwijder externe tak
Het verwijderen van de externe vertakking is het equivalent van een leeg object erop duwen.
git push <remotename> :<remotebranchname>
Voorbeeld
git push origin :wip-yourname
Verwijdert de externe branch wip-yourname
In plaats van de dubbele punt te gebruiken, kunt u ook de vlag --delete gebruiken, die in sommige gevallen beter leesbaar is.
Voorbeeld
git push origin --delete wip-yourname
Push een enkele commit
Als je een enkele commit in je branch hebt die je naar een remote wilt pushen zonder iets anders te pushen, kun je het volgende gebruiken
git push <remotename> <commit SHA>:<remotebranchname>
Voorbeeld
Uitgaande van een git history zoals deze
eeb32bc Commit 1 - already pushed
347d700 Commit 2 - want to push
e539af8 Commit 3 - only local
5d339db Commit 4 - only local
om alleen commit 347d700 naar remote master te pushen, gebruik de volgende opdracht
git push origin 347d700:master
Het standaard push-gedrag wijzigen
Current werkt de branch op de externe repository bij die een naam deelt met de huidige werkende branch.
git config push.default current
Eenvoudig pusht naar de stroomopwaartse tak, maar werkt niet als de stroomopwaartse tak iets anders wordt genoemd.
git config push.default simple
Stroomopwaarts duwt naar de stroomopwaartse tak, ongeacht hoe het wordt genoemd.
git config push.default upstream
Matching duwt alle takken die overeenkomen op de lokale en de externe git config push.default stroomopwaarts
Nadat u de gewenste stijl hebt ingesteld, gebruikt u
git push
om de externe repository bij te werken.
Push tags
git push --tags
Pusht alle git tags
in de lokale repository die zich niet in de externe bevinden.