написать впереди
Вы использовали 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
Всплывающее окно с недавно сохраненным контентом
Просмотрите соответствующий файл для разрешения конфликта
Затем 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. Найдите открытый ключ, откройте его и скопируйте его содержимое.
2. Добавьте открытый ключ на github
Скажите, почему это происходит, потому что github и gitlab используют один и тот же открытый ключ и закрытый ключ.Когда я работал над проектом компании, когда мне не удалось клонировать (первая ошибка выше), я перенастроил открытый ключ и закрытый ключ, поэтому это у меня нет моего последнего открытого ключа на github, поэтому я не могу нажать
Причина 2 Решение — подключение к Интернету
- Сетевой кабель не закреплен
- Выйдите из внутренней сети компании и снова войдите в систему.
- WiFi нет сети
Отменить изменения в файлах
описывать
Я модифицировал сложный файл index.vue.После модификации я чувствовал, что написал в беспорядке и понятия не имел, но этот модифицированный файлне отправлен, Я хочу восстановить его так, как он начался.
Решение
Команда выполненияgit status
Получить путь к нашему файлу
git checkout -- 文件完整路径
(Похоже, что без добавления -- эти две горизонтальные линии тоже можно использовать)
Затем закройте файл и откройте его, он напомнит, нужно ли сохранять изменения.Помните, чтобы не экономить
Это очень опасная команда, после выполнения которой git перезапишет весь файл самой последней фиксацией.
Пожалуйста, не используйте эту команду, если вы точно не уверены, что не хотите вносить локальные изменения в этот файл.
Ваш собственный код перезаписывается извлеченным кодом
описывать
Мой собственный код был только что отправлен, и мой коллега вытащил мой код и отправил его, а затем я снова вытащил код и обнаружил, что код, который я только что написал, исчез (Примечание: я прописал тот же файл в контракте)
Решение (1)
git log
Найдите код последнего коммита
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 такого не бывает.
Эта статья постоянно обновляется, если она вам интересна, вы можете обратить на нее внимание, а если у вас возникнут вопросы, вы также можете обсудить ее вместе.