GitHub
2018年10月19日
14:19
GitHub简介
GitHub有一个很强大的功能就是,你在服务器上边可以创建一个库(稍后会介绍怎么创建),写代码是一件很重的任务,尤其是很多人完成一个很大的项目的时候,就十分的复杂,一群人一起来写某个项目,大家完成的时间,完成的进度都是不相同的,你写一点我写一点,甚至可能你今天写的出现了错误,影响到了我昨天写的代码,最后怎么才能将大家的代码轻松的汇总起来,又怎么在汇总所有人的代码之后发现错误等等一系列问题。这样我们就用到了GitHub这个软件。我们在GitHub服务器上有一个主仓库,这里用来储存你的所有代码,如果不付费的话是所有人都可以看的,如果你不想让别人看到你的代码,可以选择付费仓库。我们创建了主仓库之后,就可以在电脑上创建分支,之后你就可以在电脑上完成自己的代码,写完之后直接同步在电脑的分支,当你认为可以上传的自己的主仓库时,就可以申请更新,当通过审核的时候,你代码就出现在了自己的主仓库中,这样全世界的程序员都可以查看你的代码。全世界现在已经有300万的注册用户,甚至还有一些相当知名的开源项目也在其中公布代码。在GitHub上你可以看到很多计算机领域的精英所分享的自己的代码。这是GitHub的两个主要优点,适合团队协作,以及下载其他优秀者的代码。
参考:https://blog.youkuaiyun.com/Hanani_Jia/article/details/77950594
https://blog.youkuaiyun.com/wangrenbao123/article/details/55511461/
Git是目前世界上最先进的分布式版本控制系统。
git的工作原理图:
workspace:工作区
index/staged:暂存区
repository:本地仓库
remote:远程仓库
workspace首先是add到index上,让后commit到repository,再push到remote.
之前安装了GitHub(windows版)一直没有用上,右键git bash here 不见了,重新安装学习一下吧
谷歌浏览器Tampermonkey可以安装GitHub汉化工具(https://github.com/52cik/github-hans)
先登录GitHub(https://github.com/)注册账号
-
- 卸载
- 程序卸载删除
- 安装
- 下载GitHub(windows)安装:https://git-scm.com/ (改改路径默认安装就好了)https://blog.youkuaiyun.com/sishen47k/article/details/8021100 每步安装说明
- Git bash 命令窗口,基于cmd命令
- Git GUI git图形界面
- Git CMD cmd命令窗口
- 下载GitHub(windows)安装:https://git-scm.com/ (改改路径默认安装就好了)https://blog.youkuaiyun.com/sishen47k/article/details/8021100 每步安装说明
- ssh key
- 创建ssh key 密钥与GitHub账号绑定
- 打开git bash:用户@电脑型号
- 创建ssh key 密钥与GitHub账号绑定
- 卸载
-
- 获取属于你自己的密匙
公钥是CODE识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与CODE建立联系,然后您就可以很方便的将本地代码上传到CODE,或者将CODE代码下载到本地了。
-
- $ cd ~/.ssh 检查本机公钥
如果提示:No such file or directory 说明你是第一次使用git
如果不是第一次使用,请执行下面的操作,清理原有ssh密钥。
-
- $ mkdir key_backup 清理ssh密钥
$ cp id_rsa* key_backup
$ rm id_rsa*
-
- 生成新密钥
$ ssh-keygen -t rsa -C “您的邮箱地址”
引号内需要改成你在注册GitHub的时候绑定的邮箱账号。之后会有一些简单的让你确认的操作,之后让你会提示操作路径、密码等等,一般情况下就直接按回车一路过就可以。
这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。
您可以在你本机系统盘下,您的用户文件夹里发现一个.ssh文件,其中的id_rsa.pub文件里储存的即为刚刚生成的ssh密钥。
-
- 添加公钥
登录CODE平台,进入用户“账户设置”,点击右侧栏的“ssh公钥管理”,点击“添加公钥”,将刚刚生成的公钥填写到“公钥”栏,并为它起一个名称,保存即可。
注意:复制公钥时不要复制多余的空格,否则可能添加不成功。
-
- 检查是否添加成功
$ ssh -T git@github.com
报错处理(https://blog.youkuaiyun.com/sunnypotter/article/details/18948053/)
-
- 出错,前面取名默认,已用红叉标记(不要输入),默认名id_rsa
- $ ssh -T git@github.com git@github.com: Permission denied (publickey).
- 利用 -v debug
$ ssh -T -v git@github.com
可以看到一直在找id_rsa
到标记目录下看果然没有id_rsa文件,看了下生成在标记目录/key_backup目录下
将文件移入
-
- 简单配置
- $ git config --global user.name "id_rsa"
- $ git config --global user.email "1039048406@qq.com"
- 简单配置
name最好和GitHub上边的一样,email是一定要是注册GitHub的那个邮箱地址
-
- 克隆
- github创建一个仓库:记住网站
- 克隆
本地创建一个目录存放仓库:G:\GitHubRepository
先进入自定义目录
克隆
$ git clone https://github.com/mayl0415/mayl.git
可以看到目录多了一个仓库
测试
在 mayl 下新建一个文件
查看:$ ls 查看该目录下文件
上传
$ git add test.txt
备注
$ git commit -m "cc" 引号内的内容可以随意改动,这个语句的意思是 给你刚刚上传的文件一个备注,方便查找记忆而已
github上传
$ git push origin master
登录失败
输入账号重新登录:表示登录成功
github查看
看到上传成功
git的运行逻辑:3步
1.创建git仓库.
创建仓库分为2步:
<1>本地是没有库的,从服务器pull库到本地来.
<2>本地有库,上传库到服务器中.
2.提交本地代码
<1>git add . 是添加所有当前目录的所有文件
<2>git commit -m "这里是添加注释" :和服务器的代码合并
3.拉取远程代码 git pull
合并有冲突的代码 conflict:merger
修改了服务器原来的代码替换成你的代码,这些代码有冲突,是选择你的还是选择原来的,有冲突的时候,会自动修改你写的代码,并保留服务器原来的代码,如果你是要修改服务器的,只要删除自动添加的,再进行2<2>执行下一步步骤就行)
提交代码 git push
GitHub与svn的区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
分支的作用
你的项目进行中遇到了一个问题,解决方案不确定,但是你不希望因此影响到当前的开发,那么你可以为此创建分支,然后在分支上测试你的方案,如果可行那么可以通过合并分支功能将你的更新应用到主干,反之你可以放弃它。
两种方式clone服务器上的代码库:
1)https方式,通过填写账号和密码就可以clone代码库
2)ssh公钥和私钥方式,先在本地制作公钥和私钥.
解释:ssh-keygen -t rsa是直接制作公钥和私钥 -t是填写加密的标准rsa 按下三层Enter的键可以看见公钥和私钥放在哪里了.(一般在C:\Users\Administrator\.ssh的文件夹中公钥.pub后缀)
cmd例子: git clone https://xxx.xxx
cmd例:ssh-keygen -t rsa或者是ssh-key -t rsa -C "可以填任何东西文字一般写邮箱,这段文字就在公钥私钥中文本的最后面"
然后在服务器中生成公钥,生成之后,在本地cmd中:git clone git@gitxx.x网址x.git就搞定clone代码库了
git常用命令
- git status -s: 查询repo的状态,-s表示short,输出标记有两列,第一列是对staging区域,第二列是working目录
- git log >>显示每条分支的合并历史
- --oneline --graph:可以图形化表示分支合并历史
- --author=[author name]指定作者提交历史
- git add . :帝国添加当前工作目录中的所有文件
- git commit:提交已经被add进来的改动
git的分支操作命令:
- git branch -b name:创建分支
- git branch:查看当前目录的分支
- git branch -d name:删除分支
- git push origin:name 删除远程分支
- git checkout name:切换分支
- git checkout --file撤销修改
- git rm file :删除文件
- git log --graph :分支情况图
git新建本地分支与远程分支关联问题
- 1)git在本地新建分支,push到远程服务器上之后,再次pull下来的时候,如果不做出来会报提示要求要up-to-data
所以,git本地新建一个分支后,必须要做远程分支关联.
- 例子
本地新建分支:git branch -b new_branch
将本地分支和远程服务器关联:git branch --set-upstream-to=origin/master new_branch(将本地新建的分支new_branch分到服务器的origin/master的分支下)
跟踪远程的分支
git branch --set-upstream-to=origin/分支名 分支名
很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地。然而,为什么绝大多数人会使用https url克隆呢?
这是因为,使用https url克隆对初学者来说会比较方便,复制https url 然后到 git Bash 里面直接用clone命令克隆到本地就好了。而使用 SSH url 克隆却需要在克隆之前先配置和添加好 SSH key 。
因此,如果你想要使用 SSH url 克隆的话,你必须是这个项目的拥有者。否则你是无法添加 SSH key 的。
https 和 SSH 的区别:
1、前者可以随意克隆github上的项目,而不管是谁的;而后者则是你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
2、https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。