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 来初始化自己的仓库,造成本地仓库和远程仓库不一致。
gitee 码云
如果是 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),则表示当前不处于任何分支。

解决方法:

  1. 创建新的分支(若主分支与 *(no branch) 种有差异的文件比较多)
git checkout -b  <新分支名> // 此时新创建的分支与 (* no branch) 中的文件一样
  1. 如果想将新创建分支合并分支到 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 出了问题,无法连接上服务器

解决步骤:

  1. 首先确保用户名和邮箱没有问题,重新设置一下(最好到想要 push 的文件夹下)
git config --global user.name "your name"

git config --global user.email "your@email.com"
  1. 删除 ssh 文件夹下的 known-host (手动删除即可)
    一般是在 C://user/your user directory/.ssh/ 里面,your user directory 是你电脑的 username
  2. git 执行命令
ssh-keygen -t rsa -C "your@email.com"(这里请填你设置的邮箱地址)
  1. 接下来会出现
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):

直接回车,如果你 .ssh 文件夹里面另外两个文件没有删除的话可能会提示你是否要覆盖,yes 即可

  1. 用记事本打开 id_rsa.pub
    系统会自动在 .ssh 文件夹下生成两个文件,id_rsaid_rsa.pub
    打开 id_rsa.pub 之后将里面的内容全部 复制

  2. 打开 github 登陆账户之后进入设置
    进入 SSH and GPG keys 设置,点击 New SSH Key,将复制的内容粘贴到 key

  3. Add SSH Key

  4. 最后返回 git 执行命令

ssh -T git@github.com
// 这里弹出一堆话之后
yes

回车即可成功。

github gitee 问题汇总第一期完成! 2020-7-22

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