как клонировать старый git-commit (и еще несколько вопросов о git)
у меня есть Git-репозиторий моего проекта примерно с 20 коммитами. Я знаю, как клонировать фактическую фиксацию с помощью git clone
,
- но как я могу "клонировать" старый коммит?
- есть ли действительно хороший Git-GUI (imho
qgit
не является хорошим GUI)? - что такое "ветви"?
- когда я хочу выпустить 0.1, 0.2 и так далее, каков наилучший способ отметить эти коммиты в git?
- что большие разницы к СВН?
2 ответов
репозиторий git содержит всю историю в любое время.
Поэтому, когда вы клонируете репозиторий, вы клонируете его с полной историей и затем, вы можете сделать ветку из любой фиксации, которую вы хотите:
$ git checkout -b aNewBranch SHA1
С SHA1, представляющим идентификатор фиксации, из которого вы хотите продолжить.
ветки в Git-это просто способ отслеживать один путь DAG (направленный ациклический граф) который является набором коммитов представление истории репозитория Git.
Это простой указатель, который вы назначаете одному из этих коммитов, и он будет продолжать двигаться вместе с каждым новым коммитом.
посмотреть Pro Git книги для более.
вы можете пометить конкретную фиксацию с помощью тег, который, как ветвь, является простым указателем, но неизменяемым (он не будет двигаться, когда вы делаете новую фиксацию).
Вы будете использовать предпочтительно аннотированный теги, которые хранятся как полные объекты в базе данных Git. Они являются контрольной суммой; содержат имя теггера, электронную почту и дату; имеют сообщение с тегами; и могут быть подписаны и проверены с помощью GNU Privacy Guard (GPG).
раздел "графические интерфейсы"InterfacesFrontendsAndTools страница на Git Wiki перечисляет различные GUI для Git на данный момент.
вы увидите много вопросов о разнице между Git и SVN: см.мой ответ: (или этот) например.
Мой самый полный ответ о фундаментальных различиях между Git и SVN здесь:
"какой из двух лучше: git или SVN".
есть несколько вопросов в этом посте, вот мой взгляд на некоторые ответы:
во-первых, чтобы "клонировать" предыдущую фиксацию, вы можете сделать что-то вроде этого:
git clone REPO_URL
git checkout HEAD~1 // checks out the last commit's first parent
использовать ~1
для доступа к первому родителю последнего фиксации и увеличения числа, чтобы получить родителя родителя и так далее. подробнее о нотации Тильды и каретки.
две команды выше поставят вас в отдельное головное состояние, которое может быть или не быть важным в зависимости от контекста. Например, это не важно, если вы клонируете как часть сценариев развертывания, и все, что вам нужно, - это доступ к предыдущей фиксации (скажем, как часть стратегии отката).
Если вам нужно начать работу с этого момента в истории, вы можете запустить
git checkout -b NEW_BRANCH_NAME
хороший Git GUI? Для меня SourceTree самый лучший.
какие ветки? По моим собственным словам, ветка - это очень простой способ поворота. Допустим, вы работаете в одной отрасли,master
и вы хотите провести эксперимент. Легко, просто git checkout -b experiment
и вы быстро в безопасном месте, чтобы сломать вещи.
что отличается между git и svn?
git-это использовать систему контроля версий. в SVN это не так. Кроме того, ветвление (упомянутое выше) проще в git.
для пометки, я не знаю, есть ли" один истинный путь " (есть ли когда-нибудь?) но просто исследуйте