git版本控制系统
1 关于版本控制
一个或者一些文件,长期去要写操作,对于每个有意义的阶段往往我们会将之管理起来。原始的管理方式无非就是拷贝改名的方式,最好再备注好日期。但是版本过多你也会晕死。因此迫切需要一个专业的版本控制软件来帮助我们。我们可以通过版本控制在不容的版本之间切换,你对工作目录的增删改操作都可以恢复过来。
这只是针对一个人的操作。
如果一份源代码,两个人以上在不同的地方需要对这份代码进行写操作。我们可以给代码创建一个版本库,A和B从版本库中拷贝到本地开发,然后A将修改提交到库中,B将A的修改获取后再本地合并再提交到版本库,完成了一份文件多人同时开发。
我不知道其他版本控制系统的区别,也不想去了解历史。git的历史和Linux创始人的故事自己百度吧
1.1 git的特点
传统的版本控制系统的版本模型:
其他版本系统记录文件的方式是将文件的修改进行对照,将version1和version2的差异(三角形)以补丁的形式记录下来,当你需要checkout当前版本的时候就会将上一个版本+差异=计算出新版本。
这种方式设计理念很好,节约磁盘资源。貌似现在磁盘已经很廉价了。
git的方式不同,Git是直接记录快照:
就是说FileA是一个版本,在他基础上修改后提交后,直接将整个变更后的文件记录为A1。
git是本地管控的,远程的库只是共享。不像SVN需要从远程库下载,然后修改了又提交到远程库,git从远程下载后就在本地操作修改和提交,验证无误了推送到远程共享。我感觉好像就多了个本地。其他使用起来都差不多。
但是git确实给人很清晰的感觉,简单易操作,并且很适用于开源的项目
1.2 git的完整性
官网说:
“Git 中所有数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。”
就是说git通过一个快照(一个修改的版本全部内容)内容生成一个哈希串,通过这个串来引用文件
下面记住git系统中文件的三种状态:
committed:已提交
modified:已修改
staged:已暂存
工作目录区的文件是被git系统管理起来的目录,在这里你将会对文件进行修改,修改后的文件就是已修改状态。然后通过命令将修改的文件追加至staging Area中,此时的文件状态变为已暂存。然后提交到本地库中后文件状态就是已提交
2 安装GIT
自行百度,根据操作系统安装。window下建议使用命令行。
2.1 初次运行git前的配置
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会
使用这些信息,并且它会写入到你的每一次提交中,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
既然用户信息已经设置完毕,你可以配置默认文本编辑器了,当 Git 需要你输入信息时会调用它。 如果未配
置,Git 会使用操作系统默认的文本编辑器,通常是 Vim。 如果你想使用不同的文本编辑器,例如 Emacs,可以
这样做:
$ git config --global core.editor emacs
如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。
3 git基础
3.1初始化
git init
将工作目录初始化,初始化后该目录就被git管理起来了。
3.2查看文件状态
git status [-s||--short]
git status
查看文件的状态,但是比较乱七八糟,要想紧凑点则:
git status -s
git status --short
3.3添加修改文件到索引
git add *
git add filename
git add *.txt
3.4 提交文件到本地库
git commit -m "提交说明"
3.5克隆远程现有仓库
远程有一个Git库,提供了git的地址那么就可以拷贝一份到本地
git clone [url] [自定义仓库名字]
3.6忽略文件
有的配置文件我们不想他被提交则创建一个名为 ".gitignore"的文件
将你不需要提交的文件都写进去
这个文件放在.git文件夹的统计目录下
3.7查看已暂存和为暂存的修改
git status 如果只能查看文件的几个基本状态
如果你想知道你具体修改了什么地方可以用
git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改后还没有暂存起来的变化内容
如果要查看已暂存的将要添加到下次提交里的内容则:
git diff --staged
或者
git diff --cached
3.8移除文件
一个文件加入了暂存区后你后悔了想移除怎么办
rm [filename]
可以看到 a文件不进从暂存区删除了 并且工作目录中也没有了
再运行status
此时在运行git rm a.txt记录此次移除文件的操作
如果你在删除前文件已经修改过并且已经放到暂存区的话必须要使用强势选项参数-f
还有一种情况就是你只想移除暂存区的文件,并不想工作区的文件也移除---其实这种情况才是git中最常用的情况
git rm --cached [filename]
3.9查看提交历史
git log [-p] [-num]
git log
按时间列出所有更新。
git log -p
查看提交的差异,即代码的增加和减少
git log -5
显示最近两次提交
3.10 撤销操作
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选
项的提交命令尝试重新提交:
git commit --amend