Адмяніць git pull, як вярнуць рэпазіцыі ў старое стан

Ці ёсць спосаб адмяніць або адмяніць git pull, каб зыходны / репозиционный рэсурс прыйшоў у старое стан, якое было да выканання git pull? Я хачу зрабіць гэта, таму што ён аб'яднаў некаторыя файлы, якія я не хацеў рабіць, але толькі аб'яднаць астатнія пакінутыя файлы. Такім чынам, я хачу вярнуць гэтыя файлы, ці магчыма гэта? дзякуй :)

EDIT Я хачу адмяніць git зліццё для ўдакладнення. Пасля прагляду некаторых адказаў я зрабіў гэта

 git reflog bb3139b... HEAD@{0}: pull : Fast forward 01b34fa... HEAD@{1}: clone: from ...name... 

Цяпер, што мне рабіць? Выкананне git reset --hard ў парадку? Я не хачу зноў ўкручваць яго, таму прашу падрабязныя крокі?

668
03 авг. зададзены seg.server.fault 03 жнів. 2009-08-03 19:42 '09 у 19:42 2009-08-03 19:42
@ 8 адказаў

git pull будзе рабіць дзве рэчы: ён мае git fetch , а затым git merge , дзе ён аб'ядноўвае галінкі, якія былі настроены для аб'яднання ў вашай канфігурацыі.

Такім чынам, што вы хочаце зрабіць, гэта адмяніць зліццё (адмена выбаркі не мае вялікага сэнсу і не мусіць быць неабходнай).

Для гэтага вы можаце паспрабаваць выкарыстоўваць git reset --hard To Reset ў папярэднім стане. Выкарыстоўвайце каманду git-reflog , каб знайсці SHA-1 папярэдняга стану, а затым reset.

919
03 авг. адказ дадзены jkp 03 жнів. 2009-08-03 19:47 '09 у 19:47 2009-08-03 19:47

Тое ж, што і адказ jkp, але тут поўная каманда:

 git reset --hard a0d3fe6 

дзе a0d3fe6 знойдзены, выконваючы

border=0
 git reflog 

і паглядзім на кропку, у якую вы хочаце адмяніць.

195
22 июля '14 в 3:39 2014-07-22 03:39 адказ дадзены Jeffrey Sun 22 ліпеня '14 ў 03:39 2014/07/22 03:39

Больш сучасны спосаб адмены зліцця:

 git merge --abort 

І трохі больш стары спосаб:

 git reset --merge 

Шлях старой школы, апісаны ў папярэдніх адказах (папярэджанне: адменіць усе вашы лакальныя змены):

 git reset --hard 

Але на самай справе варта заўважыць, што git merge --abort эквівалентны толькі git reset --merge , калі прысутнічае MERGE_HEAD . Гэта можна прачытаць у даведцы git для каманды merge.

 git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present. 

Пасля няўдалага зліцця, калі няма MERGE_HEAD , збойных зліццё можа быць адмененае з дапамогай git reset --merge , але неабавязкова з git merge --abort ,, таму яны не толькі стары і новы сінтаксіс для адной і той жа рэчы. Вось чаму я знаходжу git reset --merge нашмат больш карысна ў паўсядзённай працы.

57
20 мая '15 в 12:17 2015-05-20 12:17 адказ дадзены Martin 20 мая '15 у 12:17 2015/05/20 00:17

Калі ў вас ёсць gitk (паспрабуйце запусціць gitk -all з вашай каманднага радка git), гэта проста. Проста запусціце яго, абярыце фіксацыю, якую вы хочаце адкат (пстрыкніце правай кнопкай мышы), і абярыце "Reset master branch to here". Калі ў вас няма ніякіх зменаў, выберыце "жорсткі" варыянт.

34
03 авг. адказ дадзены Samuel Carrijo 03 жнів. 2009-08-03 19:49 '09 у 19:49 2009-08-03 19:49

ён працуе першае выкарыстанне: git reflog

знайдзіце свой SHA вашага стану previse і зрабіце (прыклад HEAD @ {1})

 git reset --hard HEAD@{1} 
24
08 марта '16 в 20:00 2016-03-08 20:00 адказ дадзены Ezequiel García 08 сакавіка '16 а 20:00 2016/03/08 20:00

Выкажам здагадку, што $COMMIT быў апошнім ідэнтыфікатарам фіксацыі перад выкананнем git pull . Што вам трэба, каб адмяніць апошняе націск,

git reset --hard $COMMIT

.

бонус:

Гаворачы аб pull, я хацеў бы падзяліцца цікавым трукам,

git pull --rebase

Гэтая вышэйпрыведзеная каманда з'яўляецца самай карыснай камандай у маім жыцці git, якая зэканоміла шмат часу.

Перш чым націскаць новую фіксацыю на сервер, паспрабуйце гэтую каманду, і яна аўтаматычна сінхранізуе апошнія змены сервера (з дапамогай зліцця + зліццё) і змесціць вашу фіксацыю уверсе ў часопіс git. Не трэба турбавацца аб ручным выцягванні / зліцці.

Знайсці інфармацыю па адрасе: http://gitolite.com/git-pull--rebase

11
23 дек. адказ дадзены Sazzad Hissain Khan 23 снеж. 2015-12-23 18:55 '15 у 18:55 2015/12/23 18:55

вы можаце зрабіць git reset --hard ORIG_HEAD

бо "pull" ці "merge" усталёўваюць ORIG_HEAD як бягучы стан перад выкананнем гэтых дзеянняў.

3
19 авг. адказ дадзены Orlando 19 жнів. 2015-08-19 19:52 '15 у 19:52 2015/08/19 19:52

Паспрабуйце гэтую каманду ніжэй. Спадзяюся, што гэта вырашыць вашу праблему.

 git reset --keep HEAD@{1} 

Заўвага. ORIG_HEAD - гэта папярэдні стан HEAD, зададзенае камандамі з патэнцыйна небяспечным паводзінамі, каб іх было лёгка вярнуць. Зараз менш карысна, што Git мае reflog: HEAD@{1} прыкладна эквівалентны ORIG_HEAD (HEAD@{1} заўсёды з'яўляецца апошнім значэннем HEAD, ORIG_HEAD з'яўляецца апошнім значэннем HEAD перад небяспечнай аперацыяй)

1
03 нояб. адказ дадзены Faisal 03 лістапада. 2017-11-03 08:26 '17 у 08:26 2017/11/03 08:26

Іншыя пытанні па пазнаках або Задайце пытанне