Як я можу переключити своє сховище git на певний комітет


191

У моєму сховищі git я зробив 5 команд, як нижче, в своєму журналі git:

commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc
Author: Michael 
Date:   Fri Feb 4 15:26:38 2011 -0800

commit b688d46f55db1bc304f7f689a065331fc1715079
Author: Michael
Date:   Mon Jan 31 10:37:42 2011 -0800

commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda
Author: Michael
Date:   Wed Jan 26 13:33:17 2011 -0800

commit 4771e26619b9acba3f059b491c6c6d70115e696c
Author: Michael 
Date:   Wed Jan 26 11:16:51 2011 -0800

commit 6e559cb951b9bfa14243b925c1972a1bd2586d59
Author: Michael 
Date:   Fri Jan 21 11:42:27 2011 -0800

Як я можу повернути свої попередні 4 події на місцевому рівні у відділенні? Іншими словами, як я можу створити гілку без моїх останніх 4 комітів (припустимо, у мене є SHA цього фіксу з журналу git)?

Відповіді:


233

Щоб створити нову гілку (локально):

  • За допомогою хеша фіксації (або його частини)

    git checkout -b new_branch 6e559cb
    
  • або повернутися 4 комітки від HEAD

    git checkout -b new_branch HEAD~4
    

Після створення нової гілки (локально) ви можете повторити цю зміну на однойменному пульті: Як я можу змінити зміни до віддаленої гілки


Про відмову від останніх трьох комісій див . Відповідь Лунарінора нижче .


Про переміщення поточної гілки HEAD до вказаної комісії без створення нової гілки див . Відповідь Арпіагара нижче .


160

Усі вищезазначені команди створюють нову гілку, і остання фіксація є тією, що вказана в команді, але на всякий випадок, якщо ви хочете, щоб ваша поточна гілка HEADперейшла до зазначеної комісії, нижче наведена команда:

 git checkout <commit_hash>

Він відокремлює та вказує HEADна вказаний фіксатор і рятує від створення нової гілки, коли користувач просто хоче переглянути стан гілки до цього конкретного комітету.


Тоді ви, можливо, захочете повернутися до останньої версії та виправити відокремлену ГОЛОВУ:

Виправити відокремлену голову Git?


1
Це від'єднає голову. Не зручно.
ІгорГанапольський

навіть якщо <commit_hash>в іншій галузі, яка попереду?
Ciasto piekarz

Пов'язане запитання просто відповідає git checkout master, поряд із одним або двома крайніми справами, які можуть стосуватися певних ситуацій.
i336_

66

Якщо ви хочете відкинути останні чотири комісії, скористайтеся:

git reset --hard HEAD^^^^

Крім того, ви можете вказати хеш комісії, на який потрібно скинути:

git reset --hard 6e559cb

4
Це виключає крок розгалуження. Якщо він виконає саме те, що показано тут, він назавжди втратить ці найвищі позиції.
Джиммі Куадра

3
Ну, не обов'язково постійно - можна отримати SHA попередньої голови через git reflogі скинути його назад - але це було б їх викиданням, так.
Бурштин

1
Якщо комітети натиснуті спочатку, то скиньте, їх можна буде знову отримати лише натисканням.
Рік Сміт

17

Просто перевірте зобов’язання, з якого ви бажаєте почати свою нову філію, і створіть нову гілку

git checkout -b newbranch 6e559cb95

0

Як я можу повернути свої попередні 4 події на місцевому рівні у відділенні?

А це означає, що ви не створюєте нову гілку і переходите в відокремлений стан. Новий спосіб цього:

git switch --detach revison

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.