Пожалуйста, перестаньте относиться к Git легкомысленно — как я использую Git на работе

задняя часть Git
Пожалуйста, перестаньте относиться к Git легкомысленно — как я использую Git на работе

Дорогие Наггетс, всем привет, я второй брат!

Для новичков в работе с Git действительно легко внести некоторую ненужную путаницу в репозиторий кода, ведь в колледже основное внимание уделяется изучению языков программирования и на базе компьютеров. Но как только вы принимаете участие в работе, вы должны усердно работать над хранилищем кода, В конце концов, вам нужно несколько человек для упражнений, нет, несколько людей сотрудничают.

Так случилось, что второй брат недавно опубликовал серию статей о Git, Эта статья научит вас, как вернуться к основам использования Git. Ну, я чувствую запах любимцев, поедающих пепел~

PS: Чтобы помочь большему количеству энтузиастов Java, «Дорога к продвинутым программистам Java» была открыта для GitHub (включена в эту статью). На данный момент колонка получила 817 звезд. Если вам нравится эта колонка и вы считаете ее полезной, вы можете щелкнуть звезду, что также будет способствовать более систематическому обучению в будущем.:

GitHub.com/IT Ван Эр/до…

Я очень рад видеть увеличение количества звезд с каждым днем.Я надеюсь, что все больше и больше энтузиастов Java смогут извлечь пользу из этого проекта с открытым исходным кодом.Звезда все большего количества людей также будет вдохновлять меня продолжать обновлять~

1. Создайте склад

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

Создайте новую папку, скажем, testgit, и используйтеgit initКоманда для инициализации этой папки в качестве репозитория Git.

После успешной инициализации Git-репозитория вы увидите дополнительную директорию .git, не трогайте ее, чтобы не повредить структуру Git-репозитория.

Далее добавим файл readme.txt с содержимым «Старое железо, не забудь дать второму брату три подключения», и отправим его в репозиторий Git.

Первый шаг, используйтеgit addКоманда для добавления новых файлов в промежуточную область.

Второй шаг, используйтеgit commitКоманда указывает Git зафиксировать файл в репозитории.

можно использоватьgit statusчтобы увидеть, есть ли незафиксированные файлы.

Вы также можете добавить новую строку в файл «Традиционные достоинства не могут быть потеряны, не забудьте поставить лайк~», а затем использоватьgit statusчтобы увидеть результаты.

Если вы хотите увидеть, где именно был изменен файл, вы можете использоватьgit diffЗаказ:

После подтверждения измененного содержимого вы можете использоватьgit addиgit commitОтправить снова.

2. Откат версии

Снова измените файл, добавьте строку: «xxx, I love you ❤» и отправьте его в репозиторий Git.

Теперь я внес три изменения в файл readme.txt. в состоянии пройтиgit logКоманда для просмотра истории:

также черезgitkЭта команда запускает графический интерфейс для просмотра истории версий.

Если вы хотите откатиться, например, на предыдущую версию, вы можете выполнить следующие две команды:

1)git reset --hard HEAD^, последняя версия былаgit reset --hard HEAD^^, и так далее.

2)git reset --hard HEAD~100, если откатиться на первые 100 версий, эта команда удобнее предыдущей.

Затем, если откат неверен, вы хотите восстановить его, но не можете вспомнить номер версии, вы можете выполнить его сначалаgit reflogКоманда для проверки номера версии:

затем пройтиgit reset --hardкоманда для восстановления:

В-третьих, разница между рабочей зоной и зоной временного хранения

Концепции рабочего пространства и промежуточной области были подчеркнуты в предыдущих главах, но, учитывая, что некоторые небольшие партнерыgit addиgit commitМежду командами все еще есть некоторые сомнения, и мы еще раз подчеркнем это здесь - обучение знанию таково, только повторяя его без устали, можно его по-настоящему понять и освоить.

1)Рабочее пространствоНапример, упомянутая выше директория testgit относится к рабочей области, и в нее помещается файл readme.txt, с которым мы работаем.

2)кеш хранения, скрытый каталог .git не относится к рабочему пространству, в нем много вещей (репозиторий Git), самое важное из которых — staging area.

Git делится на два этапа при отправке файлов, первый шагgit addКоманда состоит в том, чтобы добавить файл в промежуточную область, второй шагgit commitВсе содержимое промежуточной области будет отправлено в репозиторий Git.

"Почему вам нужно сначала добавить перед фиксацией?"

Самая прямая причина в том, что Линус придумал концепцию «временного хранилища». Так зачем заниматься этой концепцией? Площадки нет?

Что ж, чтобы ответить на этот вопрос, нам нужно вернуться к первоисточнику.

До Git SVN была интегратором систем управления версиями кода. Одно из преимуществ SVN по сравнению с предыдущими версиями CVS состоит в том, что каждая фиксация может состоять из нескольких файлов, и эта фиксация является атомарной, либо все завершаются успешно, либо все терпят неудачу.

Преимущества атомарности очевидны, что позволяет восстановить проект в целом до определенного момента времени, в этот момент SVN полностью злоупотребляет системами управления версиями кода, такими как CVS.

Как самая мощная система управления версиями кода, Git, естественно, опирается на превосходную функцию SVN. Но в отличие от SVN, Git начинался с командной строки и без графического интерфейса.Если вы хотите выбрать несколько файлов или не выбирать определенные файлы одновременно, как SVN (см. рисунок выше), это действительно особенная проблема.

Для такого талантливого игрока, как Линус, графический интерфейс, несомненно, низок, но командная строка в данном случае действительно проблематична~

