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