как клонировать старый 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.
Это простой указатель, который вы назначаете одному из этих коммитов, и он будет продолжать двигаться вместе с каждым новым коммитом.

branches

посмотреть 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.

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