Як ви переміщуєте комісію до місця постановки в git?


143

Якщо ви хочете перенести зобов’язання на область постановки - тобто скасувати його і перемістити всі зміни, що були в ньому, в область інсценізації (фактично переклавши гілку в стан, яке б було до початку здійснення) - як ти це робиш? Або це щось, чого ви не можете зробити?

Найближче, що я знаю, як зробити, - це скопіювати всі файли, які були змінені в комітеті, десь в іншому місці, скинути гілку на фільтр перед комітом, який ви намагаєтеся перенести в область постановки, перемістити всі скопіюйте файли назад у сховище, а потім додайте їх до місця постановки. Це працює, але це не зовсім приємне рішення. Те, що я хотів би зробити, це просто скасувати команду та перенести її зміну в область постановки. Чи можна це зробити? А якщо так, то як?

Відповіді:


267
git reset --soft HEAD^

Це скине ваш індекс до HEAD^(попередня фіксація), але зміни залиште в області постановки.

Є кілька зручних діаграм в git-resetдокументах

Якщо ви перебуваєте в ОС Windows, можливо, вам доведеться використовувати цей формат:

git reset --soft HEAD~1

18
Якщо це нічого не робить, спробуйте, git reset --soft HEAD~1що означає те саме, але працює і в Windows.
Роман Старков

9
Щоб уточнити, тильда і каротина означають різні речі у версіях git. HEAD ~ 1 завжди слідує за першим батьком коміту, який може бути не тим, що ви хочете, якщо це об'єднання, яке має декілька батьків. Що стосується оболонки cmd Windows, то вам просто потрібно уникнути каротки з іншою каротиною, наприклад, "git reset --soft HEAD ^^", щоб повернутися до "HEAD ^". Це суто артефакт cmd-оболонки Windows, тому вам не доведеться цього робити, якщо ви використовуєте git GUI для Windows. Тильда і каротина пояснюються на schacon.github.io/git/git-rev-parse#_specifying_reitions
ahains

Я додав посилання на "зручні діаграми". Чи можете ви швидко перевірити, чи веде це до розділу, який ви мали на увазі? Спасибі
Нейрон

5

Простий спосіб

  1. Виділені файли в Постановочну область

    git reset --soft HEAD^1

  2. Постановка на UnStage : (використовуйте "git reset HEAD ..." до нестабільності)

    git reset HEAD git commands.txt or git reset HEAD *ds.txt

тут, * -> всі файли закінчуються ds.txt до нестабільності.

Для наочності див. Малюнок нижче:

введіть тут опис зображення

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