В течение нескольких дней я переписывал файл install.sh для проекта Scrollback, и, поскольку я был единственным, кто работал над этим и делал это локально, я продолжал коммит, изменяя тот же коммит, время от времени отправляя его мастеру моей вилки. (пожалуйста, не обращайте внимания на передовой опыт, я работал один).
В промежутках я помню, как отправил кому-то электронное письмо, показывающее мою половину работы, URL-адрес https: // github .com / sindhus / scrollback / blob / 8d8f7f414383499c2ab6fec586b4c9665a41c7aa / install.sh
Теперь из-за некоторого замешательства я потерял свою работу локально (подумайте, rm -rf), я помню, что до этого нажимал. Итак, github в какой-то момент увидел мой измененный идентификатор фиксации install.sh.
Как видите, указанный выше URL-адрес позволяет мне получить доступ к этому BLOB-объекту по идентификатору фиксации. Однако я не могу получить к нему доступ локально, потому что это же репо было принудительно отправлено.
Мой вопрос, как мне получить github, чтобы показать мне все идентификаторы фиксации для файла КОГДА-ЛИБО? Все идентификаторы этого файла, о которых он, возможно, знает, независимо от пути. Если мне придется использовать их API, я не против, но мне бы хотелось, чтобы у меня были идеи, чтобы углубиться в это.
Благодарность!
3 ответа
Я не уверен, есть ли единственный способ получить все версии файла через измененные коммиты. Однако reflog будет содержать информацию о более ранних, и вы можете извлечь их вручную. Вот пример.
Это моя первая фиксация
echo "a" > a.txt && git add a.txt && git commit -m "Version 0"
После этого еще несколько исправлений.
% echo "aa" > a.txt && git add a.txt && git commit --amend -m "Version 1"
% echo "aaa" > a.txt && git add a.txt && git commit --amend -m "Version 2"
% echo "aaaa" > a.txt && git add a.txt && git commit --amend -m "Version 3"
% echo "aaaaa" > a.txt && git add a.txt && git commit --amend -m "Version 4"
Пока в моем журнале всего одна запись
% git log --oneline a8d6c39, версия 4
В моем рефлоге есть все
% git reflog master
a8d6c39 master@{0}: commit (amend): Version 4
cf87b8f master@{1}: commit (amend): Version 3
c45a91e master@{2}: commit (amend): Version 2
63c7f5a master@{3}: commit (amend): Version 1
f2b3336 master@{4}: commit (initial): Version 0
Итак, если вы хотите увидеть, как ваш файл выглядел как версия 4, версия 3 и т. Д., Вы можете сделать это
% git show a8d6c39:a.txt
aaaaa
% git show cf87b8f:a.txt
aaaa
% git show c45a91e:a.txt
aaa
% git show 63c7f5a:a.txt
aa
% git show f2b3336:a.txt
a
В целом же "процесс" постоянного внесения поправок плох, даже если вы единственный разработчик. Это единственная вещь, которую вы должны сделать, чтобы исправить ошибки последней фиксации.
Клонируйте свое репо локально, затем попробуйте это в своем файле:
git log --follow install.sh
Он должен показать вам идентификаторы, которые вы можете использовать на github.
Я действительно не понял вопроса, поэтому есть какое-то решение:
Чтобы увидеть все фиксации определенного файла: git log --follow filename
.
Чтобы оформить заказ на старую версию, найдите ответ здесь
Похожие вопросы
Связанные вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.