这里主要是根据自己在使用过程中遇到的问题,通过查阅博客选取一些常见的问题解决办法
一,首先是关于git上传代码的步骤见链接使用Git上传文件夹到GitHub仓库
二,如果按照步骤没有问题的话恭喜你不用折腾了,如果按照步骤出现对应的错误,下面有一些解决办法,虽然不太懂原理,但是照做,只要能成功就行是吧。
1.首先在把github上面的仓库克隆到本地这一步出现
fatal: unable to access 'https://github.com/qzpzd/pytorch.git/': OpenSSL SSL_read: Connection was reset, errno 10054
解决方法:
输入如下命令:
git config http.sslVerify "false"
如果提示:
fatal: not in a git directory
那就先执行
git init
再输入:
git config http.sslVerify "false"
然后再重新执行git clone https://github.com/CKTim/BlueTooth.git(https://github.com/CKTim/BlueTooth.git替换成你之前复制的地址)
,就成功了。
如果又出现新的问题的话,如下可能是github网站是外网克隆的时候容易超时
fatal: unable to access 'https://github.com/qzpzd/pytorch.git/': Failed to connect to github.com port 443: Timed out`
可以将https改成git,例如下面形式
git clone git://github.com/qzpzd/pytorch.git
2.git push -u origin master 这一步也会出现问题,首先根据github上面的仓库主分支是master还是main
比如,你使用git push -u origin master,而github远程库是main,那么会出现
error: src refspec master does not match any
error: failed to push some refs to 'git://github.com/qzpzd/pytorch.git'
问题原因: 远程库与本地库不一致造成的,因为本地库是master,远程库是main
解决办法: 使用命令行:
git pull --rebase origin master
该命令的意思是把远程库中的更新合并到(pull=fetch+merge)本地库中,–-rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。
其实,这里cd到克隆的远程库中,由于我的远程库是main,我直接改用下面就可以了
git push -u origin main
但是又出现了下面问题,太难了
fatal: remote error:
You can't push to git://github.com/qzpzd/pytorch.git
Use https://github.com/qzpzd/pytorch.git
#或者
fatal: remote error:
You can't push to git://github.com/user_name/user_repo.git
Use [email protected]:user_name/user_repo.git
解决办法:
git remote rm origin
git remote add origin [email protected]:user_name/user_repo.git
user_name/user_repo.git这部分就是对应qzpzd/pytorch.git
原因是:
如果在git clone的时候用的是git://github.com:xx/xxx.git 的形式, 那么就会出现这个问题,因为这个protocol是不支持push的
用git clone [email protected]:lujinjianst/myNCCL.git
就可以用git push了。
到这你以为完了,其实还没有,又出现问题了
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
第一句报错:
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
[email protected]:权限被拒绝(publickey)。
致命:无法从远程存储库读取。
第二句报错:
Please make sure you have the correct access rights
and the repository exists.
请确保您拥有正确的访问权限
并且存储库存在
主要是缺少密钥,需要在github上新建一个密钥
解决方法:
首先在项目文件夹的根目录,右键Git Base Here,,也就是一直执行命令的那个窗口直接写命令
输入命令: ssh-keygen -t rsa -C "[email protected]"
后面邮箱是自己github账号的邮箱
回车键会出现让你设置key的安装路径和密钥密码,不想麻烦或者怕记不住就一直回车就行
接下来输入命令: cat ~/.ssh/id_rsa.pub
这个时候他便会弹出你的密钥,先复制,然后在自己的github上找到设置选项里面的SSH and GPG keys,新建ssh key,将刚才复制的密钥黏贴到下面的key框内进行创建OK了
最后执行
git push --set-upstream origin main
大功告成!
------------------------------------------------------------------------------------------------------对于新建的仓库实际上有更快的上传代码过程
在项目目录中右键Git Base Here,依次输入以下命令
git init
git remote add origin [email protected]/qzpzd/ML-base.git
git add .
git commit -m "机器学习算法"(提交代码,后面引号是项目介绍)
git push -u origin master(首次使用加上-u,后续可以不加)
或者将github仓库clone到本地,然后将要上传的文件复制到clone好的新生成文件里,然后进行
6. git add .
7. git commit -m "机器学习算法"(提交代码,后面引号是项目介绍)
8. git push -u origin master(首次使用加上-u,后续可以不加)
如果报错:
fatal: The current branch wangxiao has no upstream branch.
To push the current branch and set the remote as upstream
这是因为本地的分支没有和远程分支建立联系,需要执行以下代码就可以正常push了:
git push --set-upstream origin master
(master可以根据自己的需要自定义,就是当前分支在远程分支对应的名称)
如果出现上面的问题同样可以按照其方法进行操作
git push origin与git push -u origin master的区别
其它:突然有一天clone代码时出现了这样的错误
Failed to connect to github.com port 443: Connection refused
查找资料都说要修改hosts文件,但是没有权限,所以很无奈,
用ssh吧,搞着,搞着,ssh也搞崩了,重新生成一个ssh,发现还是出现新的问题,总是要求[email protected]’s password:,密码也不知道啊,啥都不对,按照本博客
解决办法:
使用如下代码
ssh -Tv [email protected]
接着使用如下代码
ssh -T -p 443 [email protected]
在.ssh文件中有一下文件
后三个是生成ssh时生成的,其中config文件中需要添加一下代码
Host github.com
Hostname ssh.github.com
Port 443
User git
还是出现下面问题
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0664 for '/home/disk/xxx/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/disk/xxx/.ssh/id_rsa": bad permissions
Permission denied (publickey).
根据错误显示文件权限太大,利用该博客方法
chmod 600 /home/disk/xxx/.ssh/*
然后运行
ssh -T [email protected]
得到
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
新建分支
git branch 子分支名称
新建分支并切换到新分支
git checkout -b 子分支名称
默认会将主文件copy到新的分支下,只是暂存区,提交时可以选择只提交想提交的文件,可以将其他文件暂存区删除git rm -r --cached 文件/文件夹
,然后再git add 要提交的文件
切换分支
git checkout 分支名称
如果让两个分支文件区别开来,再上传文件时会将其他文件的暂存区删除掉,所以再切换分支时会导致git提示之前的文件没有在暂存进行跟踪记录,所以,需要先git add .
然后再git commit -m "logs"
,就可以切换分支了,要是切换的分支也只想更新原来的文件不包括新添加分支的文件,那么原理一样,删除不要文件的暂存区,只提交需要的即可。