Git Notes — Git для всех программистов

Git
Git Notes — Git для всех программистов

предисловие

Эта статья ссылается на информацию г-на Ляо Сюэфэна о Git и мое собственное понимание Git, чтобы записать мой процесс обучения Git. Поскольку уровень ограничен, ошибки неизбежны, и исправления приветствуются.

что такое гит

  • Официальное слово: Git — это бесплатная распределенная система управления версиями с открытым исходным кодом, предназначенная для быстрой и эффективной обработки любых проектов, от небольших до крупных.
  • Цитируя г-на Ляо Сюэфэна, он может автоматически помочь мне записать изменения каждого файла и позволить коллегам редактировать его совместно, так что мне не нужно самому управлять кучей похожих файлов, и мне не нужно передавать файлы вокруг. Если вы хотите увидеть изменения, просто взгляните на них в программе.

Зачем изучать Git

  • Интервью нужно задавать. Может справиться с интервью.
  • Многие корпоративные разработчики используют Git для управления проектами. Если вы не изучите его сейчас, вы обязательно выучите его позже.
  • На мой взгляд, Git — это то, что сегодня должны освоить все программисты, а в будущем необходимо разрабатывать проекты с коллегами.Освоение команд Git может повысить эффективность разработки. .

Установить Гит

  • Windows
    Скачать прямо с официального сайта. После завершения загрузки щелкните правой кнопкой мыши файл, и если здесь есть Git Bash, установка прошла успешно. После установки также введите в командной строке
$git config --global user.name "你的名字"
$git config --global user.email "你的邮箱"

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

  • Mac
    В разделе комментариев указано, что Mac также можно установить так же, как и Windows, выполнив описанные выше шаги. Вы также можете установить Xcode прямо из AppStore.Xcode интегрирует Git, но он не установлен по умолчанию.Нужно запустить Xcode,выбрать меню "Xcode"->"Настройки",найти во всплывающем окне "Загрузки" , выберите «Инструменты командной строки», нажмите «Установить», чтобы завершить установку.

склад

  • Локальные репозитории предназначены для удаленных репозиториев.
  • локальный репозиторий = рабочая область + область версий
  • Рабочая область — это набор файлов на диске.
  • Область версий (библиотека версий).gitдокумент
  • Репозиторий = промежуточная область (этап) + ветка (мастер) + указатель Head
    • Возьмем, к примеру, мою наиболее часто используемую команду git, коммит на github.
    • git initПервоначально локальный репозиторий содержал только рабочую область, которая является наиболее распространенным рабочим состоянием. В настоящее время,git initнажмите, чтобы указать, что.gitфайла создается область версий.
    • git add .Указывает, что все файлы в рабочей области отправлены в область версий.кеш хранения
    • Конечно, вы также можетеgit add ./xxx/Один за другим добавляются в промежуточную область партиями.
    • git commit -m "xxx"плацдармвсеФайл отправляется в область хранилища, а область подготовки пуста.
    • git remote add origin https://github.com/name/name_cangku.gitСвяжите локальный репозиторий с удаленным репозиторием.
    • git push -u origin masterЗафиксируйте файлы в области хранилища на удаленном хранилище.
    • После фиксации рабочая область становится «чистой», если вы не вносили в нее никаких изменений. будет такая информацияnothing to commit, working tree clean

Отправить на GitHub

Когда я раньше не был знаком с командами git, когда я отправлял проекты на github, я напрямую извлекал файлы и отправлял их на веб-страницу. Типа стыдно.

  1. git init.Initialize, что означает превратить этот файл в репозиторий, которым может управлять Git. После инициализации откройте скрытый файл и вы увидите, что там есть.gitдокумент.
  2. git add .Точка после нее означает фиксацию всех файлов в промежуточной области.
  3. git add ./readme.md/Указывает, что файл readme.md в этом файле отправлен в промежуточную область.
  4. git commit -m "你要评论一点什么东西" git commitЭто означает отправить все файлы в промежуточной области на локальное хранилище.-mВслед за комментариями.
  5. git remote add origin https://github.com/name/name_cangku.gitОзначает связать ваш локальный репозиторий с удаленным репозиторием на GitHub. Вам нужно подключиться только один раз, и вам не нужно благодарить эту команду, когда вы отправите ее позже.nameваше имя на гитхабе,name_cangkuимя вашего репозитория.Уведомлениене ставь спину.gitпропущенный. Потому что я шел этим путем раньше и делал много окольных путей. Что касается того, как создать новый репозиторий на GitHub, в Интернете есть много туториалов, поэтому я не буду их здесь повторять.
  6. git push -u origin masterЗафиксируйте локальный репозиторий в удаленном репозитории. (Последний шаг) Обновите удаленный репозиторий, чтобы просмотреть отправленные файлы.
  7. Наконец, вgit commit -m ""раньше, можно повторитьgit addна сценическую площадку. ноgit commitпоместит все файлы, которые вы ранее сохранили, в промежуточную областьОдноразовыйВсе отправлено в местный репозиторий.

