Sobes.tech
Junior

Негизги бутакка rebase жасоо эмне мааниге ээ?

sobes.tech AI

AIден жооп

Учурдагы тармактан git rebase main иштетүү, сиздин тармактын шилтемесин mainдин акыркы Commit'ине көчүрүү дегенди билдирет.

Бул төмөнкүдөй ишке ашат:

  1. Git убактылуу сиздин учурдагы тармактагы mainтен кийин пайда болгон Commit'терди сактайт.
  2. Сиздин учурдагы тармак main тармагына кайтарылат.
  3. Сакталган Commit'тер mainдин акыркы Commit'инин үстүнө кезек-кезеги менен колдонулат.

merge менен негизги айырмачылыктар:

Өзгөчөлүк Rebase Merge
Тарых Линейдүү, бириктирүү Commit'тери жок Нелинейдүү, бириктирүү Commit'тери менен
Тарыхтын тазалыгы Ачык, оңой түшүнүлөт Кыйын болушу мүмкүн түшүнүүдө
Кагылышуулар Ар бир Commit үчүн чечилет Бардык өзгөртүүлөр үчүн бир жолу чечилет
Колдонуу Кичинекей, жеке тармактар үчүн артыкчылык Жеке тармактарды бириктирүү үчүн артыкчылык

Мисал:

Баштапкы тарых:

A -- B -- C (main)
      \
       D -- E (feature)

git checkout feature жана git rebase main кийин:

A -- B -- C (main)
           \
            D' -- E' (feature)

Кайда D' жана E' жаңы ата-эненин шилтемеси менен D жана E Commit'тери.

Мүмкүн болгон көйгөйлөр:

  • Кагылышуулар: Ар бир Commit колдонууда пайда болушу мүмкүн.
  • Тарыхты кайра жазуу: rebase Commit ID'лерин өзгөртөт. Бул коркунучтуу, эгер сиз rebase кылсаңыз, ал эми ал мурда жарыяланган жана башка иштеп жаткан тармакта болсо. Мындай учурда, күчөтүлгөн push (git push --force) керек болушу мүмкүн, аны сактык менен жасоо керек.