Git&GitHub初体验

  在搭建博客的过程中开始真正接触到git这一强大的工具,也就很快对其产生了好奇心。于是写一篇博客来记录自己学习git和github的过程。

  首先推一篇廖雪峰的博客,内容详实,语言幽默。我也是跟着这篇博客学习的。

git简介

git是什么

  git是一个分布式的版本控制系统,可以帮助我们进行版本控制。而GitHub是一个远程的代码仓库,可以帮助我们进行代码托管。

安装git

  Windows下通过官网下载即可,安装提示安装后可以在cmd中通过git --version来查看自己是否配置成功。如图:
git_version

建立本地版本库

版本库

  又名仓库,英文名为repository(就是github上的那个),里面文件的操作可以被git记录,包括修改和删除,以便在需要的时候进行版本回退。在我看来,就好像在你的工作目录里面设置了一个机器人可以帮助你进行代码管理。当你完成工作后,就告诉它一声“我刚刚的工作完了,帮我作个记录吧!这次的工作是XXX”。然后某天你想回到之前的版本的时候,只需要给它说:“哦,上帝!我不小心搞砸了,请帮我回退到我做XXX工作的那次吧!”,然后就可以回退到之前的版本了。当然目前我的理解可能十分不到位……毕竟也是刚接触,对git的机理尚不熟悉。

使用git init初始化仓库

  我们在cmd中进入到自己的工程根目录所在的文件夹,然后使用git init命令就可以初始化一个仓库了。如图:
git_init
然后在目录下我们可以看到多了一个名为.git的隐藏文件夹。里面是git的配置文件,我们无须关心,也不要去动。如图:
git_folder
这里为了演示我是新建了一个空文件夹,当让如果文件夹里面已经有了文件,也是被允许的。

修改仓库中的文件

  一般来说,每个仓库都会有一个README文件(起码我目前看到的是这样),用于告诉别人(因为git很常用于多人协作)这个项目是做什么的,里面的文件是什么等等,就起一个摘要的作用。所以我们给我们的仓库添加一个README文件,当然必须在仓库的根目录或者子目录里面创建,否则git是追踪不到的。根据廖雪峰老师的博客,git只能监视文本文件内容的具体改动,比如一个txt文件,你写了”Hello World”,这个是可以被git所具体知道的。但是如果一个二进制文件,比如一张图片,你把它裁剪了一部分,它只知道照片小了,但具体改动它是不明确的。(word也是二进制文件!震惊!)

  我们在仓库根目录下新建README.txt文件,更改里面的内容如下(不要使用记事本,这可能会带来意料之外的编码错误):

1
2
This is a README file.
Glad to meet you.

  然后我们需要告知git我们对文件进行了修改,需要如下命令:

  第一步:使用git add [file name]告知git,我们将哪些文件添加到仓库

1
git add README.txt

  第二步:使用git commit告知git,将文件提交到仓库
1
git commit -m "First commit"

  其中,-m参数后面跟的是这次提交的描述。也就是我们改动了什么一类的内容。当然你可以随便写,但是最好是有实际意义,否则下一个接手的人可能想杀人。

  当然这里有一个疑问,就是为什么将一个文件在版本库更新为什么要分两步呢?第一步add可以多次使用,选择不同的文件,然后使用commit一次提交。可以使用add .来选定所有文件。

  至于具体的版本控制,emmmmmm这个我也不会,因为还没有用到过……所以还是先说一下github的使用。

远程仓库,GitHub

创建远程仓库

  注册一个GitHub账号,在GitHub右上角可以创建一个新的远程仓库。如下图:

github_new_repo

  点进去页面如下:

github_create_repo

  用作演示,我们创建了一个名为GitHubTest的仓库,并且没有初始化README文件。如下图:(当然什么都没有)

GitHubTest_repo

  其中红框的部分是这个仓库的公钥,我们在本地根据这个公钥可以关联这个远程仓库。当然,别人的仓库你也是可以关联的,但是由于对方仓库的权限限制,你无法进行同步操作。

  我们在cmd中进入到本地仓库的根目录,执行命令git remote add origin [仓库SSH],SSH即为前面图片框起来的部分。如图:

git_remote

  似乎是什么都没发生,那就说明我们没做错。简洁的即是美的。

  这个命令的作用是关联一个远程仓库,其中origin是这仓库的名字,当然你也可以用别的单词来代替。但origin是我们约定俗称的,用来表示远程仓库。

  下面我们应用git push -u origin master将本地仓库推送到远程仓库上。

git_push

  把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

  由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。(这段是抄的)

  当我们查看我们的远程仓库时,你会惊奇地发现,我们的远程仓库已经有了和本地仓库一样的文件(第一次这么做的时候我惊喜了老半天,觉得好神奇)。如图:

git_check

  以后我们提交远程仓库,只需要使用git push origin master就可以了。