Git 笔记

声明:这个笔记是根据我自己的理解所写,可能有部分理解有误或不全,仅供参考。

以前在装 Vundle 的时候安装了 Git,但只作为 Vundle 的后台使用,没有直接使用过 git。趁着这次搬博客的机会,大致学会了基础的使用,本文是对 git 基本操作尤其是与 github 结合的一个简单笔记,适合零基础的人入门,也作为我自己的一个参考手册。


最简版

  • git init,新建一个 repo
  • git clone <some_url> [destination_dir],从 Github 或其它网站下载 repo 的完整内容
  • 修改文件,然后 git status 查看有哪些修改
  • git add . 添加所有的修改到 stage
  • git status,确认所有修改
  • git commit -m "Message",把修改“commit”到数据库中
  • git push origin master,把本地的修改 push 到远程(比如 github)

以下为更详细的版本。

什么是 Git? Git 是版本管理系统(version control system)的一种,主要的功能本质上也就是它的名字所暗示的——控制版本。大致可以理解为这个系统记录了文件的历史状态,从而使得可以将文件、项目恢复到历史版本等。Git 作为 VCS 的一种,大概也是现在最流行的一种,与以前的 VCS 有一些显著的区别,可以将其理解为一个特殊的文件系统,而这个系统具有记录历史版本和其它一些高级的特殊功能。

因为 Git 是一种特殊的文件系统,所以它的操作都是本地的,不需要依赖网络,虽然你同样也可以在有网络的时候把这个系统记录的内容同步到托管网站比如 Github 上,但这不是必需的,另外也可以自己搭建自己的 git 服务器。

三种基本状态

  1. commited,文件储存在本地数据库中
  2. modified,有修改但还没有 commit
  3. staged,标记好了修改并准备 commit

基本的使用

当对 git 有一定的基本理解之后,强烈建议下载 Github 的 cheat sheet,包含了绝大多数的常用命令。

  • 安装(Windows)

Mac 和 Linux 下的安装基本都是一条 apt-get 命令的事,或者干脆就集成了,而 Windows 下则需要手动安装。安装包可以选择 Github 网站提供的版本,或者在 Git 的网站也提供了针对各大系统的安装包下载

安装基本按默认选项即可,注意将 git 的目录添加到系统 PATH 中,方便使用。

  • 获得帮助

本文显然只是一个很粗浅的介绍,如果要获得更进一步的帮助,除了 Google 和栈溢出外,还有两个很重要的途径:官方出版的免费电子书 Pro Git,以及自带的帮助文件。

本地帮助的使用方法是 git --help [command_to_search]

  • 建立 repository (aka 'repo')

如果需要到远程比如 Github 上下载一个 repo,执行如下命令:

git clone some_url [target_dir_name]

而如果是需要在本地直接新建一个 repo,则在所需目录下执行:

git init

Git 本地文件管理带来的一个好处是文件非常「干净」,当一个 repo 项目不需要的时候,只需要将该文件夹完整地删除即可,所有的数据库和历史版本等都会随之清除。

  • 修改项目以及提交修改

对项目作修改之前,需要先 git status 检查项目的状态,最好是在显示 up-to-date 的状态下作修改。

修改项目无需多说,用任何方法修改或者添加文件即可。值得一提的是,虽然 git 经常被用作代码的版本控制,理论上它是可以为任意文件格式控制版本的,包括图片、表格、文档等。如果有重要的本地文件需要记录或者备份它的历史版本(比如毕业论文),git 也是一个不错的选择。

修改结束后,被修改或添加的文件会在 git status 中显示出来,此时需要将它们标记为「stage」,可以用 git add <file_name> 来添加单个文件,或者如果要添加所有的修改,用更简单的git add .

添加修改之后,再看一下 status 是一个好习惯,避免误操作得到了不想要的结果。

把修改正式推进数据库的操作是 git commit -m "Commit message"。如果只在本地做了版本控制,到这里就完成了一次版本修改。

如果项目托管在网上的,还需执行 git push origin master (假设前面是从远程 clone 下来的)。

关于远程的操作,也是最开始我比较迷惑的地方。如果是 clone 下来的 repo,那么在数据库中就已经记录了其远程地址,所以在 push 的时候也无需再提供地址。我最开始错误地理解成 git 临时缓存了一个远程地址,所以在一次操作没有 push 到远程就退出的时候,或者切换到了另一个 repo 工作,就需要重新提供地址。这种完全本地的存储方式对我来说是一个很重要的加分项,因为管理起来非常的「干净」,只需要关心文件夹在哪里,而不必关心还有什么设置保存在 git 的设置中。

查看本 repo 保存的远程信息用 git remote -v

本文关于 git 的内容到此为止,对 git 一无所知的人看完应该大致能够上手使用了。其它未尽部分还是推荐读一读 Pro Git 的前两章,有很多基础性的介绍。这本书虽然看起来很「pro」,但其实行文风格还是像一本简介性质的书,很容易懂。

还有不少本文没有覆盖的内容,其实还有一些平时有不少几率会遇到的操作,具体不再展开,可以通过 Pro Git 检索或者帮助文件了解更详细的操作方法,建议将 github 的 cheatsheet中所有的命令都了解一遍。

links

social