Разликата между Git Reset, Git Checkout и Git Revert ⋆ ALexHost SRL

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills
17.01.2025

Разликата между Git Reset, Git Checkout и Git Revert

Ефективният контрол на версиите е жизненоважен за всеки проект за разработка, а правилната инфраструктура може значително да подобри работния ви процес. AlexHost предлага мощни и мащабируеми VPS хостинг решения, идеални за хостване на вашите Git хранилища и осигуряване на безпроблемно управление на проекта. Със специализирани IPv4 адреси, бързо NVMe хранилище и удобен за потребителя контролен панел AlexHost осигурява перфектната среда за работа с Git и други инструменти за разработка, като ви осигурява производителността и надеждността, необходими за безпроблемно сътрудничество.

При работа с Git има множество команди, които ви позволяват да отменяте промени или да преминавате между различни състояния на вашето хранилище. Три от най-често използваните команди за тази цел са git reset, git checkout и git revert. Макар да изглеждат сходни, всяка от тях има различна цел и работи по различен начин.

Ето подробна разбивка на разликите между git reset, git checkout и git revert:


1. git reset

git reset се използва за отменяне на ангажименти или промени, като премества указателя HEAD на текущия клон към определен ангажимент. То променя историята на предаванията и може да засегне работната директория, зоната за съхранение или и двете, в зависимост от начина на използване.

Случаи на употреба:

  • Отмяна на скорошни предавания.
  • Преместване на HEAD указателя обратно към по-ранно предаване.
  • Отменяне на файловете от зоната за стартиране (като се запазват промените в работната директория).

Синтаксис на командата:

git reset [–soft | –mixed | –hard]

Режими на нулиране:

  • –мек: Премества указателя HEAD към посочената ревизия, но запазва промените в зоната за съхранение и работната директория.
  • –mixed (по подразбиране): Премества указателя HEAD към посочената ревизия и нулира зоната за съхранение, но запазва промените в работната директория.
  • –твърд: Премества указателя HEAD, нулира зоната за построяване и отхвърля всички промени в работната директория.

Пример:

git reset –hard HEAD~1 # Преместете HEAD назад с един commit и отхвърлете всички промени

Внимание: git reset –hard е деструктивна операция, тъй като премахва трайно промените от работната директория и историята на предаванията.


2. git checkout

git checkout се използва за превключване между клонове или за проверка на конкретен коммит или файл. Тя променя работната директория, за да съответства на състоянието на клона, коммита или файла, който изтегляте, но не променя историята на коммитите, освен ако не създадете нов коммит след превключването на клоновете.

Случаи на употреба:

  • Превключване между клонове.
  • Проверка на предишен коммит или на определени файлове, без да се променя историята на коммитите.
  • Създаване на нов клон.

Синтаксис на командата:

git checkout # Преминаване към различен клон git checkout # Проверка на конкретен ангажимент в отделено състояние на HEAD git checkout — # Възстановяване на конкретен файл в последното му ангажирано състояние

Пример:

git checkout feature-branch # Превключване към ‘feature-branch’ git checkout 123abc # Проверка на коммит с хеш 123abc (отделено състояние HEAD) git checkout — file.txt # Възстановяване на състоянието на файла.txt при последния коммит

Внимание: Ако проверявате конкретен коммит (а не клон), влизате в отделено състояние HEAD, което означава, че промените няма да бъдат свързани с никой клон, освен ако не създадете нов клон от тази точка.


3. git revert

git revert се използва за отменяне на даден коммит чрез създаване на нов коммит, който отменя промените, въведени от първоначалния коммит. Той запазва историята на поправките, което го прави сигурен начин за отмяна на промените, без да се пренаписва историята.

Случаи на употреба:

  • Безопасно отменяне на промени, особено в споделени или отдалечени клонове.
  • Връщане на конкретни предавания, като историята на предаванията остава непокътната.
  • Отмяна на промени в съвместна среда.

Синтаксис на командата:

git revert

Пример:

git revert HEAD # Отменяне на най-новата корекция и създаване на нова корекция с обратните промени git revert # Отменяне на конкретна корекция чрез създаване на нова корекция, която обръща нейните промени

Важна забележка: git revert не изтрива никаква история или предавания. Вместо това той създава нов commit, който отменя промените от посочения commit. Това прави git revert недеструктивна команда, която поддържа пълна история на промените.

Кога да използвате всяка команда

  • Използвайте git reset, когато:
    • Необходимо е да отмените скорошен ангажимент (или няколко ангажимента) в локалното си хранилище.
    • Искате да отмените файловете или да върнете промените в работната си директория.
    • Работите с локален клон и не е необходимо да запазвате историята на предаванията.
  • Използвайте git checkout, когато:
    • Трябва да превключвате между клонове.
    • Искате да проверите по-ранен ангажимент, без да променяте историята (в отделено състояние HEAD).
    • Трябва да възстановите предишното състояние на файл или папка, без да засягате останалите промени.
  • Използвайте git revert, когато:
    • Трябва да отмените промени, които вече са били качени в споделен или отдалечен клон.
    • Искате да отмените дадена промяна, но да запазите историята ѝ непокътната.
    • Сътрудничите си с други хора и искате да поддържате ясна и точна история на поправките.

Заключение

Всяка от тези команди на Git – git reset, git checkout и git revert – има уникална цел и ефект. Разбирането на това кога и как да ги използвате правилно е от съществено значение за ефективното управление на историята и промените в проекта ви. Когато работите в съвместна среда, често е по-безопасно да използвате git revert, за да отмените промените, докато git reset може да бъде полезен за почистване на локалната история. git checkout, от друга страна, е командата за превключване на клонове или за навигация по различни коммити, без да се променя историята на хранилището.

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills