Git 是一个分布式版本控制工具,最初版本由Linux之父Linus在一周之内开发完成,目的是为了解决Linux内核维护工作的代码同步(不得不感叹李纳斯简直是神啊)
快照
创建文件夹
git init
由于刚刚初始化,此时显示On branch master,No commits yet,nothing to commit
创建文件并修改
将文件放入暂存区
提交到本地
修改了某个文件,但还没有提交保存
把已修改的文件放在下次提交时要保存的清单中
该文件已经被安全地保存在本地数据库中
下面是工作目录,暂存区域,以及本地仓库三者之间的关系
git add 命令,根据目标文件的状态不同,此命令的效果也不同
告诉 Git 开始对这些文件进行跟踪
tracked 、 untracked分别标识跟踪/不跟踪。对于每个文件,都只能处于这两种状态的其中一种
几个要注意的点:
要确定哪些文件当前处于什么状态,可以用 git status 命令,若是 nothing to commit (working directory clean),则标识你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过
git status 的显示仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff 命令
写在git ignore中的文件无需纳入 Git 的管理,比如说,在目录下创建.gitignore文件,然后在文件中写入:
*.c 忽略所有的c结尾的文件 !wdnmd.c 文件wdnm.c不放入忽略沐浴露 /nmsl 只忽略项目根目录下的 nmsl文件,子目录下的nmsl文件不受影响
git clone命令可以复制一个现有仓库,且仓库中包含所有的历史版本
下面是几个常用的实际情景
通过HTTPS的方式 $ git clone https://github.com/richardchien/modern-cmake-by-example.git 通过ssh的方式 $ git clone git@github.com:richardchien/modern-cmake-by-example.git 通过ssh的方式,并且将本地的目录名命名为 wdnmd $ git clone git@github.com:richardchien/modern-cmake-by-example.git wdnmd 通过ssh的方式,且要克隆的是某个服务器上的git目录仓库 $ git clone user@server:/path.git
该命令会打印出所有的提交历史,会按提交时间列出所有的更新,最近的更新排在最上面,每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明
$ git log -p -2
-p 选项展开显示每次提交的内容差异
-2 则仅显示最近的两次更新:
git push 是用来将本地仓库中的数据推送到远程仓库
如果要把本地的 master 分支推送到 origin 服务器上,可以使用以下语句:
git push [remote-name] [branch-name]
//TODO
该图来自微信公众号:绯浅yousa
网页在线资料
书籍
可视化的 Git 在线学习网站