利用git上传代码到github步骤以及遇到的问题

这里主要是根据自己在使用过程中遇到的问题,通过查阅博客选取一些常见的问题解决办法
一,首先是关于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,依次输入以下命令

  1. git init
  2. git remote add origin [email protected]/qzpzd/ML-base.git
  3. git add .
  4. git commit -m "机器学习算法"(提交代码,后面引号是项目介绍)
  5. 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 处理分支与文件遇到的问题与解决办法

新建分支

git branch 子分支名称

新建分支并切换到新分支

git checkout -b 子分支名称

默认会将主文件copy到新的分支下,只是暂存区,提交时可以选择只提交想提交的文件,可以将其他文件暂存区删除git rm -r --cached 文件/文件夹,然后再git add 要提交的文件

切换分支

git checkout 分支名称

如果让两个分支文件区别开来,再上传文件时会将其他文件的暂存区删除掉,所以再切换分支时会导致git提示之前的文件没有在暂存进行跟踪记录,所以,需要先git add .然后再git commit -m "logs",就可以切换分支了,要是切换的分支也只想更新原来的文件不包括新添加分支的文件,那么原理一样,删除不要文件的暂存区,只提交需要的即可。

你可能感兴趣的:(深度学习,github,git)