Откат и пересылка версии

Фиксация файла, а иногда и многократная фиксация в истории коммитов, создает разные версии. Для каждого коммита Git объединит их во временную шкалу. Как вернуться к предыдущей версии, которую мы зафиксировали, с помощьюgit reset --hard + 版本号Вот и все. номер версии доступенgit logДля проверки каждая версия будет генерировать другой номер версии. После обратного хода,git logПроверяем и видим, что ближайшей к нам версии больше нет. Но я также хочу перейти на самую последнюю версию, что мне делать? если толькоgit reset --hard + 版本号Просто сделай это. Делая шаг назад, хотя мы можемgit reset --hard + 版本号, Вы можете переключаться между разными версиями, запоминая номер версии.но, Что мне делать, если я иногда теряю номер версии?git reflogПомогите вам записать каждую команду, чтобы вы могли найти номер версии, чтобы вы могли пройтиgit resetПриходите на версию челнока.

отозвать

  • Сценарий 1. Когда вы находитесь в рабочей области, вы что-то изменяете и хотите отменить изменение.git checkout -- file. Преподаватель Ляо Сюэфэн указал, что при отмене модификации вернётся в то же состояние, что и библиотека версий, то есть заменит версию в рабочей области версией в библиотеке версий.
  • Сценарий 2. Вы изменяете содержимое и получаетеgit addна сценическую площадку. Что мне делать, если я хочу отменить? обратная версия,git reset --hard + 版本号,Сноваgit checkout -- file, чтобы заменить версию рабочей области.
  • Сценарий 3. Вы изменяете содержимое и получаетеgit commitприбытьmaster. Как и в Сценарии 2, версия откатывается, а затем отменяется.

Удалить

  • если выgit addЕсли вы поместите файл в промежуточную область, а затем удалите файл в рабочей области, Git узнает, что вы удалили файл. Если вы хотите удалить файл в репозитории,git rmиgit commit -m "xxx".
  • Что делать, если вы удалили файл из своего рабочего пространства по ошибке? используйте команду отмены,git checkout --<file>может.Это еще раз доказывает, что команда отмены на самом деле заменяет версию рабочей области на версию в репозитории.Независимо от того, изменена ли рабочая область или удалена, это может быть «восстановление в один клик».

филиал

Ветви подобны параллельным вселенным, говорит Учитель Ляо Сюэфэн. Вы создали ветку, которая принадлежит вам, другие не могут ее видеть, и вы продолжаете нормально работать в исходной ветке, в то время как вы работаете над своей собственной веткой, отправьте ее, если хотите, пока разработка не будет завершена, а затем слейте его с исходной веткой, таким образом, это будет безопасно и не повлияет на работу других.

Создавать и объединять ветки

Существует только одна главная ветвь, когда никакие другие ветки не подключены. каждый раз, когда тыgit push -u origin masterФиксация заключается в добавлении временной шкалы, и мастер будет двигаться вместе с ней.

Создайте ветку другого и отправьте ее через др. Несмотря на то, что временная шкала сдвинулась вперед, главный мастер ветки все еще находится в исходном положении.

После теоретического анализа давайте посмотрим, как написать команду.

  • создать веткуother, переключить наotherфилиал.
git branch other
git checkout other
  • Посмотреть все текущие ветки
git branch
* other
  master

Текущая ветвь будет иметь*

  • использоватьotherОтправить
