О некоторых вещах, которые вы будете использовать в своей повседневной работе

JavaScript

предисловие

Git — это инструмент контроля версий, который имеет три основных преимущества:

  1. Откат от текущей версии к любой версии

  2. Посмотреть исторические версии

  3. Сравните различия между двумя версиями

git

связанные термины

repository  仓库
branch      分支
summary     摘要
track       跟踪
modify      修改
stage       暂存
commit      提交
push        推送
pull        拉取
clone       克隆
amend       修改
merge       合并
conflict    冲突
origin      源
upstream    上游
downstream  下游
verbose     详情
reflog      参照日志

основы git

  1. Изменено: был изменен, изменен проект, но не отправлен в локальную базу данных, т.е.git add

  2. поэтапно: временно сохранено, то есть выполненоgit add, но ни одинgit commit

  3. commit: было отправлено, сохранено в локальной базе данных, то есть выполненоgit commit

основной рабочий процесс git

  • написать код
  • Сделайте снимок измененного файла и сохраните его в тестовой области.
  • Зафиксируйте код, загрузите снимок файла в тестовой области на git.

базовая конфигурация

Просмотрите текущую конфигурацию git:

git config --list
git config user.name
git config user.email

//通过git config -h了解更多的git配置查询

Измените текущую конфигурацию (обычно нужно настроить только один раз, но если компьютер меняется или система меняется, нам нужно ее перенастроить):

//用户名配置
git config --global user.name "xiaohuochai"

//邮箱配置
git config --global user.email "121631835@qq.com"

Конфигурация проекта.gitignore

Когда мы отправляем проект в git, есть много файлов, которые не нужно отправлять, напримерnode_modules, .vscode, .ideaтак далее

Это то, что нам нужно создать в корневом каталоге проекта.gitignoreдокумент

