如何在本地克隆远程github仓库

1,325 阅读6分钟
作为一名合格的程序员,学会使用Git是必不可少的技能。

在开始之前先了解一下Git是什么,Git是最先进的分布式版本控制系统,在我的理解里,就是一个公用的手动进度条,你想让它定在哪儿就能定在哪儿,不管向前还是向后,只要你曾经留下过操作记录,它就能按照你的想法停在想停的地方,同时还能多人操作,互不干扰。互不干扰的意思就是在共有的基础上,自己可以加点想加的东西,同时不影响别人使用,大概就是这个意思。Git Bush是用于windows系统下方便管理git的一个工具,模拟了Linux的环境,解析git命令。

Git安装:

下载:直接到Git官网根据不同操作系统和位数选择合适的版本下载

安装:原则上一路确定是没什么问题的,如果有特殊需求可以仔细看下中间一些选项自己更改一下。

使用:

1 首先需要一个github账号,点击右上角的加号新建一个仓库。

2 打开git bush ,会出现如图所示的界面:(第一次打开没有后面的master)


生成ssh key:

ssh是一种安全传输模式,github每次推送代码时要验证用户是合法的,所以每次都要输入账号密码,但是每次输又很麻烦,所以利用ssh在本机上生成唯一的一个ssh公钥和一个密钥,公钥设置在github上,每次推送代码的时候,github会根据已经保存的公钥和本机里的私钥是否匹配对,配对则允许推送。简单来说就是给本地和远程github提供一个身份认证标识,来确保信息传输的安全。

生成ssh key的命令为ssh -keygen -t rsa -C "xxx" 

-t rsa代表指定密钥类型为rsa,-C用来指定注释,“xxx”是你的注释内容,可以是邮箱也可以是其他。

回车后会提示你输入一个密语字符串(passphrase),空表示没有密语,直接回车会提示确认再次输入,直接回车即可在本地C盘->用户->用户名->.ssh目录下已经生成一个id_rsa(密钥)和一个id_rsa.pub(公钥)文件,把公钥文件里面的内容全部复制,到github右上角设置里,有一个settings,点击会看到一列菜单,找到SSH and GPG keys,点击new SSH key按钮,输入名称,将复制的公钥内容粘贴进去保存即可。

3 在git bush 配置用户信息

分别输入以下五个命令,和github账号建立联系:

git config --global user.name xxx 其中xxx为你自己设置的ssh登录用户名,可以自己起一个

git config --global user.email yyy 其中yyy为你的github登陆邮箱

git config --global push.default simple 不再显示本信息并从现在开始使用采用新的使用习惯

git config --global core.quotepath false 防止文件名变成数字

git config --global core.editor "vim" 使用vim编辑器提交信息

以上命令都输入完毕后检测一下是否配置成功

输入 ssh -T git@github.com,回车后出现以下提示说明设置成功


4 克隆远程仓库

获得远程仓库内容有两个方法,一使用git init,二 使用git clone

首先在本地找一个地方新建一个文件夹,当然也可以不建,但是为了方便整理查看,我个人感觉如果第一次使用还是新建比较好。在文件夹内右键选择git bush here,代表这以后发生的操作都将在这个文件夹内执行。

git init:在git bash中输入指令git init,该指令将会在本地创建一个名为.git的子目录,这个目录里包含所有的必须文件。此时只是初始化了仓库,但是里面的文件还都没有被跟踪,新建一个文件使用git status指令查看本地新改动文件,会发现出现很多文件名显示未跟踪,包含你新建的文件。

git add :git add 指令用于将指定文件添加到暂存区,待提交,有两种用法:git add 文件名,添加某一个文件;git add .,添加所有发生改动的文件。

git commit:该指令用于将暂存区文件提交到本地仓库,也有两种用法:git commit -m "这里填备注便于查找",代表将已经添加到暂存区的文件提交到本地版本库中;git commit -am "备注",代表将本地已经添加的改动,以及还没有来得及添加到暂存区的改动一起提交到本地版本库。

完成以上命令后添加远程仓库:命令:git remote add origin  git@github.com:xxx/yyy.git 其中xxx为你的github用户名,yyy为你建立的仓库名,如果发现提示克隆失败,那可能是协议不支持,不妨试试把git@github中第一个git改为https://,然后本地仓库也关联远程仓库命令:git branch --set-upstream-to=origin/master master,代表在本地建一个名为master的分支对应远程仓库的master分支。

git pull:该指令用于拉取远程分支最新内容并合并到本地分支,使用git pull origin master会发现提示有错,此时本地新建分支和远程分支还没有关联,改为"git pull origin master --allow unrelated-histories”强制允许合并,相当于此时真正关联了本地和远程分支。

git push :git push 命令用于将本地版本库新改动推到远程分支,用法:git push origin 分支名,目前只有一个分支一般为master主分支。

以上是使用git init获取远程仓库并提交新内容的过程,如果是git clone,则如下:

git clone:git clone 可以直接将远程分支克隆到本地,用法:git clone git@github.com:xxx/yyy.git 其中xxx为你的github用户名,yyy为你建立的仓库名,如果发现提示克隆失败,那可能是协议不支持,不妨试试把git@github中第一个git改为https://,我本人就是使用git协议多次克隆不成功然后改为https://就好了,应该是分操作系统的。

然后git pull拉取远程最新改动时会发现提示报错,因为此时还没有建立联系,改为git pull -u origin master,如果还报错,使用git remote add origin git@github.com:xxx/yyy.git,然后使用git pull -u origin master即可,添加以及提交推送新改动同上。