Módosítások alkalmazása újrabázissal
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
A Git automatikusan fenntartja egy ág fejlesztési előzményeit úgy, hogy minden új véglegesítést a megelőzőhöz csatol. Ha egyesít egy ágat egy másikba, az előzmények kevésbé lesznek egyértelműek. A nem gyors előrébb egyesítés például több előddel rendelkező egyesítési véglegesítés létrehozásával egyesíti az eltérő fejlesztési vonalakat. Ezzel szemben a Git-rebase az eltérő fejlesztési vonalakat egyesíti egyesítési véglegesítés létrehozása nélkül, ami egyszerűbb véglegesítési előzményt eredményez, de elveszíti az egyesítéssel kapcsolatos információkat. Az egyesítési típus kiválasztását valószínűleg befolyásolja, hogy meg szeretné-e őrizni az egyesítés rekordját, vagy egyszerűsíteni szeretné a véglegesítési előzményeket.
Ez a cikk azt ismerteti, hogy mikor érdemes újrabázist használni a nem gyors előrébb egyesítés helyett, és az alábbi feladatokhoz biztosít eljárásokat:
- A helyi ág újrabázisa
- A helyi ág leküldésének kényszerítése egy újrabázis után
- Interaktív újrabázis helyi véglegesítések összenyomásához
A Git-munkafolyamat áttekintéséhez tekintse meg az Azure Repos Git oktatóanyagát.
A helyi ág újrabázisa
A Git rebase integrálja a véglegesítéseket egy forráságból az aktuális helyi ágba (célágba). A forráság változatlan marad. Összehasonlításképpen a Git újrabázisa és más egyesítési típusok az alábbi ábrán láthatók.
A Git újralekérdezi a célág véglegesítési előzményeit, hogy az tartalmazza az összes forráság-véglegesítést, majd az összes célág véglegesítését az utolsó közös véglegesítés óta. A megtekintés másik módja, hogy az újrabázis visszajátssza a célág módosításait a forráság előzményei fölé. A Git újrabázisa módosítja a meglévő célág-véglegesítések sorrendjét, ami a többi egyesítési stratégia esetében nem így van. Az előző ábrán a K véglegesítés ugyanazokat a módosításokat tartalmazza, mint a K, de új véglegesítési azonosítóval rendelkezik, mivel a C helyett az E véglegesítéshez kapcsolódik.
Az újrabázis során, ha a forráság módosítása ütközik egy célág módosításával, a Git kérni fogja, hogy oldja fel az egyesítési ütközést. Az újrabázisok egyesítési ütközéseit ugyanúgy oldhatja fel, mint az egyesítés során fellépő egyesítési ütközéseket.
Újrabázis és nem gyors előrébb egyesítés
A Git-újrapróbálkozás egyszerűbb, de kevésbé pontos véglegesítési előzményt eredményez, mint a nem gyors előrébb egyesítés, más néven háromirányú vagy igaz egyesítés. Ha egy egyesítés rekordját szeretné rögzíteni a véglegesítési előzményekben, használjon gyors egyesítés nélküli egyesítést.
Ha Ön az egyetlen személy, aki egy szolgáltatás- vagy hibajavítási ágon dolgozik, fontolja meg az újrabázis használatát a legutóbbi main
ágak rendszeres integrálásához. Ez a stratégia segít biztosítani, hogy mások is értesüljenek a legutóbbi munkáról, és azonnal megoldják a felmerülő egyesítési ütközéseket. Az újrakezdéssel az új funkciót a legutóbbi main
ágmunka fölé implementálhatja, amely segít fenntartani a lineáris véglegesítési előzményeket.
További információ a Git újrabázisáról és használatáról: Újrabázis és egyesítés.
Újrabázis és leküldéses irányelvek
Ha egy korábban leküldéses helyi ágat ad vissza, majd ismét futtatja az alapértelmezett Git leküldéses parancsot, a leküldés sikertelen lesz. Az alapértelmezett Git leküldéses parancs gyors egyesítést alkalmaz a helyi ág távoli ágba való integrálásához. Ez a parancs az újrabázis után meghiúsul, mert az újrabázis módosítja a helyi célágban lévő meglévő véglegesítések sorrendjét, így az már nem felel meg a távoli megfelelője előzményeinek. Ebben a forgatókönyvben egy kényszerített leküldés sikeres lesz a távoli ág felülírásával.
A Git újrabázisa és a leküldés kényszerítése hatékony eszközök, de tartsa szem előtt ezeket az irányelveket, amikor eldönti, hogy használja-e őket:
- Ne adjon át olyan helyi ágat, amelyet leküldtek és megosztottak másokkal, hacsak nem biztos abban, hogy senki sem használja a megosztott ágat. Az újrabázis után a helyi ág már nem egyezik meg a távoli megfelelője előzményeivel.
- Ne kényszerítse a mások által használt távoli ágra való leküldést, mivel a távoli ág helyi verziója már nem felel meg a frissített távoli ágelőzménynek.
- A csapatnak meg kell egyeznie az újrabázis használati forgatókönyvével és a leküldés kényszerítésével.
Tipp.
Együttműködésen alapuló felülvizsgálati folyamat esetén egy lekéréses kérelem használatával egyesítheti az új munkát egy távoli adattár alapértelmezett ágával.
Újrabázis
A Visual Studio 2022 Git-verziókövetési felületet biztosít a Git menü, a Git-módosítások és a Megoldáskezelő helyi menüjének használatával. A Visual Studio 2019 16.8-es verziója a Team Explorer Git felhasználói felületét is kínálja. További információt a Visual Studio 2019 – Team Explorer lapon talál.
A Git-tárház ablakának megnyitásához válassza a Git-ágak > kezelése lehetőséget.
A Git-adattár ablakában kattintson a jobb gombbal a célágra, és válassza a Kivétel lehetőséget.
Kattintson a jobb gombbal a forráságra, és válassza a célág> újrabázisa <lehetőséget a forráságra<>.
A Visual Studio egy megerősítést kérő üzenetet jelenít meg a sikeres újrabázis után.
Ha az újrabázis egyesítési ütközések miatt leállt, a Visual Studio értesíti Önt. Feloldhatja az ütközéseket, vagy megszakíthatja az újrabázist, és visszatérhet az újrabázis előtti állapotba.
A helyi ág leküldésének kényszerítése egy újrabázis után
Ha egy korábban leküldéses helyi ágat ad vissza, egy későbbi alapértelmezett Git-leküldés sikertelen lesz. Ehelyett kényszerítheti a helyi ág leküldését, hogy felülírja a távoli megfelelőjét, hogy a véglegesítési előzmények egyezzenek.
Figyelmeztetés
Soha ne kényszerítse le az olyan ágat, amelyen mások dolgoznak. További információ: Újrabázis és leküldéses irányelvek kényszerítése.
A Leküldés a Visual Studióban való kényszerítéséhez először engedélyeznie kell a leküldéses kényszerítést:
Nyissa meg az Eszközök>beállításai>forrásvezérlő>git globális Gépház.
Válassza a Leküldés engedélyezése --force-with-lease lehetőséget.
A Git leküldéses --force-with-lease
jelző biztonságosabb, mint a --force
jelző, mert nem írja felül a távoli ágat, amely olyan véglegesítéseket használ, amelyek nem integrálva vannak a leküldéses helyi ágba.
A Git Changes ablakban válassza a leküldéses gombot a véglegesítés leküldéséhez.
Vagy választhatja a Leküldés lehetőséget a Git menüből.
Ha az alapértelmezett Git-leküldési művelet meghiúsul, a Visual Studio elindítja a Sikertelen Git-Leküldés párbeszédpanelt . Válassza a Leküldés kényszerítése lehetőséget.
A Visual Studio egy sikeres leküldés után megerősítő üzenetet jelenít meg.
Interaktív újrabázis helyi véglegesítések összenyomásához
Amikor a helyi szolgáltatáságban egy új szolgáltatáson dolgozik, általában több véglegesítést fog létrehozni. Ha készen áll az új funkció közzétételére, érdemes lehet ezeket a véglegesítéseket egyetlen véglegesítésbe egyesítenie a véglegesítési előzmények egyszerűsítése érdekében. Egy interaktív újrabázissal több véglegesítést is összenyomhat egyetlen véglegesítésbe.
A Visual Studio 2022 nem támogatja az interaktív újrabehozást. Használja inkább a Git parancssort.
Feljegyzés
Az Azure DevOps-felhasználók összenyomhatják az egyesítést , hogy összevonják egy témakörág véglegesítési előzményeit egy lekéréses kérelem során.