The git fetch
command downloads committs, files, and refs from a remote repository into your local repo. Az, amit csinálsz, amikor látni akarod, hogy mindenki más dolgozik. Hasonló a svn update
– hoz, mivel lehetővé teszi, hogy megnézze, hogyan fejlődött a központi történelem, de nem kényszeríti arra, hogy ténylegesen egyesítse a változásokat a tárolóba. A Git leválasztja a meglévő helyi tartalomból származó tartalmat; ez egyáltalán nem befolyásolja a helyi fejlesztési munkát., A beolvasott tartalmat a git checkout
paranccsal kell kifejezetten ellenőrizni. Ez teszi lekérése biztonságos módja annak, hogy vizsgálja felül elkötelezi magát, mielőtt integrálja őket a helyi adattár.
tartalom távoli repo-ról történő letöltésekor a git pull
és git fetch
parancsok állnak rendelkezésre a feladat végrehajtásához. A git fetch
a két parancs “biztonságos” verzióját tekintheti meg. Letölti a távoli tartalmat, de nem frissíti a helyi repo működési állapotát, így az aktuális munkája érintetlen marad., git pull
az agresszívabb alternatíva; letölti az aktív helyi fióktelep távoli tartalmát, és azonnal végrehajtja a – ot, hogy létrehozzon egy merge commit-et az új távoli tartalomhoz. Ha folyamatban lévő változások vannak, ez konfliktusokat és az egyesítési konfliktusmegoldási folyamat elindítását fogja eredményezni.
hogyan működik a git fetch távoli ágakkal
hogy jobban megértsük, hogyan működik a git fetch
a művek megvitatják, hogyan szervezi a Git és tárolja a kötelezettségvállalásokat., A színfalak mögött, az adattár ./.git/objects
könyvtárában a Git tárolja az összes kötelezettséget, helyi és távoli. A Git távol tartja magát, a helyi fióktelep pedig elkülönül a fióktelepek használatával. A helyi fióktelepek refs-jét a ./.git/refs/heads/
tárolja. A git branch
parancs végrehajtása kiírja a helyi fióktelep refs listáját. A következő példa agit branch
kimenetre néhány demo ágnévvel.,
git branch
master
feature1
debug2
a /.git/refs/heads/
könyvtár tartalmának vizsgálata hasonló kimenetet tárna fel.
ls ./.git/refs/heads/
master
feature1
debug2
a távoli ágak olyanok, mint a helyi ágak, kivéve, ha valaki más tárolójából követ el. A távoli ágakat a távirányító előtagja jelöli, amelyhez tartoznak, hogy ne keverje össze őket a helyi ágakkal. A helyi fióktelepekhez hasonlóan a Git rendelkezik a távoli ágak refs-jével is. A Remote branch refs a ./.git/refs/remotes/
könyvtárban él., A következő példakód-kódrészlet a távoli repo kényelmes elnevezése után látható ágakat mutatja:
git branch -r
# origin/master
# origin/feature1
# origin/debug2
# remote-repo/master
# remote-repo/other-feature
Ez a kimenet megjeleníti a korábban megvizsgált helyi ágakat, de most a origin/
előtaggal jeleníti meg őket. Ezenkívül most láthatjuk a remote-repo
előtaggal ellátott távoli ágakat. Akkor nézd meg a távoli ág, mint egy helyi, de ez hozza meg a családi HEAD
állapot (csakúgy, mint megnézni egy régi elkövetni). Úgy gondolhatsz rájuk, mint csak olvasható ágakra., A távoli ágak megtekintéséhez egyszerűen adja át a -r
zászlót a git branch
parancsra.
a távoli ágakat a szokásosgit checkout
ésgit log
parancsokkal ellenőrizheti. Ha jóváhagyja azokat a módosításokat, amelyeket egy távoli ág tartalmaz, egyesítheti azt egy helyi ágba egy normál git merge
értékkel. Tehát, ellentétben az SVN-vel, a helyi tároló szinkronizálása egy távoli tárolóval valójában kétlépcsős folyamat: Lekérés, majd egyesítés. Agit pull
parancs kényelmes parancsikon ehhez a folyamathoz.,
Git fetch parancsok és opciók
git fetch <remote>
az összes ág lekérése az adattárból. Ez is letölti az összes szükséges kötelezettséget, fájlokat a másik adattár.
git fetch <remote> <branch>
ugyanaz, mint a fenti parancs, de csak a megadott ágat hozza le.
git fetch --all
egy power move, amely minden regisztrált távirányítót és fióktelepet lekér:
git fetch --dry-run
a --dry-run
opció a parancs demo futtatását végzi., Ez kimenetet példákat intézkedéseket fog tenni során a lekérés, de nem alkalmazza őket.
git fetch a remote branch
a következő példa bemutatja, hogyan lehet letölteni egy távoli ágat, és frissíteni a helyi munkafolyamatot a távoli tartalomra. Ebben a példában tegyük fel, hogy van egy központi repo származás, amelyből a helyi tárolót a git clone
parancs segítségével klónozták. Tegyük fel azt is, hogy egy további távoli adattár nevű coworkers_repo, amely tartalmaz egy feature_branch amelyet konfigurálni és letölteni., Ezekkel a feltételezésekkel állítsuk be a példát.
először be kell állítanunk a távoli repo-t a git remote
parancs segítségével.
git remote add coworkers_repo [email protected]:coworker/coworkers_repo.git
itt létrehoztunk egy hivatkozást a munkatárs repo-jára a repo URL használatával. Most átadjuk ezt a távoli nevet agit fetch
– nak a tartalom letöltéséhez.
git fetch coworkers_repo coworkers/feature_branch
fetching coworkers/feature_branch
most helyben van a munkatársak/feature_branch tartalma., Ezt a folyamatot a git checkout
parancs segítségével kezdjük el az újonnan letöltött távoli ág fizetéséhez.
git checkout coworkers/feature_branch
Note: checking out coworkers/feature_branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
a kimenet ebből a pénztár művelet azt jelzi, hogy Vagyunk egy különálló HEAD
állam. Ez azt jelenti, hogy a HEAD
ref egy olyan ref-re mutat, amely nincs összhangban a helyi történelemmel. Mivel aHEAD
a munkatárs/feature_branch ref-re mutat, új helyi ágat hozhatunk létre ebből a ref-ből., A ‘ leválasztott HEAD
‘ kimenet megmutatja, hogyan kell ezt megtenni a git checkout
parancs segítségével:
git checkout -b local_feature_branch
itt létrehoztunk egy új helyi ágat, a local_feature_branch nevet. Így a frissítések HEAD
a legújabb távoli tartalmakra mutatnak, és ettől a ponttól folytathatjuk a fejlesztést.
szinkronizálja az Origót a git fetch
programmal a következő példa végigvezeti a tipikus munkafolyamatot a helyi adattár szinkronizálásához a központi tároló fő ágával.,
git fetch origin
Ez megjeleníti a letöltött ágakat:
az új távoli ágak elköteleződései négyzetekként jelennek meg az alábbi ábrán körök helyett. Mint látható, a git fetch
hozzáférést biztosít egy másik tároló teljes ágszerkezetéhez.,
ahhoz, Hogy lássuk, mit követ el bővült az upstream mester, lehet futtatni egy git log
a származási/mester, mint egy szűrő:
git log --oneline master..origin/master
jóváhagyja a változtatásokat, majd egyesíti őket a helyi master branch használja a következő parancsokat:
git checkout master
git log origin/master
Akkor használhatjuk a git merge origin/master
:
git merge origin/master
A származási/mester, mester ágak, most pont ugyanezt elkövetni, vagy szinkronizálja a felfelé irányuló fejlesztések.,
Git fetch summary
in review, git fetch
egy elsődleges parancs, amelyet a tartalom távoli tárolóból történő letöltésére használnak. git fetch
a git remote
, git branch
, git checkout
és git reset
egy helyi adattár a távoli állapotba. A git fetch
parancs az együttműködő git munkafolyamatok kritikus darabja., git fetch
has similar behavior to git pull
, however, git fetch
can be considered a safer, nondestructive version.