Я потерял доступ к ноутбуку, где я выдвинул только объединенную ветвь (на мастер), но забыл обновить саму ветвь.
Поэтому я попробовал следующий небольшой эксперимент:
$ mkdir g
$ cd g
$ git init
$ echo 1 >> README.md
$ git add README.md
$ git commit -m"First commit" -- README.md
$ git checkout -b b1
$ echo 2 >> README.md
$ git commit -m"Second commit" -- README.md
$ git checkout master
$ git merge b1
$ git checkout b1
$ git reset --hard HEAD~
$ git cherry-pick 365163b00fee76cdc6d3e34b139b0ed42b184437
Вышеприведенное не создает заново коммит 365163b00fee76cdc6d3e34b139b0ed42b184437 идентично, но создает другой (d6debaa050c5).
Какая команда является правильной для воссоздания коммита из существующего коммита в ветку (нет доступа к журналу рефлогов)?
Для моей конкретной потребности c я могу проверить, что У меня есть следующая информация:
$ git show --pretty=fuller 365163b00fee76cdc6d3e34b139b0ed42b184437
commit 365163b00fee76cdc6d3e34b139b0ed42b184437
Author: Mathieu Malaterre <example@example.org>
AuthorDate: Tue Feb 25 14:02:06 2020 +0100
Commit: Mathieu Malaterre <example@example.org>
CommitDate: Tue Feb 25 14:02:06 2020 +0100
Second commit
diff --git a/README.md b/README.md
index d00491fd7e5b..1191247b6d9a 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
1
+2
- Ветвь b1 не изменилась, поэтому родительский sha1 правильный,
- информация о фиксации верна (сообщение, автор, коммиттер и метка времени) .