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


75

У мене є git-сховище мого проекту з приблизно 20 комітами. Я знаю, як клонувати фактичний коміт git clone,

  • але як я можу "клонувати" старий коміт?
  • чи є справді хороший git-графічний інтерфейс (imho qgitне є хорошим графічним інтерфейсом)?
  • що саме таке "гілки"?
  • коли я хочу випустити 0.1, 0.2 тощо, який найкращий спосіб позначити ці коміти в git?
  • які великі відмінності від svn?

Відповіді:


130

Репозиторій git містить всю історію на будь-який час.
Отже, коли ви клонуєте сховище, ви клонуєте його з повною історією, а потім , ви можете зробити гілку з будь-якого коміту, який ви хочете:

 $ git checkout -b aNewBranch SHA1

SHA1 представляє ідентифікатор коміту, з якого ви хочете продовжити.


Гілки в Git - це лише спосіб відстеження одного шляху до DAG (Directed Acyclic Graph), який є набором комітів, що представляють історію сховища Git.
Це просто вказівник, який ви призначаєте одному з цих комітів, і він буде продовжувати рухатися разом із кожним новим комітом.

гілки

Докладніше див. У книзі Pro Git .


Ви можете позначити певний коміт тегом , який, як і гілка, є простим покажчиком, але незмінним (він не рухається, коли ви робите новий коміт).
Ви будете використовувати переважно анотовані теги, які зберігаються як повні об’єкти в базі даних Git. Вони мають контрольну суму; містити назву мітки, електронну пошту та дату; мати повідомлення про позначення; і може бути підписаний та перевірений за допомогою GNU Privacy Guard (GPG).


У розділі "Графічні інтерфейси" на сторінці InterfacesFrontendsAndTools на Git Wiki перелічено різні графічні інтерфейси для Git на даний момент.


Ви побачите багато запитань про різницю між Git та SVN: див. Мою відповідь (або цю ), наприклад.
Моя найповніша відповідь про принципові відмінності між Git та SVN - тут:
"що з двох краще: git або SVN" .


1
Власне, останнє запитання SO "що з двох краще: git або SVN" було видалено. Я скопіював його до старого відповідь: stackoverflow.com/questions/161541/svn-vs-git/2549128#2549128
VonC

5
тимчасово git checkout SHA1git checkout -b aNewBranch
поколупати

7

У цій публікації є декілька запитань, ось мій приклад щодо деяких відповідей:

По-перше, щоб "клонувати" попередній коміт, ви можете зробити щось подібне:

git clone REPO_URL
git checkout HEAD~1 // checks out the last commit's first parent

Використовуйте ~1для доступу до першого батька останнього коміту та збільшуйте число, щоб отримати батьківського батька тощо. Детальніше про позначення тильди та карет .

Дві наведені вище команди переведуть вас у від'єднаний стан HEAD, що може бути важливим або не бути важливим залежно від контексту. Наприклад, не важливо, чи клонуєте ви як частину сценаріїв розгортання, і все, що вам важливо, це доступ до попереднього коміту (скажімо, як частини стратегії відкоту).

Якщо вам потрібно розпочати роботу з цього моменту в історії, ви можете бігти

git checkout -b NEW_BRANCH_NAME

Хороший графічний інтерфейс git? Для мене SourceTree найкраще.

Що таке гілки? За моїми власними словами, гілка - це дуже простий спосіб обертання. Скажімо, ви працюєте над однією гілкою masterі хочете спробувати експеримент. Легко, справедливо, git checkout -b experimentі ви швидко знаходитесь у безпечному місці, щоб ламати речі.

Що відрізняється між git і svn?

git - це система управління версіями, що розповсюджується . svn не є. Крім того, розгалуження (згадане вище) легше в git.

Що стосується позначення тегами, я не знаю, чи існує "Один справжній шлях" (чи є він коли-небудь?), Але просто вивчіть git tagкоманду. Одна чудова річ у git - це те, як легко клонувати дублікат вашого репо на вашому локальному комп’ютері (або де завгодно) і робити все, що завгодно, і бачити, що станеться. Якщо ви щось заплутали, просто видаліть каталог. Отже, ви можете поекспериментувати git tagв якомусь тестовому каталозі і побачити, що вам подобається.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.