Как вернуться к последнему коммиту после проверки предыдущего коммита?

Ранее принятый ответ был устаревшим с Python 3.0. Вместо использования inspect.getargspec вы должны выбрать класс Signature, который заменит его.

Создание подписи для функции выполняется с помощью функции signature :

from inspect import signature

def someMethod(self, arg1, kwarg1=None):
    pass

sig = signature(someMethod)

Теперь вы можете быстро просмотреть ее параметры с помощью str:

str(sig)  # returns: '(self, arg1, kwarg1=None)'

или вы также можете получить сопоставление имен атрибутов с объектами параметров через sig.parameters.

params = sig.parameters 
print(params['kwarg1']) # prints: kwarg1=20

Кроме того, вы можете вызвать len на sig.parameters, чтобы увидеть количество аргументов, которые эта функция требует:

print(len(params))  # 3

Каждая запись в params На самом деле отображение - это объект Parameter , который имеет дополнительные атрибуты, облегчающие вашу жизнь. Например, захват параметра и просмотр его значения по умолчанию теперь легко выполняется с помощью:

kwarg1 = params['kwarg1']
kwarg1.default # returns: None

аналогично для остальных объектов, содержащихся в parameters.


Что касается пользователей Python 2.x, в то время как inspect.getargspec не устарел , язык скоро будет :-). Класс Signature недоступен в серии 2.x и не будет. Поэтому вам еще нужно работать с inspect.getargspec .

Что касается перехода между Python 2 и 3, если у вас есть код, который полагается на интерфейс getargspec в Python 2 и переключиться на signature в 3 слишком сложно, у вас есть ценная опция использования inspect.getfullargspec . Он предлагает аналогичный интерфейс getargspec (один вызываемый аргумент), чтобы захватить аргументы функции, а также обрабатывать некоторые дополнительные случаи, которые getargspec не выполняет:

from inspect import getfullargspec

def someMethod(self, arg1, kwarg1=None):
    pass

args = getfullargspec(someMethod)

Как и в случае с getargspec, getfullargspec возвращает NamedTuple, который содержит аргументы.

print(args)
FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})

412
задан Phil Miller 31 May 2017 в 15:55
поделиться

2 ответа

Если вы знаете, что коммит, к которому вы хотите вернуться, является заголовком какой-либо ветки или помечен тегами, то вы можете просто

git checkout branchname

Вы также можете использовать git reflog , чтобы узнать, что еще коммитит вашу HEAD. (или любой другой источник) указывал в прошлом.


Отредактировано для добавления:

В новых версиях Git, если вы запускали только git checkout или что-то еще, чтобы переместить HEAD один раз, вы также можете сделать

git checkout -

чтобы вернуться туда, где он был до последней проверки. Это было мотивировано аналогией с идиомой оболочки cd - , чтобы вернуться в тот рабочий каталог, в котором вы находились ранее.

548
ответ дан 22 November 2019 в 23:16
поделиться

Посмотрите на графический интерфейс ... gitk показывает все коммиты. Иногда проще работать с графикой ... ^^

9
ответ дан 22 November 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: