Как клонировать определенный коммит git

Как получить определенный коммит из проекта GitHub

Может кто-нибудь сказать, пожалуйста, как это сделать?

(Кстати, я на Mac. Не знаю, если это имеет какое-либо значение).

Сначала клонируйте репозиторий с помощью git, например:

Это загружает полную историю хранилища, так что вы можете переключиться на любую версию. Затем перейдите в новый клонированный репозиторий:

. и используйте, git checkout чтобы перейти на правильный коммит:

Это даст вам предупреждение, так как вы больше не находитесь на ветке и переключились непосредственно на определенную версию. (Это называется состоянием «отсоединенного HEAD».) Звучит так, как будто вы хотите использовать только этот SDK, а не активно его разрабатывать, поэтому вам не о чем беспокоиться, если только вы не хотите узнать подробнее о том, как работает git.

Надеюсь, это поможет вам, ребята.

Ответ Сивана в гифке Как клонировать определенный коммит git. zoEnp. Как клонировать определенный коммит git фото. Как клонировать определенный коммит git-zoEnp. картинка Как клонировать определенный коммит git. картинка zoEnp

1. Нажмите на коммиты в github.

2.Выберите код обзора на правой стороне каждого коммита.

3.Нажмите на загрузку zip, которая загрузит исходный код в момент фиксации

Чтобы просто загрузить коммит с помощью 7-значной короткой формы SHA1, выполните:

Рабочий пример:

Описание:

Название вопроса неоднозначно.

Как дополнение к принятому ответу:

Допустим, вы видите этот однострочный список коммитов с минимальной информацией и только частично видимыми хешами:

Если вы хотите n-й последний коммит, вы можете использовать git checkout master

Источник

как клонировать старый git-commit (и еще несколько вопросов о git)

2 ответов

репозиторий git содержит всю историю в любое время.
Поэтому, когда вы клонируете репозиторий, вы клонируете его с полной историей и затем, вы можете сделать ветку из любой фиксации, которую вы хотите:

С SHA1, представляющим идентификатор фиксации, из которого вы хотите продолжить.

ветки в Git-это просто способ отслеживать один путь DAG (направленный ациклический граф) который является набором коммитов представление истории репозитория Git.
Это простой указатель, который вы назначаете одному из этих коммитов, и он будет продолжать двигаться вместе с каждым новым коммитом.

Как клонировать определенный коммит git. 43c3d6f101c09504157eb35f647c4f62. Как клонировать определенный коммит git фото. Как клонировать определенный коммит git-43c3d6f101c09504157eb35f647c4f62. картинка Как клонировать определенный коммит git. картинка 43c3d6f101c09504157eb35f647c4f62

вы можете пометить конкретную фиксацию с помощью тег, который, как ветвь, является простым указателем, но неизменяемым (он не будет двигаться, когда вы делаете новую фиксацию).
Вы будете использовать предпочтительно аннотированный теги, которые хранятся как полные объекты в базе данных Git. Они являются контрольной суммой; содержат имя теггера, электронную почту и дату; имеют сообщение с тегами; и могут быть подписаны и проверены с помощью GNU Privacy Guard (GPG).

раздел «графические интерфейсы»InterfacesFrontendsAndTools страница на Git Wiki перечисляет различные GUI для Git на данный момент.

вы увидите много вопросов о разнице между Git и SVN: см.мой ответ: (или этот) например.
Мой самый полный ответ о фундаментальных различиях между Git и SVN здесь:
«какой из двух лучше: git или SVN».

есть несколько вопросов в этом посте, вот мой взгляд на некоторые ответы:

во-первых, чтобы «клонировать» предыдущую фиксацию, вы можете сделать что-то вроде этого:

1 для доступа к первому родителю последнего фиксации и увеличения числа, чтобы получить родителя родителя и так далее. подробнее о нотации Тильды и каретки.

Если вам нужно начать работу с этого момента в истории, вы можете запустить

хороший Git GUI? Для меня SourceTree самый лучший.

что отличается между git и svn?

git-это использовать систему контроля версий. в SVN это не так. Кроме того, ветвление (упомянутое выше) проще в git.

для пометки, я не знаю, есть ли» один истинный путь » (есть ли когда-нибудь?) но просто исследуйте

Источник

Git: Как клонировать первый коммит?

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

5 ответов

Чтобы ответить на вопрос, я думаю, вы хотели спросить:

Вы можете перевести весь ваш репозиторий в состояние первого коммита с помощью:

И вы можете получить отдельные файлы в их состоянии с первого коммита с помощью:

Обновленный ответ 2018 года: используйте свой собственный символьный реф, т.е. тег. И начните использовать describe и аннотированные теги.

Выходное описание для репозитория, который никогда не получал тег, но иногда фиксируется с 2011 года с тегом выше:

Я думаю, что хочу сделать то же самое. Оформить начальный коммит и перейти оттуда. Я не уверен, что ответ принят. Но я думаю, что это может (частично) полностью ответить на первоначальный вопрос. После прочтения этой темы я, однако, пойду с некоторыми сценариями bash вокруг

Я надеялся, что для этого будет какая-то ссылка или коммит. Возможно перечислить узлы, помеченные как root, но я полагаю, что GIT сам по себе не отслеживает это. Таким образом, этот метод работает только в репозитории только с одним корневым коммитом.