Что делать?

Причина, по которой Бог есть Бог, заключается в том, что он может придумать идеальное решение, когда столкнется с проблемой.кеш храненияРазве это не конец?

Временное хранилище может свободно помещать в него модификации различных файлов, достаточно передатьgit addЭта простая команда тщательно выбирает файлы для фиксации, а затем выполняет одноразовую (атомарную)git commitКогда дело доходит до репозитория, все проблемы решаются.

Добавляем новый файл readyou.txt в директорию testgit, содержание "Второй брат, я хочу поужинать с тобой~~~" и добавляем еще строчку в файл readme.txt "Нравится, смотри, оставляй сообщение , единый сервис переадресации~".

мы сначала используемgit statusКоманда для проверки состояния, а затем используйтеgit addДобавьте файл в промежуточную область, а затем снова используйте его.git commitОднократная фиксация в репозитории Git.

4. Аннулирование поправок

Теперь я добавил строку в файл readyou.txt: «Второй брат, я хочу встречаться с тобой~~~». Когда я хочу отправить, я внезапно обнаруживаю, что добавленный контент неверен, мне нужно вернуться к предыдущей версии, что мне делать?

1) Я знаю, что изменить, изменить это напрямую, затем добавить и совершить перезапись.

2) забыл что модифицировать, поgit reset -- hard HEADВернуться к предыдущей версии.

Есть ли другой способ?

Ответ, конечно, да, на самом деле, когда мы реализуемgit statusКогда команда проверяет состояние Git, результат подсказывает нам, что мы можем использоватьgit restoreчтобы отменить эту операцию.

На самом деле, до версии git версии 2.23.0 можно было пройтиgit checkoutкоманда для завершения операции отмены.

Checkout может создавать ветки, экспортировать ветки, переключать ветки, удалять файлы из промежуточной области и т. д. Людей легко запутать слишком большим количеством функций в одной команде. Версия 2.23.0 изменила эту путаницу, и появились две новые команды, git switch и git restore.

switch фокусируется на переключении ветвей, а restore фокусируется на отмене изменений.

5. Удаленный склад

Git — это распределенная система контроля версий, поэтому один и тот же репозиторий Git может быть распределен на разные машины. В начале есть только одна машина и один исходный репозиторий, а позже другие машины могут копировать исходную версию с этой машины, как агент Смит в «Матрице», без какой-либо разницы.

Это также одна из особенностей, которая отличает Git от централизованной системы контроля версий SVN.

Мы можем построить сервер Git, который может работать 24 часа в сутки, а затем другие смогут копировать с этого «сервера». Однако из-за существования GitHub шаг по созданию Git-сервера самостоятельно можно сэкономить.

Как видно из названия, GitHub используется для предоставления услуг хостинга репозитория Git.Просто зарегистрируйте учетную запись GitHub, вы можете бесплатно получить удаленный сервер Git, который может работать 24 часа в сутки.

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

docs.GitHub.com/Talent/AUT отлично подходит для…

Первый шаг, черезls -al ~/.sshКоманда для проверки существования ключа SSH

Если нет трех файлов, id_rsa.pub, id_ecdsa.pub и id_ed25519.pub, ключ не существует.

Второй шаг — сгенерировать новый SSH-ключ.

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

ssh-keygen -t ed25519 -C "your_email@example.com

Затем полностью введите:

Не забудьте скопировать ключ в файл id_ed25519.pub:

Третий шаг, добавьте ключ SSH в учетную запись GitHub.

Найдите ключи SSH и GPG в меню настроек вашей личной учетной записи, добавьте ключ, который вы только что скопировали, в столбец ключей и нажмите «добавить ключ SSH» для отправки.

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

Зачем GitHub нужны SSH-ключи??

Потому что GitHub должен подтвердить, что именно вы отправили версию в свой собственный удаленный репозиторий, а не кто-то еще притворялся.

Четвертый шаг, создайте личный репозиторий на GitHub.

Нажмите Новый склад и введите название склада и другую информацию:

Пятый шаг, синхронизируйте локальный репозиторий с GitHub.

Скопируйте адрес удаленного репозитория:

Выполнить в локальном репозиторииgit remote addКоманда добавляет репозиторий GitHub в локальный:

Когда мы впервые подключаемся к GitHub с помощью команды Git push, мы получаем предупреждение ⚠️:

The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Это потому, что вам нужно подтвердить вручную, просто введите да.

Далее мы используемgit pushкоманда, чтобы отправить текущую локальную ветку на GitHub. После добавления параметра -u Git не только передаст локальную главную ветку в удаленную главную ветку, но и свяжет локальную главную ветку с удаленной главной веткой, что может упростить команды в будущих отправках или извлечениях (например,git push github master).

На этом этапе, когда мы чистим GitHub, мы видим, что есть еще одна основная ветка, и оба локальных файла были успешно отправлены!

Отныне, пока вы вносите изменения локально, вы можете передатьgit pushКоманда отправляется в удаленный репозиторий GitHub.

также можно использоватьgit cloneКоманда копирует удаленный репозиторий в локальный. Например, у меня сейчас есть склад JavaBooks с 3,4 тыс. звезд,

тогда я используюgit cloneкоманду для локального копирования.


Что ж, об основных принципах работы с Git мы сначала поговорим здесь, надеясь дать нуждающимся читателям немного помощи и вдохновения, увидимся в следующем выпуске~

Меня ничто не остановит - кроме цели, даже если на берегу розы, тени и тихие гавани, я не лодка.