GIt 是一个快速可扩展的分布式版本管理系统。它具有极为丰富的命令集,对内部系统进行高级操作和本本控制。最近项目需要,所以把自己的学习笔记和大家分享。欢迎补充。
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
创建一个git仓库:
首先将目录切换到一个你所希望的工作目录,以方便您对项目进行管理。例如 $HOME/work/myGitTest 目录 我已 bash $WORK代替改目录。代码如下:
cd $WORK
git int
git 会做出如下反应:
Initialized empty Git repository in /home/fubh/www_root/git_test_obj/.git/
上述操作会在$WORK下创建了一个隐藏的 .git 目录它就是所谓的Git仓库
向Git仓库添加文档:
向Git 仓库添加文档,的过程成为 “take a snapshot” (生成快照) 命令如下:
git add ./test.php #添加单个文件
git add . #添加所有文件到版本控制
所生成的快照会存放在一个临时存储区域,Git成该区域为索引。
将索引提交至仓库:
命令:
git commit #提交所有
git commit ./test.php #提交一个文件
执行git-commit 时 ,Git会自动调用系统默认文本编辑器,要求输入版本更新说明并保存。对于简单的版本信息说明可以用如下命令:
git commit -m 'this is test by rockie'
关于提交的一些细节:
第一个问题是:在使用Git之前,你需要面对Git来一番自我介绍。Git不喜欢 不愿透漏姓名的人,因为它要求每个人在向仓库提交数据时,都应当承担一定的责任。要向Git进行自我介绍,请使用以下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
第二个问题是:在生成文档内容快照时,工作树中有一些文档是你不希望接受 Git管理的,譬如程序编译时生成的中间文件,对于这样的文件如何避免为之生成 快照? 譬如对于上一节的用例,在工作树中存在以下文件(或子目录):
conf index.php zh app
其中的zh目录存放着TX文档编译时生成的中间文件,因此该目录不应该被 Git所管理。为解决此类问题,Git提供了文档忽略机制,可以将工作树中你不希望接受Git管理的文档信息写到同一目录下的.gitignore文件中。对于本例中的zh目录,采用如下操作可将其排除仓库之外,然后再对$WORK生成快照即可。
cd $WORK
echo 'zh' > .gitignore
有关gitignore文件的诸多细节知识可阅读其使用手册:
man gitignore
将文档从版本控制中删除
git rm demo.php
git commit -a #然后提交删除
查看版本库状态:
通过该命令,我们可以查看版本库的状态。可以得知那些文件发生了变化,那些文件还没有添加到git库中等等。 建议每次commit前都要通过该命令确认库状态。以避免误操作。
git status
状态说明:
· ' ' = unmodified
· M = modified
· A = added
· D = deleted
· R = renamed
· C = copied
· U = updated but unmerged
查看版本历史:
在工作树中,使用git-log命令可以查看当前项目的日志,也就是你在使用 git-commit向仓库提交新版本时所属如的版本更新信息。
git log
如果你想看一下每一次版本的大致变动情况,可使用以下命令:
git log --stat --summary
PS:如果我们将项目版本号用作git-show命令的参数,即可查看该次项 目版本的更新细节:
git show dfb02e6e4f2f7b573337763e5c0013802e392818
除了使用完整的版本号查看项目版本更新细节之外,也还可以使用以下方式:
git show dfb02 #一般只使用版本号的前几个字符即可
git show HEAD #显示当前分支的最新版本的更新细节
每一个项目版本号通常都对应存在一个父版本号,也就是项目的前一次版本状 态。可使用如下命令查看当前项目版本的父版本更新细节:
git show HEAD^ #查看HEAD的父版本更新细节
git show HEAD^^ #查看HEAD的祖父版本更新细节
git show HEAD~4 #查看HEAD的祖父之祖父的版本更新细节
撤销与恢复
版本控制系统的一个重要任务就是提供撤销和恢复某一阶段工作的功能。git-reset命令就是为这样的任务而准备的,它可以将项目当前版本定位到之前提交的任何版本中。git-reset命令有三个选项:--mixed、--soft和--hard。我们在日常使用中仅使用前两个选项;第三个选项由于杀伤力太大,容易损坏项目仓库,需谨慎使用。
--mixed是git-reset的默认选项,它的作用是重置索引内容,将其定位到指定的项目版本,而不改变你的工作树中的所有内容,只是提示你有哪些文件还未更新。
--soft选项既不触动索引的位置,也不改变工作树中的任何内容,但是会要求它们处于一个良好的次序之内。该选项会保留你在工作树中的所有更新并使之处于待提交状态。
它的命令形式:git-reset [--mixed | --soft | --hard] [<commit-ish>]