Оригинальная статья, краткое изложение опыта и жизненные перипетии на всем пути от набора в школу до фабрики А
Нажмите, чтобы узнать подробностиwww.codercc.com
1. Введение в git
В реальной разработке git используется как инструмент контроля версий для совместной работы команды. Поэтому очень необходимо обобщить основные инструкции по работе с git.В этой статье некоторые термины или теоретические основы не перекодированы.Обратитесь к сообщению в блоге учителя Ляо Сюэфэн., эта статья только суммирует команды.
Общий процесс работы git выглядит следующим образом (из сети)
В основном это включает в себя четыре ключевых момента:
- Рабочая область: место, где на локальном компьютере хранятся файлы проекта, например папка LearnGitProject;
- Промежуточная область (индекс/стадия): при использовании git для управления файлами проекта папка .git будет добавлена к локальному файлу проекта, и эта папка .git называется репозиторием. Папка .git состоит из двух частей, одна из которых представляет собой промежуточную область (Index или Stage), в которой, как следует из названия, временно хранятся файлы.Обычно команда add используется для добавления файлов рабочей области в промежуточную площадь;
- Локальный склад: папка .git также включает ветку master, автоматически созданную git, и указывает указатель HEAD на ветку master. Используйте команду фиксации, чтобы добавить файлы из промежуточной области в локальный репозиторий;
- Удаленный склад: не на локальном складе, код проекта находится на удаленном сервере git, например, проект на github, это удаленный склад, обычно используйте команду клонирования, чтобы скопировать удаленный склад на локальный склад и отправить его на удаленный склад после разработки.
Подробнее:
Во время ежедневной разработки код фактически помещается в рабочую область, то есть в локальные файлы XXX.java.Культура кода и образование передаются в область временного хранения (Index/Stage) с помощью таких команд, как add, что означает, что код полностью передается git, который управляет им, а затем отправляет промежуточную область в основную ветку с помощью таких команд, как commit, что означает создание версии или отправку кода на локальное хранилище. Кроме того, процесс командной совместной работы естественным образом предполагает взаимодействие с удаленными репозиториями.
Поэтому после такого анализа git-команды можно разделить на такую логику для понимания и памяти:
-
команда настройки управления git;
Несколько интерактивных команд основного хранилища:
-
Взаимодействие между рабочей областью и областью подготовки;
-
Взаимодействие между зоной подготовки и локальным складом (филиалом);
-
Взаимодействие между локальными репозиториями и удаленными репозиториями.
2. команда настройки git
Информация о конфигурации запроса
- Список текущей конфигурации:
git config --list
; - Список конфигураций репозитория:
git config --local --list
; - Список глобальной конфигурации:
git config --global --list
; - Список конфигураций системы:
git config --system --list
;
Используя git в первый раз, настройте информацию о пользователе
- Настроить имя пользователя:
git config --global user.name "your name"
; - Чтобы настроить почтовые ящики пользователей:
git config --global user.email "youremail@github.com"
;
Другая конфигурация
- Настройте, какой инструмент анализа различий использовать при разрешении конфликтов, например vimdiff:
git config --global merge.tool vimdiff
; - Настройте цвет вывода команды git:
git config --global color.ui auto
; - Настройте текстовый редактор, используемый git:
git config --global core.editor vi
;
3. Операционные команды в рабочей области
Новый склад
- Управляйте файлами проекта в рабочей области с помощью git, то есть создайте новое локальное хранилище:
git init
; - Скопируйте проект из удаленного репозитория git:
git clone <url>
, например: git clone git://github.com/wasd/example.git; Если вы хотите определить новое имя проекта при клонировании проекта, вы можете указать новое имя проекта после команды clone:git clone git://github.com/wasd/example.git mygit
;
Отправить
- Отправьте все файлы в рабочей области в промежуточную область:
git add .
- Отправьте указанный файл в рабочей области в промежуточную область:
git add <file1> <file2> ...
; - Зафиксируйте все файлы в папке в рабочей области в промежуточной области:
git add [dir]
;
отозвать
- Удалите файл рабочей области, а также удалите соответствующую запись файла из промежуточной области:
git rm <file1> <file2>
; - Удалите файл из промежуточной области, но сохраните файл в рабочей области:
git rm --cached <file>
; - Отмените файлы, которые были помещены в промежуточную область:
git reset HEAD <file>...
; - Отменить последнюю операцию над файлом:
git checkout --<file>
. Чтобы убедиться, что последняя модификация файла больше не нужна, если вы хотите сохранить последнюю модификацию для будущей работы, вы можете использовать скрытие и ветвление; - Скрыть текущие изменения, чтобы иметь возможность переключать ветки:
git stash
; - Посмотреть весь текущий тайник:
git stash list
; - Примените последний тайник:
git stash apply
, если вы хотите применить более ранний тайник:git stash apply stash@{2}
; чтобы повторно применить поэтапные изменения, добавьте--index
параметр:git stash apply --index
; - С помощью команды apply просто применяется хранилище, а содержимое все еще находится в стеке, вам нужно удалить указанное хранилище:
git stash drop stash{0}
; если вы используете команду pop не только для повторного применения тайника, но и для его немедленной очистки из стека:git stash pop
; - В некоторых случаях вы можете захотеть применить изменения тайника, а после внесения некоторых других изменений отменить ранее примененные изменения тайника. Git не предоставляет такой команды, как stash unapply , но того же эффекта можно добиться, распаковав тайник:
git stash show -p stash@{0} | git apply -R
; Точно так же, если вы не укажете конкретный репозиторий, Git выберет самый последний репозиторий:git stash show -p | git apply -R
;
файл обновления
- Переименуйте файл и зафиксируйте переименованный файл в промежуточной области:
git mv [file-original] [file-renamed]
;
Проверить новую информацию
- Запросите статус всех файлов в текущей рабочей области:
git status
; - Сравните разницу между текущим файлом в рабочей области и staging области, то есть содержимым, которое не было временно сохранено после модификации: git diff сравнение разницы между указанным файлом в рабочей области и staging областью:
git diff <file-name>
;
4. Операционные команды на промежуточной площадке
коммит файлов в репозиторий
- Отправьте файлы в staging area на локальное хранилище, то есть отметьте новую версию:
git commit -m "commit_info"
; - Все файлы, которыми управляет git, размещаются и отправляются вместе, пропуская процесс добавления в область подготовки:
git commit -a -m "commit_info"
; - При отправке файлов, если вы обнаружите, что пропустили несколько файлов или комментарии неверны, вы можете отменить последнюю отправку:
git commit --amend
;
Посмотреть информацию
- Сравните различия между промежуточной областью и предыдущей версией:
git diff --cached
; - Отличие указанного файла в промежуточной области от локального хранилища:
git diff <file-name> --cached
; - Просмотр истории коммитов: git log; параметры
-p
Чтобы расширить содержимое diff каждой фиксации, используйте-2
Показать два последних обновления, напримерgit log -p -2
;
тег
Git использует два типа тегов:Легкий и аннотированный. Облегченный тег подобен ветке, которая не меняется, на самом деле это ссылка на конкретный объект коммита. С другой стороны, аннотированная метка — это отдельный объект, хранящийся в репозитории, который имеет собственную информацию о контрольной сумме, включая имя метки, адрес электронной почты и дату, а также описание метки. позволяет использовать GNU Privacy Guard (GPG) для подписи или проверки. В общем, мы рекомендуем использовать аннотированные теги, чтобы сохранить релевантную информацию; конечно, если это только временные теги или если вам не нужна дополнительная информация в примечании, можно использовать облегченный тег.
- Перечислите все присутствующие теги:
git tag
; - Используйте определенный шаблон поиска, чтобы перечислить подходящие теги, например, заинтересованные только в версиях серии 1.4.2:
git tag -l "v1.4.2.*"
; - Создайте метку с типом аннотации, вам нужно добавить
-a
параметры, такие какgit tag -a v1.4 -m "my version 1.4"
; - Используйте команду git show для просмотра информации о версии соответствующего тега вместе с объектом фиксации при отображении тега:
git show v1.4
; - Если у вас есть собственный закрытый ключ, вы можете использовать GPG для подписи тега, просто используйте команду
-s
параметр:git tag -s v1.5 -m "my signed 1.5 tag"
; - Проверьте подписанные теги: git tag -v , как в
git tag -v v1.5
; - Чтобы создать упрощенный тег, просто используйте команду git tag напрямую, даже
-a
,-s
а также-m
Никаких опций не требуется, просто укажите имя метки напрямую, напримерgit tag v1.5
; - Отправьте тег в удаленный репозиторий: git push origin , например
git push origin v1.5
; - Перенесите все локальные теги в удаленный репозиторий:
git push origin --tags
;
управление филиалом
- Создайте ветку:
git branch <branch-name>
,какgit branch testing
; - Переключиться с текущей ветки на другую ветку:
git checkout <branch-name>
,какgit checkout testing
; - Создайте новую и переключитесь на новую ветку:
git checkout -b <branch-name>
; - Удалить ветку:
git branch -d <branch-name>
; - Объединить текущую ветку с указанной веткой:
git merge <branch-name>
; - Показать все ветки локального репозитория:
git branch
; - Просмотрите информацию о последнем объекте коммита каждой ветки:
git branch -v
; - Посмотрите, какие ветки были объединены в текущую ветку:
git branch --merged
; - Посмотрите, какие ветки в данный момент не объединены в текущую ветку:
git branch --no-merged
; - Объединить удаленную ветку с текущей веткой:
git merge <remote-name>/<branch-name>
,какgit merge origin/serverfix
; Если это однострочная ветвь истории, нет никаких различий, которые нужно разрешать, достаточно просто переместить указатель HEAD вперед, чтобы этот процесс слияния можно было назвать перемоткой вперед (Fast forward), а если ветвь истории разветвлена , это будет Использовать две ветки текущей вилки в качестве двух предков для создания нового объекта коммита; если вы столкнулись с конфликтами слияния при слиянии ветвей, вы можете отправить их только после их разрешения вручную; - Создайте новую локальную ветку на основе удаленной ветки
:git checkout -b <branch-name> <remote-name>/<branch-name>
,какgit checkout -b serverfix origin/serverfix
; - Локальная ветка, извлеченная из удаленной ветки, называется веткой отслеживания. Переместите содержимое из ветки отслеживания в удаленную ветку:
git push
. Эта команда автоматически определяет, в какую ветку удаленного репозитория следует отправить данные; объедините удаленную ветку с веткой отслеживания:git pull
; - Переместите изменения, зафиксированные в ветке, в базовую ветку и воспроизведите их:
git rebase <rebase-branch> <branch-name>
,какgit rebase master server
, воспроизведите изменения, отправленные сервером ветки функций, на мастере базовой ветки; самое большое преимущество использования операции перебазирования заключается в том, что, как и при работе с одной веткой, отправленная история изменений также является строкой; если вы хотите выполнить перебазирование в другой функциональная ветвь, основанная на другой. Чтобы перебазировать функциональную ветвь на другую ветвь, используйте--onto
работать:git rebase --onto <rebase-branch> <feature branch> <sub-feature-branch>
,какgit rebase --onto master server client
; Принципы, которых следует придерживаться при использовании операции перебазирования:Никогда не перебазируйте ветку после публикации коммитов в ветке в общедоступном репозитории.;
5. Операции на локальном складе
- Просмотр удаленного склада, связанного с локальным складом:
git remote
; после клонирования каждого удаленного репозитория удаленный репозиторий по умолчаниюorigin
; добавлять-v
После отобразятся параметры удаленного складаurl
адрес; - Добавление удаленного репозитория обычно требует короткого псевдонима:
git remote add [remote-name] [url]
,Например:git remote add example git://github.com/example/example.git
; - Получите обновления из удаленного репозитория, недоступные в локальном репозитории:
git fetch [remote-name]
,какgit fetch origin
;Использование fetch только извлекает удаленные данные в локальное хранилище и не объединяет их автоматически в текущую рабочую ветку, их можно объединить только вручную. Если вы установили связь филиала с филиалом удаленного склада, вы можете использоватьgit pull
Вытягивать и вытягивать данные удаленной ветки, а затем автоматически объединять удаленную ветку с текущей веткой на локальном складе; - Перенесите ветку локального склада на удаленный склад:
git push [remote-name] [branch-name]
,какgit push origin master
; если вы хотите отправить локальную ветку в ветку с другим именем удаленного репозитория:git push <remote-name> <local-branch>:<remote-branch>
,какgit push origin serverfix:awesomebranch
; если вы хотите удалить удаленную ветку:git push [romote-name] :<remote-branch>
,какgit push origin :serverfix
. Локальная ветка здесь опущена, что эквивалентно отправке пустого содержимого в удаленную ветку, что эквивалентно удалению удаленной ветки. - Просмотр сведений об удаленном репозитории:
git remote show origin
; - Измените местную аббревиатуру удаленного склада:
git remote rename [old-name] [new-name]
,какgit remote rename origin org
; - Удалить удаленный репозиторий:
git remote rm [remote-name]
;
6. Игнорируйте файл .gitignore
В общем, у нас всегда есть файлы, которыми Git не должен управлять, и мы не хотим, чтобы они всегда отображались в списке неотслеживаемых файлов. Обычно это автоматически сгенерированные файлы, такие как файлы журнала или временные файлы, созданные во время компиляции. Мы можем создать файл с именем .gitignore, в котором перечислены шаблоны файлов, которые следует игнорировать. Например:
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为 txt 的文件
doc/**/*.txt
использованная литература
Очень подробные и точные учебные материалы по git;
git-cheat-sheet китайская версия
Сводка команд, информация общая, недостаточно подробная, для справки