克隆
git clone http://git.oschina.net/hod/c98
拉取
git pull
git基本操作命令:
pwd: 显示当前工作空间
ls: 显示目录列表
ls -a : 显示所有目录
ls -l : 显示目录列表详细信息
cd : 切换目录
cd 目录路径( 切换到指定目录)
cd 切换到家目录
cd … 返回上一级
mkdir hod 创建目录
创建文件 touch a.php
删除目录(递归删除包括文件):rm -rf hh(删除hh目录,里面的一切删除掉,包括hh)
git add -a 添加全部文件到 推车
项目传输三部曲:
1git add . (加入小推车)
2git commit -m ‘提示’(提交到本地仓库)
3git push(推送到线上仓库)
新项目操作-代码推送:
1创建本地库并完成初始提交
git init(初始化本地仓库)
git add .(添加到小推车,'.'代表所有文件,也可以单个文件名)
git commit -m “提示”(提交到本地仓库)
2添加远程仓库(一个项目一个仓库,需在git上重新创建一个项目repository)
git remote add origin git@github.com:hod/hh-xj.git(此处黏贴github中新建repository的ssh方式的密匙)
3.查看远程库
git remote -v(命令后需出现两行密匙,后分别跟fetch和push)
4.推送数据到远程仓库
git push -u origin master
拉取代码:
参考文档https://www.cnblogs.com/lianghe01/p/5806518.html
1、用克隆:
初始化仓库git init->git clone https://github.com/abellmz/first(就是项目仓库地址,也可以是本地仓库地址)**默认拉取主分之代码**
2、分支推送、拉取:
2.1git branch -a 查看所有分支
默认只有master分支,所以会看到如下两个分支
1 | master[本地主分支] origin/master[远程主分支] |
2.2创建本地分支
1 | git branch dev |
2.3在dev分支开发代码合并主支后推送和分支推送
1 | git checkout dev # 切换到dev分支进行开发 |
2.4拉取dev分支代码
参考文档https://blog.csdn.net/carfge/article/details/79691360
2.4.1初始化仓库git init
2.4.2与远程建立连接
git remote add origin git@github.com:abellmz/first.git 查看远程出现两条数据
2.4.3远程分支拉取到本地(执行完后没有代码哦)
git fetch origin dev(dev为远程仓库的分支名)
2.4.4在本地创建分支并切换到dev分支
git checkout -b dev(本地分支名称) origin/dev(远程分支名称)
这个是创建并切换分支的命令,如果直接git branch dev或者master都会报错,原因还没弄清楚
2.4.5把某个分支上的内容都拉取到本地
git pull origin dev(远程分支名称),克隆的代码缺少vendor目录,是因为laravel在文件上传的时候将一些文件给忽略了(.ignore文件),运行终端运行composer instal就可以了出现vendor目录
github 转码云gitee操作:
**开源中国:**开源中国成立于2008年8月,是目前国内最大的开源技术社区,拥有超过200万会员,形成了由开源软件库、代码分享、资讯、协作翻译、码云、众包、招聘等几大模块内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
2013年,开源中国建立大型综合性的云开发平台——码云,为中国广大开发者提供团队协作、源码托管、代码质量分析、代码评审、测试、代码演示平台等功能。
**码云(gitee.com)**是开源中国推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管
**SVN:**是Subversion的简称,是一个开放源代码的版本控制系统,它的设计目标就是取代CVS(C/S系统,是一个常用的代码版本控制软件)。用于多个人共同开发同一个项目,共用资源。
**SSH:**安全外壳协议 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定。最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台,几乎所有UNIX平台,都可运行SSH。
**Markdown:**是一种纯文本格式的标记语言。http://www.coderli.com/write-readme-for-your-project/
1、修改远程关联:
git remote set-url origin git@gitee.com:abellmz/blog.git
命令$ git push -u origin master出问题
Permission denied (publickey).
fatal: Could not read from remote repository.
2、将公匙贴入gitee的ssh公匙中
cd ~/.ssh
ls
$ cat ~/.ssh/id_rsa.pub
复制公匙到码云的ssh公匙中
在push,问题: ! [rejected] master -> master (fetch first)
error: failed to push some refs to ‘git@gitee.com:abellmz/blog.git’
hint: Updates were rejected because the tip of your current branch is behind
报错改变,公匙贴入做法是对的
3、由于码云新建仓库中有代码文件,不能覆盖
git fetch之后git merge
不报错Already up-to-date.
4、重新上传成功
git add . git commit -m ‘提示’ git push -u origin master
参考文档:
https://blog.csdn.net/LJFPHP/article/details/79508859
https://blog.csdn.net/m0_37806112/article/details/82289606
附带:clone操作没问题,分支操作也一样
小知识点:
1、ssh和https方式的区别:
https://blog.csdn.net/qq_26394087/article/details/71740192(更多详情看连接)
1.clone项目:使用ssh方式时,需要配置个人的ssh key,并将生成的ssh公钥配置到git服务器中。下面会谈到如何生成并设置你的ssh key。而对于使用https方式来讲,就没有这些要求。
2.push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则需要验证密码。而对于使用https方式来讲,每次push都需要验证用户名和密码
用户名和邮箱:
查看-》 $ git config user.name
$ git config user.email
修改(和设置一样):$ git config --global user.name “xxx”
$ git config --global user.email “xxx”
2、git clone和git pull的区别:
git clone:
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
git pull:
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
git pull 命令等同于先做了git fetch(拉取) ,再做了git merge(合并)。
3、分支dev推送和拉取的代码和主支master代码一样吗
分支dev推送的代码由于是在原代码库的基础上新增的,所以和master相比会多出改变的文件,但master的代码不变,也就是说,远程dev和master拥有两套代码
git clone默认拉取master分支代码,拉取分支dev的代码,道理同上,两套不同的代码
4、如果本地分支中内容不同,转换分支后,仓库对应改变
5、克隆下载ssh和https有什么不同
https git clone是长这样的:git clone https://github.com/project/repo.git
ssh git clone是长这样的:git clone git@github.com:project/repo.git(远程关联)
区别:
https用443端口,可以对repo根据权限进行读写,只要有账号密码就可进行操作。
ssh则用的是22端口,也可以对repo根据权限进行读写,但是需要SSH Keys授权,这个key是通过ssh key生成器生成的,然后放在github上,作为授权的证据,这样的话就不需要用户名和密码进行授权了。
已解决问题:
1、文件太大传不到远程:
fatal:The remote end hung u 9%p unexpectedly
…
1.检查是否存在ssh key
$ ls ~/.ssh/id_rsa.pub如果出现文件路径则存在
2.生成ssh key
$ ssh-keygen -t rsa -C “your@email.com”
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,比如邮箱。
-f 指定密钥文件存储文件名。
以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码。连续3个回车。如果不需要密码的话。 最后得到了两个文件:id_rsa和id_rsa.pub。
如果你是第一次使用git,在此步骤前先设置自己的用户名和邮箱
$ git config --global user.name “yourname”
$ git config --global user.email “your@email.com”
3.添加密钥到github上
打开你的id_rsa.pub文件,拷贝内容粘贴到github上的ssh设置里就可以了。
1 | cat ~/.ssh/id_rsa.pub |
复制,ssh-rsa…到最后。
具体操作:登录你的github账号,点击右上角设置,点击Settings->点击左边菜单栏的 SSH key,添加一个新的sshkey,将代码贴入,完成。
4.测试
$ ssh -T git@github.com
第一次的话期间若出现是否continue,输入yes,出现hi。。。(加上你的用户名)就成功了。
然后打开项目目录,.git文件夹下的config内容中修改成如下所示,即把url换成ssh方式的路径就ok了(若已经一样就不用改了),…是你的用户名及项目名,不用自己输入,到github上获得你的ssh方式的路径粘贴过来就ok。
[remote “origin”]
url = git@github.com:…git
fetch = +refs/heads/:refs/remotes/origin/
最后再次提交远程就可以了。
参考文献:
https://blog.csdn.net/qq_26394087/article/details/71740192
http://www.cnblogs.com/chuyanfenfei/p/8035067.html
https://www.cnblogs.com/hanxianlong/p/3464224.html
报错:
2、由于尝试命令,导致主分支master被本地仓库被删除了很多文件,想要合并分支dev中的文件。
git fetch origin dev
git checkout master
git merge dev
报错:fatal: refusing to merge unrelated histories
这时需要用命令git merge dev --allow-unrelated-histories
再git add . git commit -m ‘’ git push -u origin master
3、报错:The authenticity of host。。。。can’t be established.r
解决:输入yes就行了
4、报错:warning: LF will be replaced by CRLF in…文件地址
Linux系统和windows系统下的换行符不一样Linux是’\n’既LF,windows下面确实’\r\n’既CRLF。
git config –global core.autocrlf true//设置git在push转换成lf,pull的时候转换成crlf(其实默认配置就是这个样子的)
git config –global core.autocrlf false//设置git在push和pull的时候不会进行转换(这个不会报CRLF的错误但是可能会出现错误,有人laravel的routes.php配置的路由运行不了)
git config –global core.autocrlf input//设置git在push的时候将lf转换成crlf,pull的时候并不会把crlf转换成crlf。
解决:检查git config --list发现有两个core.autocrlf=true,vi ~/.gitconfig->i->删除core下面的autocrlf=true->再次检查git config --list发现只有一个了。
提交还是报这个错->运行git config –global core.autocrlf false(现在只有自己的电脑window10在用代码,进公司的话可能需要改动)->再次检查git config --list出现两个core.autocrlf一个为true,后面一个为false.->尝试提交代码不报错