Дорогие Наггетс, всем привет, я второй брат!
Для новичков в работе с Git действительно легко внести некоторую ненужную путаницу в репозиторий кода, ведь в колледже основное внимание уделяется изучению языков программирования и на базе компьютеров. Но как только вы принимаете участие в работе, вы должны усердно работать над хранилищем кода, В конце концов, вам нужно несколько человек для упражнений, нет, несколько людей сотрудничают.
Так случилось, что второй брат недавно опубликовал серию статей о Git, Эта статья научит вас, как вернуться к основам использования Git. Ну, я чувствую запах любимцев, поедающих пепел~
PS: Чтобы помочь большему количеству энтузиастов Java, «Дорога к продвинутым программистам Java» была открыта для GitHub (включена в эту статью). На данный момент колонка получила 817 звезд. Если вам нравится эта колонка и вы считаете ее полезной, вы можете щелкнуть звезду, что также будет способствовать более систематическому обучению в будущем.:
Я очень рад видеть увеличение количества звезд с каждым днем.Я надеюсь, что все больше и больше энтузиастов 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, чтобы вам не приходилось вводить имя пользователя и пароль каждый раз при доступе.
Первый шаг, через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 мы сначала поговорим здесь, надеясь дать нуждающимся читателям немного помощи и вдохновения, увидимся в следующем выпуске~
Меня ничто не остановит - кроме цели, даже если на берегу розы, тени и тихие гавани, я не лодка.