Обновления 2017 и 2018 годов заключаются в том, что существует лучший вариант для git log, использующий git rev-list, но с той же проблемой Они по-прежнему просто используют завершающий элемент списка коммитов.

Вы можете получить «корневой коммит» для репозитория, имеющего только один корень, со следующим, и он работает для большинства репозиториев. Но это хак, и было бы лучше проверить вашу систему, почему и где она должна отмечать корневые коммиты. И просто пометьте его или запишите.

Вы можете получить первый коммит в репо с одним корнем с помощью следующей команды:

или (GIT 20 сентября 2012, 01:58:43

Если под «первым коммитом» вы подразумеваете родительский коммит ветви, у которой самих родителей нет, то вы хотите использовать для этого git-rev-list. Просто используйте

Это клонирует только определенный коммит. Вы можете проверить этот ответ для получения дополнительной информации.

Источник

how to clone an old git-commit (and some more questions about git)

2 Answers 2

A git repository contains the all history at all time.
So when you are cloning a repository, you are cloning it with its full history, and then, you can make a branch from whatever commit you want:

with SHA1 representing the commit id from which you want to proceed.

Branches in Git are just a way to keep track of one path of a DAG (Directed Acyclic Graph) which is the set of commits representing the history of a Git repository.
It is a mere pointer you assign to one of those commits, and it will keep moving along with each new commits.

Как клонировать определенный коммит git. 2HRWl. Как клонировать определенный коммит git фото. Как клонировать определенный коммит git-2HRWl. картинка Как клонировать определенный коммит git. картинка 2HRWl

You can mark a specific commit with a tag, which, like a branch, is a mere pointer, but an immutable one (it wont move when you make new commit).
You will use preferably annotated tags, which are stored as full objects in the Git database. They’re checksummed; contain the tagger name, e-mail, and date; have a tagging message; and can be signed and verified with GNU Privacy Guard (GPG).

The «Graphical Interfaces» section of InterfacesFrontendsAndTools page on Git Wiki lists the various GUI for Git at the moment.

You will see many questions about the difference between Git and SVN: see my answer (or this one) for example.
My most complete answer about the fundamental differences between Git and SVN is here:
«which of the two is better:git or SVN».

Как клонировать определенный коммит git. I4fiW. Как клонировать определенный коммит git фото. Как клонировать определенный коммит git-I4fiW. картинка Как клонировать определенный коммит git. картинка I4fiW

There are a few questions in this post, here is my take on some answers:

First, to «clone» a previous commit, you can do something like this:

1 to access the last commit’s first parent, and increment the number to get the parent’s parent and so on. More on tilde and caret notation.

The two commands above will put you in a detached HEAD state, which may or may not be important based on context. For example, it isn’t important if you are cloning as part of your deployment scripts and all you care about is accessing a previous commit (say, as part of a rollback strategy).

If you need to begin work from this point in history, you can run

A good git GUI? For me SourceTree is the best.

What’s different between git and svn?

git is a distribute version control system. svn is not. Also, branching (mentioned above) is easier in git.

For tagging, I don’t know if there’s «One True Way» (is there ever?) but just explore the git tag command. One great thing about git is how easy it is to clone a duplicate of your repo on your local computer (or wherever) and do whatever you want to it and see what happens. If you mess something up, just delete the directory. So, you can experiment with git tag in some testing directory and see what you like.

Источник

Как неглубоко клонировать конкретный коммит с глубиной 1?

Можно ли неглубоко клонировать конкретный коммит в репозиторий, то есть с глубиной 1? Что-то вроде

Мотивация состоит в том, чтобы избежать клонирования всего репозитория, а затем проверить эту конкретную фиксацию, когда нас интересует только состояние репозитория в этой конкретной фиксации.

4 ответа

Начиная с Git 2.5.0 (который должен быть доступен как на стороне клиента и на стороне сервера), вы можете установить uploadpack.allowReachableSHA1InWant=true на стороне сервера, чтобы разрешить выборку определенных SHA1:

Попробуйте использовать while в bash:

Это довольно медленно, потому что он извлекает каждую фиксацию отдельно; вы можете увеличить инкремент (чтобы получать коммиты партиями и повышать производительность по сети), но это все же метод грубой силы.

Непосредственный ответ: вы не можете.
Зачем? подробное объяснение можно найти здесь: Почему нет Git Клонировать конкретный вариант фиксации?

Что еще можно сделать?

Как клонировать репозиторий под конкретный коммит? (полный клон)

Как клонировать отдельную ветку?

Как клонировать только последний коммит из данной ветки?

Как неглубоко клонировать конкретный коммит с глубиной 1?

Вместо клонирования используйте команду выборки:

ПРИМЕЧАНИЕ. Мой пример не помогает клонировать по хешу фиксации, но он поможет клонировать тег и получить облегченный репозиторий.

Я использую эту командную конструкцию (проверено на v2.13.2.windows.1 ) для тегов:

—branch также может принимать теги и отсоединять HEAD от этой фиксации в полученном репозитории.

В двух словах может принимать «рефы». Вы можете прочитать больше здесь: Что означает сообщение об ошибке git «Сервер не разрешает запрос на нерекламируемый объект»?

Кроме того, здесь нет уловок вроде:

Спасибо @BenjiWiebe за то, что указал мне на мою ошибку.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *