1. 准备工作-公钥
GitHub新手可以理解为就是一个百度云,把自己电脑代码传上去或者下载下来的作用。这个百度云就相当于GitHub的仓库。
而你登陆GitHub以后又没有上传文件这种图形化操作,那么只能用命令行了咯。那用命令行的话要让电脑知道你这代码是上传到谁的仓库上去所以需要仓库地址和这个GitHub的账号密码。
而去访问这个仓库的地址GitHub提供两种方式,一种是http协议,一种是ssh协议。其中http协议每次好像需要输入账号密码有点麻烦(不过我同事的bash好像记住了密码,我的就不行懒得研究了),而ssh协议有个免密操作,就是ssh密钥。
上图就是获取密钥的操作:输入
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
然后连续按3词回车,最后你要的密钥在~/.ssh目录下的id_rsa.pub里面。复制内容后去GitHub设置里面添加公钥就是了。
image.png
image.png
设置好公钥以后,每次上传下载自己GitHub里面的东西都不需要密码了,另外这个公钥是和电脑绑定的,一台电脑对应一个GitHub账户只需要绑定一次就行了。同理换电脑就需要重新绑定。
2. 本地仓库和远程仓库建立联系
就跟上传照片到百度云的时候你会创建文件夹分类一样,上传代码到GitHub也需要先创建一个远程仓库,然后本地创建一个本地仓库,代码就在他们两之间上传和下载。实际操作就是git push和git pull。本地仓库和远程仓库有两种方法可以建立联系分别如下:
2.1.1 clone远程仓库到本地
按下图步骤一步步来
image.png
其中勾选Initialize this repository with a README是重点,如果不勾选就是另外一种方法了。
image.png
image.png
image.png
其中git clone git@github.com:jirengu/blog.git这句命令就已经把远程仓库复制到本地仓库了,同时会在本地生成一个名叫blog的文件夹,并且文件夹里面有一个.git文件夹和一个README.md的文件。至此远程和本地的连接已经完成。接下来的操作都是把本地的文件上传到远程仓库而已。
所以加起来你需要知道有三个东西:本地文件、本地仓库、远程仓库。你看到的能操作的都是本地文件,等你都操作完毕了,你需要把这些文件给暂存一下,就通过git add 。注意所有增删改操作之后都需要git add才能变为暂存状态。可以用git status查看是否已经是暂存状态。然后用git commit -am "xxx"提交到本地仓库。然后用git push把本地仓库的内容推送到远程仓库。
2.1.3 本地仓库去连接远程仓库
上述创建仓库的方法适用于你啥项目都没,从创建文件夹开始,所以用clone方式比较快。还有种情况是你手头上已经有一堆东西想要上传了,当然用上面的方法创建好本地仓库以后照样可以把你的项目先复制到本地文件再提交到本地仓库。但是你偏偏就不想复制,这就要用到另外一种方法了。
image.png
这种方法就是创建仓库的时候不要勾选Initialize this repository with a README,直接点creat repository
image.png
CD到你创建的文件夹,然后按它说得一步步来就是了,也就多了个git init
3. git pull
如果你每次只把本地的代码提交到GitHub那以上的操作就够了,GitHub会把你新提交的代码覆盖上一次的。但是如果本地代码不小心删了,或者直接在GitHub上面修改代码了,那就需要把代码拉到本地仓库。很简单直接CD到文件夹下面直接git pull就行了,git pull下来的是暂存状态也就是说不需要git add。
所以现在你已经会把本地更新上传到远程,也会把远程更新下载到本地。
4. 合并
上面已经说了你已经会把本地更新上传到远程,也会把远程更新下载到本地。这是有苛刻条件的,远程修改到git pull之前是不能修改本地仓库的内容的。同理本地仓库修改好要git push之前GitHub上面的内容也是不能修改的。因为一方不变,只变另一方那git是知道用谁覆盖谁的。
但是如果没有遵守这个条件呢双方都变了呢?git应该用谁覆盖谁呢?
这时候git就会把两个改变都合并起来,然后返回给你让你自己选择怎么取舍。
具体操作是:这时候只要本地文件动了,再pull就会失败。他会让你先提交到本地仓库才能pull。我改好了以后就gc到本地仓库,然后这时候push是失败的,因为github有改动了,版本比我高了。这时候我必须pull下来。然后git发现本地仓库和github的内容不一致了。两方都有改动就需要合并了。这时候会生成一个UU的文件,在本地文件。你必须把这个uu文件ga,gc才能重新git push。
4. 分支操作
上面操作中你肯定见到了
git remote add origin git@github.com:SakurajimaMai/xxxxx.git
git push -u origin master
第一句的意思是把git@github.com:SakurajimaMai/xxxxx.git这个仓库的地址放到origin这个标签里(可以理解为书签)。第二句的意思是把本地仓库的内容推送到这个书签对应的GitHub上的仓库的主分支上,master是主分支的意思。如果要创建其他分支呢,看下图,因为我懒得写了
网友评论