2013-04-03 2 views
3

Есть ли хороший способ изменить мою рабочую копию Git на некоторое количество заданий за последнее время.Как обновить мою рабочую копию git до предыдущей редакции

E.g. Для того, чтобы увидеть 3 фиксаций в прошлое, что-то вроде:

git reset HEAD - 3 

Прецедент здесь является то, что я просто хочу, чтобы увидеть, если тесты, которые терпят неудачу в текущей рабочей копии также неудачу, прежде чем мой последний коммит. Я не обязательно хочу вносить какие-либо изменения в предыдущие версии. Затем я хотел бы сменить рабочую копию на последнюю фиксацию.

ответ

5

Если вы просто хотите выглядеть на предыдущей фиксации (без изменения состояния вашего филиала/хранилища), используйте git checkout.

git checkout HEAD~3 

Если вы решите, что хотите сделать разработку с этой точки, вы можете разветвиться.

git checkout -b specialFeature47 

Чтобы вернуться к настоящему, просто проверьте имя филиала, в котором вы были.

git checkout master 

Утомлять предложенные решения git reset. Фактически они перемещают указатель на ветку (фактически удаляя эти 3 коммита).

+0

+1 Возможно, это должен быть принятый ответ, так как это не наносит вреда репо. – tubaguy50035

+0

Спасибо @ TheBuzzSaw. Это больше похоже на то, чего я пытался достичь. Я обновил свой вопрос, чтобы сделать это более явным. –

4

Да, это возможно:

git reset --hard HEAD~3 
+0

Спасибо Даниил. Я забыл упомянуть в своем первоначальном вопросе, что я также хочу иметь возможность двигаться вперед снова. В принципе, я просто хочу легко вернуться назад и вперед. Какая команда для этого? –

+0

@KevinStembridge: нет эквивалентного синтаксиса для перемотки вперед. Вы должны определить это совершение другими способами. Например, если HEAD перед откатом является HEAD ветки, вы можете просто использовать 'git reset --hard '. В противном случае вы можете пометить текущую головку перед откатом. Наконец, 'git reflog' показывает изменения в HEAD, поэтому вы можете извлечь из этого хэша предыдущего HEAD. –

+0

см. ['Man gitrevisisons'] (https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html),' @ {n} 'и' @ {- n} 'очень полезно. – jthill

1

Вы всегда можете сделать:

GIT оформления заказа ГОЛОВУ ~ 15

и двигаться 15 совершает назад. Текущий наконечник полностью невозможен, вы можете перемещаться, даже строить эту версию и проверять и т. Д. Чтобы вернуться, просто сделайте git checkout mybranch. Если вы хотите начать работать там (и оставить исходную ветку на льду), вы можете git branch newbranch и работать с newbranch.

Продумайте, что вы делаете, прежде чем использовать какую-либо истории переписывания команды (commit --amend, rebase, reset и такое), есть реальный потенциал массивных потери работы там. Ветвление в git - это дешевая грязь, большая часть чего вы можете выполнить путем перемотки истории, можно сделать, просто создав новую ветку, начиная где-то в прошлом, и, возможно, переключив ее с текущей веткой master. Работа, проделанная на старой ветке, может пригодиться позже; и если это не так, стоимость его хранения, вероятно, ничтожно мала.

Смежные вопросы