Всем разработчикам для освоения кода требуются системы контроля версий, будь то собственный проект, командная работа, совместная работа, без помощи системы контроля версий не обойтись. Однако в настоящее время большинство начинающих разработчиков, не знающих или еще остающихся в нескольких часто используемых командах, то можно не сомневаться, что этого недостаточно. В этой статье говорится о подробном понимании того, как эффективно использовать Git и Git.
svn, svn — типичная централизованная система контроля версий. Git, с другой стороны, является распределенной системой контроля версий.
Что такое централизованная система контроля версий
Централизованная система контроля версий требует наличия сервера, т.к.центральный серверсетьЧтобы отправить код и загрузить код на наш центральный сервер с помощью системы контроля версий, все разработчики работают с одним и тем же репозиторием полной версии.
Что такое распределенная система контроля версий
В распределенной системе управления версиями компьютер каждого разработчика может использоваться как полная библиотека версий, и разработчики могут вносить изменения в библиотеку кода независимо от того, подключены они к Интернету или нет.Обычно сервер необходим для облегчения обмена всеми пользователями. .Code, все разработчики синхронизируют свою полную кодовую базу с сервером для обмена кодом.
Преимущества распределенных систем контроля версий
Преимущество распределенной системы контроля версий в том, что разработчики могут работать как с Интернетом, так и без него, внося изменения в свой полный репозиторий. В то же время у каждого разработчика есть эта полная библиотека версий, так что не нужно беспокоиться оцентральный серверЧто-то пошло не так, и все не могли работать. Более того, такие операции, как переключение веток git, основаны на перемещении позиции указателя, поэтому производительность высокая.
Раздел репозитория Git.
После инициализации репозитория git в локальной папке репозиторий имеет три раздела: рабочая область, индексная область и база данных.
- Рабочее пространство: это область, в которой мы фактически работаем, то есть, когда мы разрабатываем, все, что мы видим, это код рабочего пространства, и любая модификация является прямым изменением рабочего пространства.
- База данных: это наш полный репозиторий, в котором хранятся наши окончательные изменения в коде, а также конечный результат кода.
- Область индекса: между рабочей областью и базой данных находится область индекса, которая представляет собой область, подготовленную для отправки в базу данных.
основная операция
Хранилище инициализации:
git init
Добавьте модификацию рабочей области в индексную область:
git add <filename>
Добавить измененный файл в индексную область можно «*», либо выполнить пакетную операцию с помощью подстановочного знака «.»:
git add file1 file2 file3 // 将指定的多个修改文件添加到索引区
git add *.txt // 将所有txt文件添加到索引区
git add . // 将所有的文件添加到索引区
git commit -m "本次提交的信息"
статус и журнал
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Вы можете просмотреть текущий статус, например, в какой ветке он находится, есть ли изменения, которые не были отправлены, какие файлы были изменены и т. д.
git log
Вы можете просмотреть всю отправленную запись, она покажет каждого отправленного пользователя, время, информацию об отправке.
ветви
Суть ветки в Git — это указатель на последний коммит, а создание разных веток — это фактически создание нескольких указателей. Каждая ветка не влияет друг на друга и может развиваться параллельно, отвечая за разные задачи.
Создайте новую ветку, например новую ветку с именем test:
git branch test
Переключите ветки и войдите в тестовую ветку:
git checkout test
Объедините ветку и объедините изменения тестовой ветки с основной веткой:
// 在master分支中
git merge test
Удалить филиал теста
git branch -d test
удаленный склад
Клонирование и ассоциация
Как упоминалось ранее, все разработчики синхронизируют свою полную кодовую базу с удаленным репозиторием для групповой разработки. Клонируйте или загрузите удаленный репозиторий на свой компьютер с помощью следующей команды:
git clone [repository url]
После клонирования вы можете получить локальный репозиторий, связанный с удаленным репозиторием. Вы также можете напрямую связать удаленный репозиторий с помощью следующей команды:
// 将指定地址的远程数据库关联,并命名为origin
git remote add origin [repository url]
Отобразить список удаленных баз данных, таких как:
$ git remote
origin
Push-контент и изменения веток
git push -u origin master
-uЕго роль заключается в записи информации об удаленном адресе складских операций и так далее. Так, например, когда мы используем такие команды, как git pull back plus, вам не нужно переходить по адресу . Если нет, первое представление может быть опущено.-u.
После удаления локальной ветки синхронизируйте удаленную базу данных и удалите эту ветку в удаленной базе данных:
git push origin --delete <分支名称>
Хотите также отправить теги в удаленную базу данных:
git push origin --tags
Вытягивание содержимого и модификация веток
Извлеките последние изменения из ветки удаленного репозитория и объедините их с вашим собственным кодом:
git pull origin <远程仓库分支名称>
По умолчанию git pull не будет синхронизировать удаленные ветки удаленной базы данных, плюс параметр-pУдаленные ветки в удаленной базе данных можно удалить локально:
git pull -p
Извлеките изменения удаленной базы данных для просмотра, ноне сливатьсяв ваш текущий код:
git fetch <远程数据库名称> <分支>
Это извлечет удаленные изменения в локальную, и вы сможете просмотреть их локально, переключившись на «удаленную базу данных/ветку», например, чтобы просмотреть модификации удаленной главной ветки:
git checkout origin/master
Все ветки можно посмотреть через команду git branch и параметр teammate:
// 查看本地和远程所有分支
$ git branch -a
* master
remotes/origin/master
// 查看远程所有分支
$ git branch -r
origin/master
Работа на этикетке
- Легкие этикетки
- Теги аннотаций
Облегченные теги обычно используются в качестве временных тегов для облегчения нашей разработки. Теги аннотаций обычно используются для обозначения информации о версии онлайн-кода. Вы можете создать упрощенный тег, следуя следующим инструкциям:
git tag <标签名称>
Вы также можете добавить информационные примечания к тегам, чтобы создать тег аннотации.
git tag -a <标签名称> -m "备注信息"
// 比如:
git tag -a v1.0 -m "first version"
$ git tag
v1.0
Добавить параметры-nЗаметки можно даже увидеть вместе:
$ git tag -n
v1.0 first version
Удалить филиал:
git tag -d <分支名称>
Использование тегов в реальной разработке
Мы хотим увидеть содержимое определенного тега:
git checkout <标签名称>
git branch <分支名称> <标签名称>
Перезаписать или изменить самую последнюю фиксацию
Иногда мы хотим перезаписать предыдущую фиксацию текущей фиксацией, чтобы избежать избыточной истории коммитов в истории коммитов, мы можем использовать--amendпараметр:
git add <文件名>
git commit --amend -m "新的commit备注"
пройти через
git log
Глядя на журнал фиксации, вы можете видеть, что эта фиксация заменяет предыдущую фиксацию.
Отменить последний коммит (откат версии)
git reset --hard HEAD~
// ~的数量表示取消提交的数量,如果要取消强两次提交的话可以改为 HEAD~~
可以通过查看文件内容或查看git日志的方式来查看是否成功取消了修改。
здесьhardСмысл режима таков: будет затронута индексная область и работа, а соответствующий контент будет откатан. Кроме того, есть и другие режимы:
- --soft: только указатель головы возвращается в соответствующую позицию, и содержимое области индекса и рабочей зоны остаются без изменений.
- --hard: отправить изменения как в расположение HEAD, так и в индексную область и содержимое рабочей области.
Восстановление версии
Что делать, если мы сожалеем об откате версии и хотим вернуться к последней версии? Его можно переместить по идентификатору фиксации.
git reset --hard <对应的 commit -id>
Если мы не совершаем удостоверение личности, соответствующее запомнить, как это сделать? Вы можете просмотреть историю команды по инструкции Git Refrold.
$ git reflog
9154108 (tag: v1.1, tag: v1.0, origin/master, master) HEAD@{12}: pull: Fast-forward
1319463 HEAD@{13}: checkout: moving from 9154108ced0df7f7c220bc5440af008aff330e92 to master
9154108 (tag: v1.1, tag: v1.0, origin/master, master) HEAD@{14}: checkout: moving from master to origin/master
1319463 HEAD@{15}: commit (initial): first commit
Таким образом, вы можете увидеть идентификатор (первый столбец), соответствующий каждой операции фиксации, и тогда мы сможем перейти к какой версии.