下述为简单的记录过程
1.push失败 failed to push some refs to xxxx.
使用git push -u origin master 命令 把当前分支master 推送到远程时失败。
原因:通过查看提示信息,我发现,是因为本地仓库和远程仓库的文件不一致所致,也就是说,github允许你本地仓库有的东西,远程仓库里没有,但不允许远程仓库有的东西,你本地仓库没有。问题找到了,解决办法就很简单了,那就是在push之前先同步一下本地仓库与远程仓库的文件。使用以下命令
git pull --rebase origin master
再次推送成功
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支推送到远程分支master
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送到远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
2.pull失败 there is no tracking information for the current branch.
原因 : 本地dev分支和远程dev分支没有建立联系
git pull 需要建立本地和远程分支之间的联系,改命令为 git pull origin dev 或者 git branch --set-upstream-to=origin/dev dev
3.pull失败 fatal: refusing to merge unrelated histories
在第一次使用pull拉取远程git仓库数据时会报错
修改命令为 git pull gitee master --allow-unrelated-histories
4.关联本地库和远程库的分支master
使用 git branch -a 查看所有分支情况, * 表示当前使用分支
git fetch 获得远程库分支
git branch -a 再次查看
git branch --set-upstream-to=origin/feature feature (建立连接)
6.如果远程仓库先建立了分支feature ,本地仓库需要创建相同分支并建立连接时
git checkout -b feature origin/feature
7.使用intellij idea update时失败 (可参考3)
原因 : 分支连接未建立
8. intellij 报错 "Could not read from remote repository"
github上重新配置ssh key,重新建立连接
1)生成钥匙
ssh-keygen -t rsa -C "youremail@example.com"
C:\Users\Administrator\.ssh\id_rsa.pub(windows) 获得公钥
2)github重新配置ssh key
3)删除与远程仓库origin之间的连接
git remote remove origin
4)重新建立本地仓库和远程仓库之间的联系,远程仓库取名origin
remote add origin git@github.com:xxxx/yyyyy.git
5)测试
ssh -T git@github.com
intellij idea 重新配置
1)配置remotes 远程仓库
2)如果上述url 无法使用ssh,更改ssh executable 设置为 native
9.使用git 提交到gitee
1)建立连接 git remote add <remote name> <ssh remote url>
2)查看所有remote git remote -v
3)测试gitee ssh -T git@gitee.com
4)同步远程分支信息到本地 git fetch git master
5)查看所有本地分支信息 git branch -a
6)先pull拉取 (保证远程仓库有的,本地仓库一定有) git pull gitee master --allow-unrelate-histories
7)再push 推送到gitee master分支 git push -u gitee master
10.分支合并前要保证是本版本的最新代码
可以使用 git stash 先保留本地的修改代码 ,git merge dev 合并后,使用 git stach pop 删除并恢复本地代码
11. git commit -a -m "message" 失败
通过 git status 查看文件状态,有 untracked files(git 文件三种种状态之一)然我们可以在 .gitignore 文件中添加文件名 进行忽略
这里我们不使用忽略,需要强制提交(intellij idea 的commit 扫码不出这些文件) 使用 Git Bash Here
使用 commit -a -m "message" 发现并没有提交成功
原因:这些文件是新建的文件 需要先使用 git add * 命令 添加所有文件到缓存区,
再使用 git commit -m "xxx"