node_modules/
/*/node_modules/
.idea
.vscode

настроить ssh

Когда мы удаляем сервер с githubpullа такжеpushКак проверить, кто фиксирует и извлекает код? Чтобы избежать проблем с вводом имени пользователя и пароля каждый раз, мы можем решить эту проблему, настроив ssh.

Просмотр собственного ssh:

//ssh一般存在.ssh中
//打开命令行
cd ~/.ssh           //进入对应目录
ls                  //如果有可以看到私钥id_rsa文件和公钥id_rsa.pub
cat id_rsa.pub 或者 vim id_rsa.pub      //查看文件内容

Если нет, мы можем сгенерировать его с помощью следующей команды

ssh-keygen

Далее копируем содержимое открытого ключа и авторизуемся на github

Скиньте аватарку в правом верхнем углуsettings -> SSH and GPG Keysсредний щелчокNew SSH Keyдобавить.

пройти черезssh -T git@github.comКоманда, чтобы убедиться, что SSH настроен успешно.

git основная операция

  • Инициализировать новый репозиторий
git init
  • Просмотр статуса файла
git status
  • отслеживание файлов
git add xxx         //跟踪某个文件
git add .           //批量跟踪

ли файлaddуспех, мы можем пройтиgit statusПроверьте еще раз

  • Отправить файл в локальный репозиторий
git commit              //提交文件到本地仓库
git commit -m 'xxx'     //xxx是你本次提交的信息说明
git commit -am 'xxx'    //将所有已跟踪的文件暂存起来一并提交
  • отправить удаленный репозиторий
git push origin xxx
//你可以通过-u指定一个默认的源, 这样以后push就不用加origin
git push -u origin xxx
//以后就可以
git push

  • Вытащить удаленный репозиторий
git pull origin xxx
//可以简写git pull, 如果提示no tracking information, 我们可以通过下面方法建立追踪,后续就可以直接git pull了
git branch --set-upstream branch-name origin/branch-name
  • Сравнение различий
git diff
  • Посмотреть историю коммитов
git log                 //按提交时间列出所有的更新,最近的更新排在最上面
git log --oneline       //查看简要的历史记录
git reflog              //用来记录每一次命令, 常用来辅助版本切换

Обычный процесс отправки кода

git add .
git commit -m 'xxx'
git pull
git push

переключение версии git

Иногда бизнес-сценарии или различные факторы, такие как изменения в требованиях, требуют от нас вернуться к предыдущей версии.

Чтобы переключать версии, нам нужно знать, в какой версии мы сейчас находимся:

git log --oneline

с участиемHEADСлова - наша текущая версия, черезgit reset --hard idкоманда переключения версий. идентификатор может быть:

- HEAD^ : 上个版本
- HEAD^^: 上上个版本
- HEAD~10: 上10个版本

После того, как вы вернетесь к предыдущей версии, передайтеgit logВы не можете увидеть последнюю версию, тогда мы можем использоватьgit reflog, эта команда будет следовать всем ранее переданнымcommitУстройство пути.

управление веткой git

Обычно мы развиваемся изmasterответвлениеdevИли другие ветки разработки, для разработки, чтобы даже если возникнут проблемы с разработкой, это не коснулось основной ветки.

использоватьgit branch xxxСоздайте новую ветку.

использоватьgit checkout xxxПереключиться на новую ветку

branch, checkoutОбщие команды:

git checkout -b xxx         //可以快速新建并切换到新的分支

git branch -d xxx           //当分支合并到主分支, 这个分支就可以通过-d删除了

git branch -D xxx           //删除那些没有被合并的分支

git branch -a               //查看所有分支

слияние ветвей

Примечание. При объединении ветки вы должны убедиться, что находитесь в целевой ветке, которую хотите объединить с этой веткой.

использоватьgit merge xxxВы можете объединить ветку xxx с вашей текущей веткой.

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

мы можем пройтиgit statusПроверьте, какие файлы имеют конфликты, а затем решите их один за другим.После того, как мы исправим конфликтующий код в соответствии с правильным кодом, нам нужно повторноgit add, git commit, git push.

Работа с удаленным репозиторием

клонировать удаленный репозиторий

пройти черезgit clone urlклонировать удаленный репозиторий

Например:

//这个默认会在你拉取的路径下新建一个blog-mason的文件夹
git clone https://github.com/MasonEast/blog-mason.git   

//如果你不想要文件夹blog-mason, 你可以这样, 在url后面,空格加新名字
git clone https://github.com/MasonEast/blog-mason.git newName

//如果你就想要在当前路径下放项目文件, 不要那个外面的文件夹了, 可以用.
git clone https://github.com/MasonEast/blog-mason.git .

Просмотр удаленного хранилища Git Remote

Репо, которое мы клонировали черезgit remoteВы увидите удаленный репозиторий с именем origin, который по умолчанию является исходным репозиторием, клонированным git.

пройти черезgit remote -vилиgit remote --verboseМы можем просмотреть более подробную информацию, то есть соответствующий адрес проекта, обычно их два, но если у вас нет разрешения на отправку, вы можете увидеть только один адрес выборки.

git remote -v

origin  git@github.com:MasonEast/blog-mason.git (fetch)
origin  git@github.com:MasonEast/blog-mason.git (push)

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

git push origin :xxx
//也可以
git push origin --delete xxx

Удалить удаленный репозиторий

git remote rm xxx

Переименовать удаленный репозиторий

git remote rename oldName newName

О неправильной работе

Git в основном используется для контроля версий и совместной разработки. Неверные операции можно отменить, но некоторые отмены необратимы. Мы должны относиться к ним осторожно, иначе некоторые коды могут быть потеряны.

Изменить последний коммит

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

git add xxx             //添加少提交的文件到暂存区
git commit --amend      //往最后一次提交中追加少提交的文件, 这次提交不会产生记录

Удалить файлы из локального репозитория

Сценарий: Проходимgit commitПосле отправки файлов на локальное хранилище я не забыл добавить файлы, которые не хотел отправлять.

git rm xxx  

Удалить файлы из промежуточной области

Сценарий: Иногда мы привыкаем кgit add ., но есть некоторые файлы, которые мы не должны фиксировать, поэтому нам нужно удалить файлы из промежуточной области.

git reset HEAD xxx      //从暂存区中移除xxx文件

позже

Выше приведены только основные операции, которые можно использовать в повседневной работе. Вот небольшая схема. Существует много команд для расширенного изучения git, которые не были упомянуты, напримерgit stash, git rebaseПодождите, в основном потому, что я не до конца понял это, поэтому здесь нелегко упомянуть об этом.