git 常见的问题解决汇总 | 第1期
No.1remote: Incorrect username or password ( access token ) fatal: Authentication failed for手快打错密码是常事,命令行无显示打错密码 / 账号那就更不见怪。这里使用 git 推送到远程仓库 gitee 因为打错了密码或者账号,然后就没有再次输入账号和密码的过程了,下面是解决方法:// 清除本地的git...
No.1 remote: Incorrect username or password ( access token ) & fatal: Authentication failed for
手快打错密码是常事,命令行无显示打错密码 / 账号那就更不见怪。这里使用 git 推送到远程仓库 gitee 因为打错了密码或者账号,然后就没有再次输入账号和密码的过程了,下面是解决方法:
// 清除本地的gitee用户名和密码
git config --system --unset credential.helper
// 再执行推送,重新输入用户名和密码。
No.2 fatal: remote origin already exists
执行 git remote origin 切换的时候报错,解决方法如下:
// 执行
git remote rm origin
// 再次执行 git remote origin ... 就不会报错了
No.3 fatal: Not a git repository (or any of the parent directories): .git
这个是因为没有在当前文件夹一般是没有初始化 git
本地版本管理仓库,所以无法执行 git
命令,解决方法就是在本地文件夹初始化 git:
git init
No.4 fatal:'origin' does not appear to be a git repository & fatal:Could not read from remote repository
执行 git push origin <分支名>
的时候,报了上面这个错误。原因在于本地分支和远程分支断开连接。
解决方法:
// 查看分支和上游
git branch // ——* master
git remote -v // 若什么都没有则已经断开与上游的连接,拉不了代码也推不了代码
// 加关联
git remote add origin <上游地址>
// 最后
git fetch origin
之后再次检查远程仓库与分支,问题已经解决
git remote -v
// origin https://gitee.com/xxx/xxxxx.git (fetch)
// origin https://gitee.com/xxx/xxxxx.git (push)
git branch -a
// ——* master
// remote/origin/xxxx
No.5 ! [rejected] master -> master (non-fast-forward) & error: failed to push some refs to <git 仓库>
查找博客和对比自己的情况,都是因为:新手在创建仓库的时候点击了用 README.md 来初始化自己的仓库,造成本地仓库和远程仓库不一致。
如果是 GitHub 上面则是 initialize this repository with a README,此操作会立即克隆这个仓库到你的电脑,如果你需要导入一个已存在的工程请跳过这个步骤。
我们使用强制上传可以 push 上去,但是感觉方法不太友好。
解决方案:我们可以通过如下命令进行代码合并
git pull --rebase origin master // pull = fetch + merge
然后再 push 就可以,不过我们没有成功,因为我本地有一个 README 可能会出现下面所说到的情况,逐个击破即可。
如果你本地没有 README 而远程仓库用 README 初始化了的话,代码合并再 push 就可以了。
No.6 Everything up-to-date & Branch 'master' set up to track remote branch 'master' from 'origin'.
出现这个问题的根本原因在于推送的分支没有做 commit 操作,直接原因是在 idea 整合是错误的创建了一个分支 *(no branch)
并一直在该分支下执行 push master 指令。
使用 git branch 命令可查看当前环境所在开发分支,如果出现 *(no branch)
,则表示当前不处于任何分支。
解决方法:
- 创建新的分支(若主分支与 *(no branch) 种有差异的文件比较多)
git checkout -b <新分支名> // 此时新创建的分支与 (* no branch) 中的文件一样
- 如果想将新创建分支合并分支到 master (有差异的文件不多)
git log // 第一步 记住第一行 id
git checkout master // 切换到主分支 此时第一行的 id 与之前 git log 的相同
git merge <id> // 将 *(no branch) 合并到主分支 id 为上述 id
No.7 fatal: refusing to merge unrelated histories
在使用 git 合并两个分支的时候,出现了上面这个错误,这个问题可能也会在 git pull 或 git push 中遇到,因为这两个分支没有取得关系。
我是在 No.6 合并分支的时候遇到这个问题的,那种情境下两个分支当然没有任何关系。解决起来很简单,方法如下:
// 在合并操作指令后面 + --allow-unrelated-histories
git merge master --allow-unrelated-histories
如果是 git pull
或者 git push
出现这样的错误,同理。
No.8 git pull error: Pulling is not possible because you have unmerged files.
在同步远程仓库的时候出现以上问题,是因为 pull 会使用 git merge 导致冲突,需要将冲突文件 resolve 掉。
解决方法:
git add .
git commit -m "注释"
git pull // 此时就可以了
如果你想放弃自己 pull 之前的修改,可以使用下面这种方式:
git reset --hard FETCH_HEAD
git pull
这样会使代码回到初始节点,上次 pull 成功的地方。上次 pull 之后的修改都会丢失。
No.9 git push ! [rejected] master -> master (fetch first)
原因基本上可以确定是因为本地仓库和远程仓库的版本不一致 (团队项目/个人操作不当 可能导致),解决方案有两种:柔和型(更新本地仓库再 push),暴力型(强制 push 覆盖远程仓库)
解决方法:
- 柔和型:
本地库的修改可能被覆盖,最好使用 git fetch 查看更新情况再进行合并;
或者现将本地修改备份,git pull 之后再重新进行本地修改。
git pull
// git fetch
git push -u origin master
- 暴力型
忽略远程仓库的修改,强制 push 覆盖远程仓库,可能导致团队项目成员的修改被覆盖,谨慎使用。
git push -f origin master
No.10 git push fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.
大部分是因为 ssh key 出了问题,无法连接上服务器
解决步骤:
- 首先确保用户名和邮箱没有问题,重新设置一下(最好到想要 push 的文件夹下)
git config --global user.name "your name"
git config --global user.email "your@email.com"
- 删除 ssh 文件夹下的 known-host (手动删除即可)
一般是在C://user/your user directory/.ssh/
里面,your user directory 是你电脑的 username - git 执行命令
ssh-keygen -t rsa -C "your@email.com"(这里请填你设置的邮箱地址)
- 接下来会出现
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):
直接回车,如果你 .ssh
文件夹里面另外两个文件没有删除的话可能会提示你是否要覆盖,yes 即可
-
用记事本打开
id_rsa.pub
系统会自动在.ssh
文件夹下生成两个文件,id_rsa
和id_rsa.pub
。
打开id_rsa.pub
之后将里面的内容全部复制
。 -
打开 github 登陆账户之后进入设置
进入 SSH and GPG keys 设置,点击 New SSH Key,将复制的内容粘贴到 key -
Add SSH Key
-
最后返回 git 执行命令
ssh -T git@github.com
// 这里弹出一堆话之后
yes
回车即可成功。
github gitee 问题汇总第一期完成! 2020-7-22
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)