Megosztás a következőn keresztül:


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.

Diagram a véglegesítések előtt és után a Git rebase használatakor.

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.

  1. A Git-tárház ablakának megnyitásához válassza a Git-ágak > kezelése lehetőséget.

    Képernyőkép a Visual Studio Git menüjében az Ágak kezelése lehetőségről.

  2. A Git-adattár ablakában kattintson a jobb gombbal a célágra, és válassza a Kivétel lehetőséget.

    Képernyőkép a Visual Studio Git-adattár ablakának ág helyi menüjében található Checkout lehetőségről.

  3. Kattintson a jobb gombbal a forráságra, és válassza a célág> újrabázisa <lehetőséget a forráságra<>.

    Képernyőkép a Visual Studio Git-adattár ablakának ág helyi menüjében található Rebase lehetőségről.

  4. A Visual Studio egy megerősítést kérő üzenetet jelenít meg a sikeres újrabázis után.

    Képernyőkép az újrabázis megerősítéséről a Visual Studio Git-adattár ablakában.

    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.

    Képernyőkép a Visual Studio Git-adattár ablakában található újrabázisütközési üzenetről.

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:

  1. Nyissa meg az Eszközök>beállításai>forrásvezérlő>git globális Gépház.

  2. 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.

  1. A Git Changes ablakban válassza a leküldéses gombot a véglegesítés leküldéséhez.

    Képernyőkép a Visual Studio Git Changes ablakának felfelé mutató leküldéses gombjáról.

    Vagy választhatja a Leküldés lehetőséget a Git menüből.

    Képernyőkép a Visual Studio Git menüjének Leküldés lehetőségéről.

  2. 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.

    Képernyőkép a Git-push sikertelen párbeszédpanelről a Visual Studióban.

  3. A Visual Studio egy sikeres leküldés után megerősítő üzenetet jelenít meg.

    Képernyőkép a Leküldéses megerősítési üzenetről a Visual Studióban.

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.

Következő lépések