Сводка операций Git от работы до настоящего момента

Git

написать впереди

Вы использовали Git? Возможно, вы еще не прикасались к Git, возможно, вы использовали его некоторое время, и он все еще может вас сбивать с толку.
В этой статье в основном объясняется, как изучать Git и решать различные проблемы с Git, с которыми вы сталкиваетесь.
Прежде всего, я настоятельно рекомендую буклет Nuggets.Подробное объяснение и практическое руководство по принципу Git. (Не для 😂)

  • Если вы новичок, прочтите этот буклет и следуйте ему, и вы получите общее представление о Git.
  • Если вы уже некоторое время используете Git, чтение этого буклета даст вам ощущение просветления.
  • Буклет рекомендуется читать неоднократно (я думаю, что хотя бы три раза), и у вас будет другой урожай после каждого чтения.
  • Если вы все еще хотите более глубоко изучить Git, вы можете посетитьGit-book.

Git общие команды

git четверной

git add .                                将所有改动放进暂存区
git commit -m "描述"                     提交并附带概要信息
git pull                                 从远程仓库拉去代码
git push                                 推送代码到远程仓库(master分支)

Другие общие команды

git log                                  查看日志
git log -p                               查看详细历史
git log --stat                           查看简要统计
git status                               查看工作区状态
git branch 名称                          创建分支
git checkout 名称                        切换分支
git checkout -b 名称                     创建并切换到新分支
git branch -d 名称                       删除该分支(不能删除当前所在的分支,不能删除没有合并到master上的分支)
git branch -D 名称                       删除该分支(可以删除没有合并到master上的分支)
git commit --amend                       对最新的一条commit进行修正
git reset --hard HEAD^                   丢弃最新提交(未提交的内容会被擦掉)
git reset --soft HEAD^                   丢弃最新提交(未提交的内容不会被擦掉)
git revert HEAD^                         回到某个commit
git rebase 目标基础点                     重新设置基础点
git merge 名称                           将分支合并到head指向的分支
git push origin localbranch              将代码推送到远程仓库的指定分支
git push -d origin branchName            删除远程分支
git stash                                暂存代码
git stash pop                            弹出暂存代码

Настроить псевдонимы

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

git config --global alias.st status                 git status ==> git st
git config --global alias.ci commit                 git commit ==> git ci
git config --global alias.co checkout               git checkout ==> git co
git config --global alias.br branch                 git branch ==> git br
git config --global alias.sh stash                  git stash ==> git sh
git config --global alias.pop "stash pop"           git stash pop ==> git pop

Общие проблемы и решения

не удалось выполнить клонирование git

сообщение об ошибке

Could not read from remote repository.
Please make sure you have the correct access rights

Причина ошибки

Ключ SSH недействителен или у вас нет разрешения

Решение (1) — повторно добавьте ключ SSH

1. ssh-keygen -t rsa -C «имя пользователя» (Примечание: имя пользователя — это ваше имя пользователя в git)

2.Generating public/private rsa key pair.
Введите файл для сохранения ключа (C:\Users\珏忛┈/.ssh/id_rsa): просто нажмите Enter

3.C:\Users\Haoji┈/.ssh/id_rsa уже существует.
Перезаписать (y/n)?y Введите y

4.Введите ту же фразу-пароль еще раз: просто нажмите Enter

5. Ваша идентификация была сохранена в C:\Users\勏忛┈/.ssh/id_rsa Адрес, где сохранен закрытый ключ
Ваш открытый ключ был сохранен в C:\Users\珏忛┈/.ssh/id_rsa.pub Адрес хранения открытого ключа

6. Найдите открытый ключ по пути и добавьте открытый ключ в Git.

Решение (2) - клонировать с использованием http-адреса

Если вы используете этот метод, вам нужно ввести свою учетную запись и пароль, что немного хлопотно и не рекомендуется.

Ошибка git pull (1)

сообщение об ошибке