git add ./xxx/
git commit -m "xxx"
  • otherветвь сделана, переключиться обратноmaster
git checkout master
  • На данный момент нет основной веткиotherфайлы, потому что ветвь еще не была объединена.
  • объединить ветвь
git merge other
  • После завершения слияния файлы можно просмотреть в основной ветке.
  • Удалитьotherфилиал.
git branch -d other
  • Отсюда я подумал, что в дальнейшей работе это должна быть открытая команда для совместной разработки проекта, тимлид создаст много веток, каждую ветку можно передать одному человеку для развития определенной функции, а команда будет развиваться вместе, не мешая друг другу. Чья функция завершена, руководитель группы может объединить выполненную ветвь. О, идеально!

Устранение неполадок слияния ветвей

В таком случае ветвьotherужеcommitв настоящее время,ноВ этот момент указатель указывает назадmasterкогда иmasterне сливаются, аgit add / commitОтправлено. Таким образом возникает конфликт, ветка mastermasterсодержимое файла сotherСодержимое веток разное. Нельзя объединять! так,

  • Измените содержимое файла, чтобы оно было согласованным.
  • git add git commitОтправить.
  • Филиал был объединен.
  • git log --graphПосмотреть график слияния ветвей
  • git branch -d otherВетка удалена и задача окончена.

Стратегия управления филиалом

  • git merge --no-ff otherинвалидFast forwardрежим, потому что с помощьюFast forwardрежиме, после удаления ветки информация об истории ветки будет потеряна.

БАГ ветка

Учитель Ляо Сюэфэн упомянул, что каждую ошибку в работе можно исправить через новую временную ветку.После исправления ветка объединяется, а затем временная ветка удаляется. Но если у вас есть ветка на работе, ваш начальник хочет, чтобы вы изменили ошибку другой ветки. Вы хотите сохранить ветку, над которой сейчас работаете,git stash, «сохранить» текущий рабочий сайт и продолжить работу после восстановления. После того, как вы устраните ошибку,git checkout otherвернуться в свою ветку. использоватьgit stash listПосмотрите, куда ушла работа, которую вы только что «сохранили». На данный момент вы хотите возобновить работу:

  • git stash applyвосстановить, но не удалитьstashсодержание,git stash dropУдалитьstashсодержание.
  • git stash popПри этом содержимое тайника также удаляется.
  • В это время используйтеgit stash listПосмотреть, ничего не видноstashсодержание.
    Резюме: при исправлении ошибок мы исправим их, создав новую ветку ошибок, затем объединим и, наконец, удалим; когда работа не завершена, сначала git спрячет рабочий сайт, затем исправьте ошибку, а после исправления git заначка поп, за работу

удалить ветку

  • git branch -d + 分支Возможно, удаление не удастся, потому что Git защищает неслитые ветки.
  • git branch -D + 分支Принудительно удалять, отбрасывать неслитые ветки.

совместная работа нескольких человек

  • git remoteПросмотрите информацию об удаленной библиотеке, она отобразитorigin, имя удаленного склада по умолчаниюorigin
  • git remote -vпоказать более подробную информацию
  • git push -u origin masterтолкатьmasterответвление кoriginУдаленный репозиторий.
  • git push -u origin otherтолкатьotherприбытьoriginУдаленный репозиторий.

получить ветку

Когда возникает конфликт, показанный на рисунке выше,

  • git pullВозьмите последнюю фиксацию из удаленного репозитория, объедините ее локально и разрешите конфликт. в ходе выполненияgit pull
  • еслиgit pullТоже не получилось, но тоже указать связь между ветками, на этом шаге Git напомнит, как это сделать. после этогоgit pull.

    Резюме учителя Ляо Сюэфэна: Рабочий режим совместной работы нескольких человек обычно выглядит следующим образом:

    • Во-первых, попробуйте использоватьgit push origin <branch-name>продвигать собственные изменения;

    • Если отправка не удалась из-за того, что удаленная ветка новее вашей локальной, вам нужно использоватьgit pullпопытка слияния;

    • Если слияние имеет конфликты, разрешите конфликты и зафиксируйте локально;

    • Если конфликта нет или конфликт разрешен, используйтеgit push origin <branch-name>Толчок будет успешным!

    • еслиgit pullнамекатьno tracking information, это означает, что связь между локальной ветвью и удаленной ветвью не создана, используйте командуgit branch --set-upstream-to <branch-name> origin/<branch-name>.

    Rebase

  • git rebaseКажется более интуитивным «упорядочить» историю разветвленных коммитов в прямую линию, но недостатком является то, что локальный разветвленный коммит был изменен.
  • Наконец-то в процессеgit push -u origin master
  • rebaseЦель состоит в том, чтобы нам было проще просматривать изменения в исторических коммитах, поскольку разветвленные коммиты требуют трехстороннего сравнения.

