廖雪峰Github笔记

  1. Git的诞生
    Linus创建了Linux,后来不满于集中式的控制系统(SVN,CVS),自己花费两周时间用c语言写了Git。
    svn:SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
    cvs:CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似的代码版本控制软件有subversion(svn)。

  2. 集中式vs分布式
    集中式版本控制系统目前在用的就是svn(免费),和IBM的ClearCase和微软的VSS。
    分布式的除了Git,还有 BitKeeper,还有类似Git的Mercurial和Bazaar等。

  3. 安装Git
    默认安装,然后在Git bash中输入:
    $ git config --global user.name “Your Name”
    $ git config --global user.email “[email protected]

  4. 创建版本库(仓库)
    仓库(repository),就是一个放置代码的仓库(目录),为了防止出现错误,尽可能使得仓库的路径不出现中文。具体如下:
    创建:
    $ mkdir learngit
    $ cd learngit
    $ pwd
    /Users/michael/learngit

    初始化(把这个目录变成Git可以管理的仓库)
    git init
    初始化之后在目录learngit下面会出现一个.git的文件夹。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

    注意:不要使用记事本编辑任何文本文件,下载notelus+代替。

  5. 添加文件
    第一步,用命令git add告诉Git,把文件添加到仓库:
    $ git add readme.txt
    第二步,用命令告诉Git,把文件提交到仓库:
    git commit -m “wrote a readme file”
    为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m “add 3 files.”
    要随时掌握工作区的状态,使用git status命令。如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

  6. 版本回退
    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

  7. 工作区和暂存区
    初始态:
    廖雪峰Github笔记_第1张图片
    先对readme.txt做个修改,然后,在工作区新增一个LICENSE文本文件(内容随便写),工作区就出现两个文件。再使用两次命令git add,把readme.txt和LICENSE都添加。如下图,工作区和暂存区stage都出现了文件:
    廖雪峰Github笔记_第2张图片
    然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。如图master分支中出现了文件。
    廖雪峰Github笔记_第3张图片
    8.管理修改
    Git是如何跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

  8. 撤销修改
    git checkout – 可以丢弃工作区的修改
    git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区
    git reset --hard <版本号> 可以版本回退

  9. linix命令
    新建 vi test.txt
    修改 vi test.txt
    编辑 i
    退出保存 esc ,:wq

  10. GitHub理解
    Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
    你肯定会想,至少需要两台机器才能玩远程库不是?但是我只有一台电脑,怎么玩?
    其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下。不过,现实生活中是不会有人这么傻的在一台电脑上搞几个远程库玩,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉,所以我也不告诉你在一台电脑上怎么克隆多个仓库。
    实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
    完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

  11. 远程仓库连接
    第一步创建Github账号
    第二步创建SSH Key:
    $ ssh-keygen -t rsa -C “[email protected]
    在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
    在这里插入图片描述
    创建的文件路径如下:
    廖雪峰Github笔记_第4张图片
    第三步登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:廖雪峰Github笔记_第5张图片
    廖雪峰Github笔记_第6张图片

  12. 添加远程库
    首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
    现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令,连接本地仓库。
    $ git remote add origin [email protected]:15101229871/learngit.git
    关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

  13. 从远程库克隆
    在bash中进入路径,然后输入下面代码克隆GitHub上面的项目到本地(可以是别人的项目,但是不建议这样,因为无法推送修改,建议fork之后从自己的账号下克隆)
    git clone [email protected]:michaelliao/gitskills.git

  14. 分支管理
    https://blog.csdn.net/ShuSheng0007/article/details/80791849

  15. 使用Git
    如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone,一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址[email protected]:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

  16. Git cheat sheet
    廖雪峰Github笔记_第7张图片
    –end

你可能感兴趣的:(git,github)