git及其github的使用

参考:git教程

集中式vs分布式

       集中式 :集中式版本控制系统,版本库是集中存放在中央服务器的,⽽干活的时候,⽤的都是⾃⼰的电脑,所以要先从中央服务器取得最新的版本,然后开始干 活,干完活了,再把⾃⼰的活推送给中央服务器。中央服务器就好⽐是⼀个图书馆,你要改⼀本书,必须先从图书馆借出来,然后回到家⾃⼰改,改完了,再放回图书馆。
       分布式:分布式版本控制系统根本没有“中央服务器”,每个⼈的电脑上都是⼀个完整的版本库,这 样,你⼯作的时候,就不需要联⺴了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢?⽐⽅说你在⾃⼰电脑上改 了⽂件A,你的同事也在他的电脑上改了⽂件A,这时,你们俩之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。

git全局配置

git安装完成后,还需要最后⼀步设置,在命令⾏输⼊:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
因为Git是分布式版本控制系统,所以,每个机器都必须⾃报家⻔:你的名字和Email地址。注意git config命令的--global参数,⽤了这个参数,表⽰你这台机器上所有的Git仓库都会使⽤这个配置,当然也可以对某个仓库指定不同的⽤户名和Email地址。

创建版本库

        版本库⼜名仓库,英⽂名repository,可以简单理解成⼀个目录,这个目录⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,⽽且告诉你是⼀个空的仓库(empty Git repository),可以发现当前目录下多了⼀个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要⼿动修改这个目录⾥⾯的⽂件,不然改乱了,就把Git仓库给破坏了。也不⼀定必须在空目录下创建Git仓库,选择⼀个已经有东⻄的目录也是可以的。不建议使⽤⾃⼰正在开发的公司项目来学习Git。

把文件添加到版本库

        所有的版本控制系统,其实只能跟踪⽂本⽂件的改动,⽐如TXT⽂件,网⻚,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,⽐如在第5⾏加了⼀个单词“Linux”。图⽚、视频这些⼆进制⽂件,虽然也能由版本控制系统管理,但没法跟踪⽂件的变化,只能把⼆进制⽂件每次改动串起来,也就是只知道图⽚从100KB改成了120KB,但到底改了啥,版本控制系统不知道。Microsoft的Word格式是⼆进制格式。因为⽂本是有编码的,⽐如中⽂有常⽤的GBK编码,⽇⽂有Shift_JIS编码,如果没有历史遗留问题,强烈建议使⽤标准的UTF-8编码,所有语⾔使⽤同⼀种编码,既没有冲突,⼜被所有平台所⽀持。
       把⼀个⽂件放到Git仓库只需要两步。
第⼀步,⽤命令git add告诉Git,把⽂件添加到仓库:
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
简单解释⼀下git commit命令, -m后⾯输⼊的是本次提交的说明,可以输⼊任意内容,当然最好是有意义的,这样你就能从历史记录⾥⽅便地找到改动记录。

版本控制

远程仓库

       (github的使用不做介绍)由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要⼀点设置:

        第1步:创建SSH Key。在⽤户主⺫录下,看看有没有.ssh⺫录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个⽂件,如果已经有了,可直接跳到下⼀步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "[email protected]"

你需要把邮件地址换成你⾃⼰的邮件地址,然后⼀路回⻋,使⽤默认值即可,由于这个Key也不是⽤于军事目的,所以也⽆需设置密码。如果⼀切顺利的话,可以在⽤户主目录⾥找到.ssh目录,⾥⾯有id_rsa和id_rsa.pub两个⽂件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放⼼地告诉任何⼈。

       第2步:登陆GitHub,打开“Account settings”,“SSH Keys”⻚⾯:然后,点“Add SSH Key”,填上任意Title,在Key⽂本框⾥粘贴id_rsa.pub⽂件的内容,点“Add Key”,你就应该看到已经添加的Key。为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,⽽不是别⼈冒充的,⽽Git⽀持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你⾃⼰才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你⼀会⼉在公司提交,⼀会⼉在家⾥提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

       第3步:登陆验证,使用命令:

$ ssh -T [email protected]

如果初次设置的话,会出现如下界面,输入yes 同意即可:


       第4步:添加远程库,现在的情景是,你已经在本地创建了⼀个Git仓库后,又想在GitHub创建⼀个Git仓库,并且让这两个仓库进⾏远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他⼈通过该仓库来协作,真是⼀举多得。先在github创建一个空仓库,在本地的同名仓库下:

$ git remote add origin [email protected]:michaelliao/learngit.git

michaelliao替换成你⾃⼰的GitHub账户名,添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字⼀看就知道是远程库。

       第5步:就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To [email protected]:michaelliao/learngit.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.

把本地库的内容推送到远程,⽤git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第⼀次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以⽴刻在GitHub⻚⾯中看到远程库的内容已经和本地⼀模⼀样。

       第6步:从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

猜你喜欢

转载自blog.csdn.net/essity/article/details/80000852