Управление тегами

Например, если приложение собирается выйти в сеть, оно обычно помещает тег в репозиторий, Таким образом определяется помеченная версия. Всякий раз, когда в будущем использование версии определенного тега будет означать удаление исторической версии момента, когда тег был помечен. Итак, теги — это тоже снимок репозитория.
Хотя тег Git — это моментальный снимок репозитория, на самом деле он является указателем на фиксацию.
tagНа самом деле это осмысленное имя, которое легко запомнить, и оно привязано к коммиту. Напримерtag v2.1это назвать версию чего-то в историиv2.1

Создать ярлыки

шаг:

  • git branchпросмотреть текущую ветку,git checkout masterпереключить наmasterфилиал.
  • git tag <name>метка, по умолчаниюHEAD. Напримерgit tag v1.0
  • Тег по умолчанию попал в последнюю фиксациюcommitВверх. Если вы хотите отметить в предыдущемcommitвплоть доgit logнайти исторические коммитыcommit id.
  • еслиcommt idдаdu2n2d9,воплощать в жизньgit tag v1.0 du2n2d9поставь эту версиюv1.0лейбл.
  • git tagПросмотреть все теги, вы можете узнать историю версииtag
  • Теги перечислены не в хронологическом порядке, а в алфавитном порядке.
  • git show <tagname>Просмотрите информацию о этикетке.
  • git tag -a <标签名> -m "<说明>", чтобы создать метку с описанием.-aуказать имя ярлыка,-mЗадает текст описания. использоватьshowИнструкцию можно посмотреть.

Вкладка «Действие»

  • git tag -d v1.0Удалите этикетку. Потому что созданные теги хранятся только локально и не будут автоматически передаваться на удаленный сервер. Таким образом, ошибочно введенные теги можно безопасно удалить локально.
  • git push origin <tagname>отправить тег на удаленный
  • git push origin --tagsОдновременно отправить все локальные теги, которые не были отправлены на удаленный сервер.
  • Если тег перенесен на удаленный.git tag -d v1.0Сначала удалите локальный тег v1.0.git push origin :refs/tags/v1.0удалить удаленный тег v1.0

Настроить Git

  • git config --global color.ui trueСделайте так, чтобы Git отображал цвета, чтобы вывод команды выглядел более заметным
  • игнорировать специальные файлы Создавать.gitignoreфайл, введите имя файла, которое необходимо игнорировать. Git автоматически игнорирует эти файлы. Я также столкнулся с такими проблемами в обучении, какnode_modulesфайл можно игнорировать.
  • Принцип игнорирования файлов: игнорировать файлы, автоматически созданные операционной системой, такие как эскизы и т. д.; Игнорировать промежуточные файлы, исполняемые файлы и т.д., сгенерированные при компиляции, то есть, если файл автоматически сгенерирован другим файлом, то автоматически сгенерированный файл не нужно помещать в репозиторий, например файл .class, сгенерированный с помощью компиляция Java; Игнорируйте свои собственные файлы конфигурации с конфиденциальной информацией, такой как пароли.

  • Принудительно зафиксировать игнорируемые файлы.git add -f <file>
  • git check-ignore -v <file>Проверьте, почему Git игнорирует файл.
  • Псевдонимы для команд Git, это немного дерзко, то есть вы хотите ввести его позжеgit rebaseКогда вы дадите ему "псевдоним", просто назовите егоgit nb. Позже вы можете пройтиgit nbзаменитьgit rebase. Конкретно как преобразоватьВеб-сайт учителя Ляо СюэфэнаСмотреть. Из-за ограниченного уровня я думаю, что хорошо сначала разобраться с обычными командами Git.

