В Python 2.6+ и 3.0+ вы должны использовать метод строки format()
:
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))
или использовать встроенный (для одного номера) :
print(format(i, '02d'))
См. документацию PEP-3101 для новых функций форматирования.
Перед ответом добавьте некоторый фон, объяснив, что это HEAD
.
First of all what is HEAD?
HEAD
- просто ссылка на текущая фиксация (последняя) в текущей ветке. В любой момент времени может быть только один HEAD
. (исключая git worktree
)
Содержимое HEAD
сохраняется внутри .git/HEAD
и содержит 40 байтов SHA-1 текущего фиксации.
detached HEAD
Если вы не используете последнюю фиксацию - это означает, что HEAD
указывает на предыдущую фиксацию в истории, ее назвали detached HEAD
.
В командной строке это будет выглядеть так: SHA-1 вместо имени ветки, так как HEAD
не указывает на кончик текущей ветви
git checkout
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
Это проверит новую ветвь, указывающую на требуемую фиксацию. Эта команда будет проверять заданную фиксацию. На этом этапе вы можете создать ветвь и начать работать с этой точки.
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
git reflog
Вы всегда можете используйте reflog
. git reflog
отобразит любое изменение, которое обновило HEAD
и проверив нужную запись reflog, установит HEAD
обратно на эту фиксацию.
Каждый раз, когда HEAD изменяется, в reflog
git reflog
git checkout HEAD@{...}
появится новая запись. Это вернет вас к вашему желаемому фиксации
git reset --hard <commit_id>
«Переместить» HEAD обратно в нужное commit.
# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32
# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.
git rebase --no-autostash
. git revert <sha-1>
«Отменить» заданный диапазон фиксации или фиксации. Команда reset «отменяет» любые изменения, сделанные в данной фиксации. Новая фиксация с патчем undo будет совершена, в то время как исходная фиксация останется в истории.
# add new commit with the undo of the original one.
# the <sha-1> can be any commit(s) or commit range
git revert <sha-1>
Эта схема иллюстрирует, какая команда выполняет что. Как вы можете видеть там reset && checkout
, измените HEAD
.
Вопрос может быть прочитан как:
Я был в состоянии отсоединения с HEAD
в 23b6772
и набрал git reset origin/master
(потому что я хотел раздавить). Теперь я передумал, как вернуться к HEAD
в 23b6772
?
Прямой ответ: git reset 23b6772
Но я столкнулся с этим вопросом, потому что мне стало тяжело печатать (скопировать и вставлять) хеши фиксации или его аббревиатуру каждый раз, когда я хотел ссылаться на предыдущий HEAD
, и был Googling, чтобы увидеть, есть ли какая-либо стенография.
git reset -
(или в моем случае git cherry-pick -
)
Что, кстати, было таким же, как cd -
, чтобы вернуться к предыдущему текущий каталог в * nix! Так ура, изучил две вещи одним камнем.
Вот такой подход, который может быть очень простым и запоминающимся. Проверьте 2 условия и выполните команду 1.
вы находитесь в «отдельной голове» (т. Е. Введите git status
, вы увидите HEAD detached at <commit_id>
)
существующая ветка соответствует вашим потребностям (т. Е. Введите git branch -v
, вы увидите название ветки с соответствующими сообщениями фиксации, представляющими работу, которую вы хотите продолжить)
просто проверьте эту ветвь (т. е. тип git checkout <branch_name>
, вы увидите Switched to branch <branch_name>
).
Теперь вы можете продолжать добавлять и выполнять свою работу, как и раньше; изменения будут отслеживаться на <branch_name>
.
Обратите внимание, что если вы сохранили работу во время отсоединения HEAD, в большинстве случаев эта работа будет автоматически объединена в описанном выше процессе. Если вы видите сообщение о конфликте слиянием, не паникуйте. Существует несколько замечательных руководств с простыми шагами для устранения конфликта и завершения слияния.