使用GIT过程中遇到的问题和解决办法

   GIT初学者,记录下学习过程中遇到的问题和解决方法

   GIT版本:git version 2.33.1.windows.1
   远程仓库:gitee


   问题1:PUSH到远程仓库时,提示git@gitee.com: Permission denied (publickey)

   解决办法:查找了很多解决办法,基本上都是在本地生成SSH公钥,然后将公钥复制到服务器中,但是这些方法并没有解决我的问题。直到在gitee浏览到 SSH Key 突然失效问题解答及处理办法 - Gitee.com 这篇文章后,尝试了其中的方法,问题才得到解决,关于出现该问题的原因也文章里提到了。

简单说下原因:大家一般都使用如下指令来生成SSH公钥。

$ ssh-keygen -t rsa -C "xxx@email.com"

使用该指令,旧版本git用RSA-SHA1算法生成的SSH公钥,而新版本git(例如:git version 2.33.1.windows.1)用RSA-SHA2算法生成的SSH公钥,而gitee上采用的提取策略还不支持RSA-SHA2,所以gitee会提示拒绝。


  问题2:分支push提示Everything up-to-date

  本地分支dev与远程分支develop(origin/develop)已完成关联。本地分支dev先进行了2次commit,输入git status指令查询状态:
 

$ git status
On branch dev
Your branch is ahead of 'origin/develop' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

按照git的提示输入 git push origin origin/develop

$ git push origin origin/develop
Everything up-to-date

git提示“Everything up-to-date”也就是说一切都是最新的,很明显实际情况不是这样的!

dvcs - Git push won't do anything (everything up-to-date) - Stack Overflow中找到了答案。

解决办法:输入git push origin [loacal_branch_name]:[remote_branch_name],效果如下,push成功:

$ git push origin dev:develop
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (8/8), 674 bytes | 674.00 KiB/s, done.
Total 8 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
To gitee.com:XXX/python-learning.git
   abf927a..0e31d4d  dev -> develop

个人理解:当我们把远程仓库克隆到本地后,本地仓库所有分支默认的PUSH目标是远程仓库的master。本地分支dev和远程分支develop(origin/develop)完成关联,则是为了PULL。输入指令git remote show origin后git提示如下:

$ git remote show origin
* remote origin
  Fetch URL: git@gitee.com:xxx/pythonxx.git
  Push  URL: git@gitee.com:xxx/pythonxx.git
  HEAD branch: master
  Remote branches:
    develop tracked
    master  tracked
  Local branches configured for 'git pull':
    dev    merges with remote develop
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

git为’git pull‘命令配置了本地的2个分支:本地的dev->远程的develop,本地的master->远程的master。

git为'git push'命令配置了本地的参考(ref):本地master->远程master

关于’git push‘的详细介绍可以查看帮助文档(git push --help)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值