Egyesíti a tárolókat a git-ban
Két tároló van. A feladat az, hogy egyesíti őket, hogy az egyik tárolóból származó fájlok a másik mappájába essenek, és az egész történelem megmarad.
Nem találtam a hálózatban a lépések teljes leírását (talán nem kerestem), ezért úgy döntöttem, hogy kitöltem egy különböző forrásból összeállított jegyzetet és saját kísérleteimet.
A probléma lényege
Tegyük fel, hogy két projektünk van, amelyek mindegyike egy külön repository-ban él.
Nevezzük az első libfoo projektet. Ez egy hosszú és megkülönböztetett történelemmel rendelkező archipelagos könyvtár.
Rengeteg fájl van benne, amelyek mind nagyon fontosak számunkra.
A második projekt a fő projekt, a Facebook, Twitter és (hirtelen) Wikipedia gyilkosa.
Ő is nagyon nagy
Három év fejlesztés után rájöttünk, hogy létfontosságú számunkra, hogy egyesítsük mindkét tárhelyet. Vagyis mozgassa a könyvtárat a projekttárba (az új libfoo mappába). Természetesen ugyanakkor szeretném megmenteni a változások teljes történetét.
lemondás
Ebben a bejegyzésben a változásokat közvetlenül a tárolókban végzem el. De amikor valódi adattárral dolgozom, nagyon ajánlom, hogy ilyen manipulációkat csak a tárhely másolatával végezzen. Annak ellenére, hogy a legtöbb esetben a git megpróbálja menteni a felhasználói adatokat, egyes parancsok eltávolíthatják a tároló tartalmát nyom nélkül.
Ezért végezzen minden kísérletet a munkatárolók másolatain. Ráadásul a gitban lévő klónok nagyon gyorsan kialakulnak. És amikor az összes manipuláció befejeződött, a tárolók szinkronizálhatók push / pull segítségével.
Általában úgy vélem, figyelmeztettem. Vigyázz az adatokra!
Írja át a fájlok elérési útját
Az első lépés a tárolóknak az édes ecstasyba történő egyesítése felé az, hogy megváltoztassa a könyvtár könyvtárában lévő fájlok elérési útját. Ha a fájlok most a gyökérben vannak, akkor manipulációink után a libfoo mappába kell lépni (ami a libfoo repository-ban található).
A termonukleáris git szűrő-ág parancs segít nekünk elérni ezt. A történelem aktív szerkesztésére szolgál az "1984" szellemében. A történelem közvetlenül a változtatások révén (pontosabban az újbóli létrehozás) változik, ezért az összes szerkesztés visszafordíthatatlan. A szűrőfiók sikertelen alkalmazása letölthesse az adattárat egy dump-ra.
Vigyázzon óvatosan a kezére:
A - három szűrő zászló azt mondja, hogy a következő parancsot kell alkalmazni a lánc minden egyes elkötelezettségére (ebben az esetben a teljes mesterágra). A szűrés csak akkor lesz sikeres, ha a parancs 0-as állapotú, és az összes elkötelezettség egymásra helyezhető.
A shell csapat maga is két részből áll. Először létrehozzuk a libfoo mappát. Ezután áthelyezzük az összes fájlt, kivéve magát a libfoo-t. A shell hatalma tipikus példája: egy cső és valaki anyja segítségével komplex cselekvést alkotunk az alapvető parancsokból, amelyek a személy számára minden monoton munkát eredményeznek.
Ha nem hibázzuk a parancs beírását, a git átírja az összes adattárat, és megmutatja nekünk az új, javított libfoo könyvtárat:
Ugyanakkor a változások egész történelme megmarad (bár természetesen a kötelességek tördelése is változik):
Ha akarod, akkor be tudsz jelentkezni egy adott fájlra, és győződj meg róla, hogy a története is rendben van.
Most megteheti magad.
Egyesített raktárak egyesítése
Kevés maradt. Elindulunk uberprojekt főprojektünkhöz, és kivesszük az összes kötelezettségvállalást a megváltozott könyvtári adattárból:
Git meglepődik, hogy a távoli tárhely nem áll a közös elkötelezettségünkkel, és figyelmeztet minket róla. Ne aggódjon - minden a terv szerint megy.
Azonban a terv maga attól függ, hogyan szeretné összeolvasztani a két ágat. Főleg a csapatodban alkalmazott fiókkezelés politikáján múlik.
A Linus-úton haladhatsz, és egyesítheted a két ágat rendszeres egyesítéssel. Ebben az esetben létrejön egy elkövetés, amelynek két őse van: az egyik libfoo és az egyik főprojekt:
Van egy másik lehetőség. Például a mi munkatervünkben több szülővel elköteleztük magunkat (egy egyszerű lineáris elkötelezettség kedvéért). Ebben az esetben meg kell egyesíteni az ágakat a rebase-on keresztül.
És mindenképpen ne felejtsd el eltakarítani a távoli adattárat - nem kell többé szükségünk rá!
Mi a végén
Megkaptuk, amit akarunk: a főprojekt-adattárban libfoo nevű mappát találtunk a libfoo projekt összes fájljával (remélem, tényleg ezt akarod!)
Az egész meséjének erkölcse: írja át történelmét és rendelje el az egészségügyi készleteket, de ne feledd: