git学习笔记(1)如何将clone到本地代码上传到自己的git项目
如何实现将别人的git https拷贝到自己git项目上?
gitee码云网页会限制每天上传20个文件,导致直接通过拖文件夹比较非常不方便
1.首先将git https的url 拷贝下来,在pycharm中拉下来
2.打开拉下来的文件夹,删除 .git文件夹
3.在git bash客户端CMD命令窗口执行init操作,代码如下
1 cd existing_folder #进入你需要上传的文件夹根目录
2 git init
3 git remote add origin
4 git@gitee.com:xxxxx #码云上创建仓库的ssh地址,不可以是https地址
5 git add .
6 git commit -m "Initial commit"
7 git push -u origin master
解决错误:
1.如何没有在git的hosts文件中设置gitee域名,在执行git push -u origin master这步会报错,就会报如下错误
报错原因:在xx/Git/etc/hosts文件中没有添加gitee域名,在hosts中添加212.64.62.174 gitee.com,如果是github 则添加192.168.1.117 github.com
2.如果没有设置gitee的ssh公钥 在执行在执行git push -u origin master这步会报错,就会报如下错误
git@gitee.com: Permission denied (publickey). fatal: Could not read from remote repository.
报错原因:在码云中没有配置SSH公钥
那么我们就需要生成和添加SSH公钥
官方文档:https://gitee.com/help/articles/4181#article-header0 (这个比较清晰)
帮助文档还有这个:http://git.mydoc.io/?t=154712
码云提供了基于SSH协议的Git服务,在使用SSH协议访问仓库仓库之前,需要先配置好账户/仓库的SSH公钥。
你可以按如下命令来生成 sshkey:
ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair... 注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。 现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub
文件内容,获取到你的 public key
cat ~/.ssh/id_rsa.pub # ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
复制生成后的 ssh key,去码云的个人设置中 配置SSH公钥
添加后,在终端(Terminal)中输入
ssh -T git@gitee.com
如果返回如下就表示SSH公钥添加成功:
Welcome to Gitee.com, yourname!
再次执行git push又出现了如下报错:
error: failed to push some refs to
此时百度了网上解决办法,转载自 https://www.jianshu.com/p/c6f2e1ca2999
分支名不完整
emmm,这个错误大概是最难发现的了,不是说难度系数高,而是大家都把以本地master与远程master为例去写答案,于是大家会下意识忽略掉本地分支与远程分支名不一样的情况。(也可能这个大家只包含了我....)
git推送的完整写法如下:
git push @remoteName @localBranch:@remoteBranch // eg.remoteName:origin localBranch:ceshi remoteBranch:test git push origin ceshi:test
但是如果本地分支与远程分支名字一样的话,是可以简写的。例如本地和远程的分支名都是master:
git push origin master
没有提交代码
可以用 git status
查看是否忘了把代码提交上去了。若是忘了,提交了就行。
git add . git commit -m "This is a new commit" git push origin master
本地与远程产生冲突
或是有其他协作者提交了代码,或是你之前在远程上直接做了处理。这部分有两个处理方法,一是直接强覆盖,二是先把远程的变化拉取下来,解决冲突后,再一并提交。
1.强覆盖
git push -f origin master
2.拉取再提交
git pull –-rebase origin maste
git push origin master
--rebase
到底是干嘛用的,为什么要加他?不知道是什么意思的时候,用起来也忐忑。所以又特意去了解了一下这个配置的作用。这部分有个博主写的详细又直观:https://blog.csdn.net/MBuger/article/details/70197532