Як відхилити незмінені зміни у SourceTree?


83

Я новачок у середовищі Git і використовую BitBucket із SourceTree на Mac. Все, що я хочу зробити зараз, - це відкинути зміни після останнього коміту. Як мені це зробити? Я не знайшов нічого на зразок "відхилити зміни", і безпосереднє витягування з останнього коміту, здається, не працює. Рішення, зроблені за допомогою графічного інтерфейсу користувача або командного рядка, будуть непоганими.


ви маєте на увазі, що хочете скасувати останню коміт? або залишити його та перевірити попередній коміт з якихось причин тестування, наприклад?
Mohammad AbuShady

1
@MohammadAbuShady Я думаю, що відповідь не є ні тим, ні іншим. З часу останнього коміту я вніс деякі зміни, які хочу відкинути. Я хочу повернути моє останнє комітування.
goldfrapp04,

отже, у вас є незавершені зміни, які ви хочете скасувати?
Mohammad AbuShady

Жодна з відповідей тут не допомогла мені видалити надокучливий запис "Незмінені зміни" у верхній частині мого Sourcetree. І було занадто багато нестадійних файлів, щоб викидати їх по черзі. Відповідь тут спрацювала: stackoverflow.com/questions/14075581/…
PVS

Я плутав між параметрами контекстного меню, коли клацнув правою кнопкою миші у списку Нестандартні файли; Discard(Shift + Ctrl + R) та Remove(Ctrl + Del), я думаю Discard, скасує зміни, як, git reset --hardі Removeвидалить файл та сформулює це видалення.
Червоний горох,

Відповіді:


62

Мені подобається користуватися

git stash

Тут зберігаються всі незафіксовані зміни в схованці . Якщо ви хочете відмінити ці зміни пізніше git stash drop(або git stash popвідновити їх).

Хоча це технічно не "належний" спосіб відкинути зміни (на що вказували інші відповіді та коментарі).

SourceTree : на верхній панелі клацніть на піктограму 'Stash', введіть її назву та створіть. Потім у вертикальному меню ліворуч ви можете "показати" весь Stash і видалити в меню правою кнопкою миші. Можливо, в ST немає іншого способу відкинути всі файли одночасно.


7
ну, якщо ви хочете просто відкинути все, це ще простіше просто зробитиgit reset --hard HEAD
Mohammad AbuShady

4
@cocoanut Я думаю, що моя відповідь "неправильна", оскільки це зловживання stashфункцією. Відповідь Мохаммеда - це правильний спосіб відкинути всі зміни.
Макс.

Так, ще й тому, що я не міг побачити, де ярлик.
Роберто

3
Мені подобається цей метод, оскільки він дає вам останній шанс відновити зміни, якщо ви передумаєте. Я рідко reset --hard, але часто закладаю свої зміни, щоб почати все нове, а згодом скидаю схованку, якщо вирішую, що мені це не потрібно.
Макс.

Цей метод не видалив нові версії файлів без версії. У цьому випадку метод Роберто з використанням скидання та очищення працював краще.
Габріель Йенсен,

143

На SourceTree для Mac клацніть правою кнопкою миші файли, які потрібно відкинути (у списку Файли в робочому дереві ), і виберіть Скинути .

На SourceTree для Windows клацніть правою кнопкою миші файли, які потрібно відкинути (у списку « Зміни робочої копії» ), і виберіть « Відхилити» .

На git ви просто зробите:

git reset --hard відхилити зміни, внесені у файли версій;

git clean -xdfвидалити нові (не відстежувані ) файли, включаючи ігноровані ( xопція). dполягає також у видаленні невідстежених каталогів та fпримусовому застосуванні.


9
Ви також можете клацнути правою кнопкою миші на всю "Робочу копію" на лівій панелі (або натиснути Cmd + Shift + R) ;-)
Гео

14
Дивно, що одна і та ж команда має різну назву для Mac і Windows. Наче графічний інтерфейс Git (порівняно з командним рядком) вже недостатньо заплутаний.
NSTJ

Дякую! Думаю, це слід проголосувати як правильну відповідь ;-)
Ернан Арбер

@NSTJ. Тобто визначення, щодо якого можна очікувати широкої згоди.
LarsH

7

На нестадійному файлі натисніть на три крапки праворуч. Після того, як ви клацнете на ньому, з’явиться меню, яке ви можете відкрити Discard file.


2
Це добре, коли це лише кілька файлів, але що відбувається, коли файлів багато?
Itai Spector

4

Гаразд, я щойно помітив, що на моє запитання вже дано відповідь у назві питання.

Для відключення файлів використовуйте

git reset HEAD /file/name

І скасувати зміни у файлі

git checkout -- /file/name

Якщо у вас є пакет файлів усередині папки, ви можете скасувати всю папку

git checkout -- /folder/name

Зверніть увагу, що всі ці команди вже відображаються, коли ви git status

Тут я створив фіктивний репо та перерахував усі 3 можливості

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   test2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test3

3

У графічному інтерфейсі sourcetree клацніть на робочому режимі, клацніть правою кнопкою миші файл (и), який потрібно відкинути, а потім клацніть на Видалити


2

Робіть, як слід,

  • Натисніть на commit
  • Виберіть все, натиснувши CMD+Aте, що хочетеdelete or discard
  • Right click на вибраних незакріплених файлах, які потрібно видалити
  • Виберіть Removeзі спадного списку

1

Гаразд, у простому деревному дереві Windows я деякий час теж дивився.

Клацніть Command + Shift + R, тоді як у дереві джерела буде показано приховане спливаюче вікно, яке дозволить вам відкинути окремі файли АБО ВСІ! Чому це приховано? Ми ніколи не дізнаємось .. але це працює!

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


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