Your local changes to the following files would be overwritten by merge:

Причина ошибки

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

Обходной путь — сохранить изменения

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

Snipaste_2020-07-13_09-40-27.png

Затем git фиксирует свой собственный код в трех последовательных

Ошибка git pull (2)

сообщение об ошибке

Pulling is not possible because you have unmerged files.    

Причина ошибки

Измененный файл не зафиксирован

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

Решение - отправить на местный

git add .Ну да, вам нужно добавить его, прежде чем коммитить здесьgit commit -m "获取新的代码" git pull

git push не удалось

сообщение об ошибке

fatal: Could not read from remote repository.
Please make sure you have the correct access rights

Причина ошибки

Причина 1: последний публичный ключ не добавлен в github Причина 2: Сеть не подключена

Причина одна, решение - настроить открытый ключ

1. Найдите открытый ключ, откройте его и скопируйте его содержимое.
image.png

2. Добавьте открытый ключ на github

image.pngimage.png

Скажите, почему это происходит, потому что github и gitlab используют один и тот же открытый ключ и закрытый ключ.Когда я работал над проектом компании, когда мне не удалось клонировать (первая ошибка выше), я перенастроил открытый ключ и закрытый ключ, поэтому это у меня нет моего последнего открытого ключа на github, поэтому я не могу нажать

Причина 2 Решение — подключение к Интернету

  1. Сетевой кабель не закреплен
  2. Выйдите из внутренней сети компании и снова войдите в систему.
  3. WiFi нет сети

Отменить изменения в файлах

описывать

Я модифицировал сложный файл index.vue.После модификации я чувствовал, что написал в беспорядке и понятия не имел, но этот модифицированный файлне отправлен, Я хочу восстановить его так, как он начался.

Решение

Команда выполненияgit statusПолучить путь к нашему файлу

image.png

git checkout -- 文件完整路径(Похоже, что без добавления -- эти две горизонтальные линии тоже можно использовать)

image.png

Затем закройте файл и откройте его, он напомнит, нужно ли сохранять изменения.Помните, чтобы не экономить

Это очень опасная команда, после выполнения которой git перезапишет весь файл самой последней фиксацией.

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

Ваш собственный код перезаписывается извлеченным кодом

описывать

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

Решение (1)

git logНайдите код последнего коммита
image.png
git reset --hard 复制的commit编码Затем закройте файл и откройте его, он напомнит, нужно ли сохранять изменения.Помните, чтобы не экономить

Решение (2)

ctrl + z  Чтобы использовать этот метод, вы должны знать, какие файлы вы изменили, и редактор не был закрыт (я просто застрял в редакторе на время, а затем перезапустил редактор...)

Просто хочу вытащить удаленный код, не хочу совершать

описывать

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

причудливая попытка

В то время я думал, а можно напрямую тянуть, но естественно не получится, git сообщит вам следующую ошибку

our local changes to the following files would be overwritten by merge:

Решение

git stashВременно сохраните собственный код
git pullВытащите код
git stash pop Всплывающее временное хранилище

Хотите вернуться в состояние перед тягой

описание проблемы

git merge --abort

git merge --abort将会抛弃合并过程并且尝试重建合并前的状态。但是,当合并开始时如果存在未commit的文件,
git merge --abort在某些情况下将无法重现合并前的状态。(特别是这些未commit的文件在合并的过程中将会被修改时)

Решение

git log Этот метод несовершенен и может отображать только запись фиксации последнего нажатия. Наконец-то посмотрел только историю на GitLab

наконец

Не рекомендуется использовать сторонние инструменты визуализации Git.Во-первых, некоторые письменные тесты или интервью предназначены для изучения Git.Во-вторых, после использования инструментов визуализации git такого не бывает.
Эта статья постоянно обновляется, если она вам интересна, вы можете обратить на нее внимание, а если у вас возникнут вопросы, вы также можете обсудить ее вместе.