Краткое изложение общих команд Git

  • git config --global user.name "你的名字"пусть вы всеGitСклад связывает ваше имя
  • git config --global user.email "你的邮箱"пусть вы всеGitПривязать почту к складу
  • git initИнициализируйте свой репозиторий
  • git add .Отправьте все файлы в рабочей области в промежуточную область.
  • git add ./<file>/поставить рабочее пространство<file>Отправьте файл в промежуточную область
  • git commit -m "xxx"Отправьте все файлы из промежуточной области в складскую область,Площадка пуста
  • git remote add origin https://github.com/name/name_cangku.gitПодключить локальный репозиторий к удаленному репозиторию
  • git push -u origin masterПоместите основную ветку в область репозиторияmasterОтправить в удаленный репозиторий
  • git push -u origin <其他分支>Зафиксировать другие ветки в удаленном репозитории
  • git statusПросмотр состояния текущего склада
  • git diffПросмотр конкретного содержимого модификации файла
  • git logПоказать историю коммитов от самого последнего до самого дальнего
  • git clone + 仓库地址Скачать файл клона
  • git reset --hard + 版本号Версия Backtrack, номер версии находится вcommitкогда сmasterследовать за
  • git reflogпоказать историю команд
  • git checkout -- <file>Команда отмены заменяет файлы в рабочей области файлами в репозитории. я чувствуюGitМеждународныйctrl + z
  • git rmудалить файлы репозитория
  • git branchПосмотреть все текущие ветки
  • git branch <分支名字>создать ветку
  • git checkout <分支名字>переключиться на ветку
  • git merge <分支名字>объединить ветвь
  • git branch -d <分支名字>Удали ветку, может и не удалить, т.к.Gitзащитит неслитые ветки
  • git branch -D + <分支名字>Принудительно удалить, отбросить неслитые ветки
  • git log --graphПосмотреть график слияния ветвей
  • git merge --no-ff <分支名字>Отключить при объединении ветокFast forwardрежим, поскольку в этом режиме теряется информация об истории ветвлений
  • git stashКогда вставлены другие задачи, «сохранить» текущий рабочий сайт и возобновить работу позже
  • git stash listПосмотрите, куда ушла работа, которую вы только что «спрятали».
  • git stash applyвосстановить, но не удалитьstashсодержание
  • git stash dropУдалитьstashсодержание
  • git stash popУдалил содержимое тайника при восстановлении
  • git remoteПросмотрите информацию об удаленной библиотеке, она отобразитorigin, имя удаленного склада по умолчаниюorigin
  • git remote -vпоказать более подробную информацию
  • git pullвозьмите последнюю фиксацию из удаленного репозитория, объедините ее локально иgit pushНапротив
  • git rebase«Организовать» историю разветвленных коммитов в виде прямой линии, что выглядит более интуитивно понятным.
  • git tagПросмотреть все теги, вы можете узнать тег исторической версии
  • git tag <name>метка, по умолчаниюHEAD. Напримерgit tag v1.0
  • git tag <tagName> <版本号>Пометьте номер версии, номер версииcommit, за которым следует строка буквенно-цифровых символов
  • git show <tagName>Просмотр информации о теге
  • git tag -a <tagName> -m "<说明>"Создавайте этикетки с описаниями.-aуказать имя ярлыка,-mУкажите текст описания
  • git tag -d <tagName>убрать тэг
  • git push origin <tagname>отправить тег на удаленный
  • git push origin --tagsОдновременно отправить все локальные теги, которые не были отправлены на удаленный сервер.
  • git push origin :refs/tags/<tagname>удалить удаленный тег<tagname>
  • git config --global color.ui trueСделайте так, чтобы Git отображал цвета, чтобы вывод команды выглядел более заметным
  • git add -f <file>Принудительно зафиксировать игнорируемые файлы
  • git check-ignore -v <file>Проверьте, почему Git игнорирует файл

Эпилог

Учитель Ляо Сюэфэн рассказывает о Git в доступной для понимания манере и очень дружелюбно относится к Сяобаю. Серьезно потратьте два дня на то, чтобы разобраться, и это окупится.Портал личного веб-сайта Учителя Ляо

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