git简单操作

来源:互联网 发布:sql语句查询时间段 编辑:程序博客网 时间:2024/06/09 19:01

小弟最近对git有了兴趣,于是便开始研究了起来.....

1.概念简介

由于这是我自己的学习笔记博客,所有有关git的介绍我就不过多介绍了,简单的来说,GIT就是分布式的版本管理,这里可能有的人会晕,说白一点,就是项目管理的一个工具(例如我有一个web项目)有人会问了,相对的,什么又是集中式呢,在下面很长的一段内容里面所讲的有关GIT功能与集中式的并没有什么区别,但是分布式版本管理系统

的优势又较之于集中式版本管理有着无敌大的优势...

基于git的项目管理的步骤

什么是版本库(repository)?简单的来说可以理解为一个目录,该目录的里面放置你的项目,举个例子

           github目录文件就是我的一个本地版本库,我在里面放置了


若干的文件。而git的功能就是帮助我管理这些文件。

好了,让我们开始吧!

1.创建版本库    git init

我们进入一个目录之后遍告诉系统我们要将该目录作为我们的repository


在  git init之前我们的目录内容为空

命令执行之后,我们发现

目录里出现了一个.git的隐藏文件,这个.git文件用处大着呢,咱们之后再来讲.

2.修改本地文件

创建完本地的版本库之后,我们先回到我们原始的git的概念上来,即分布式版本管理,我们要充分的理解这七个字的概念,何为分布式。


由图可知,每个人的电脑都是一个版本库,打个比方说,A和B两个人在库里修改了文件C和D,然后他们互相将修改的文件推送给对方看,对面看了之后觉得很满意,遍接纳了,于是,两个人的电脑里都有了来自于对方的修改后的文件。

讲完概念后,我们来修改本地文件,于是乎我们创建一个名叫 read的txt文件,在这里我们再来介绍一个叫做工作空间的概念:

所谓工作空间,其实就是你在你目录里实实在在看到的东西,在这里即为刚刚创建好的read.txt文件,现在我们的版本库里面还是空的,因为文件只是存在于我们的工作空间中,并没有添加到版本库里面去

在此之间我们可以用 git status命令查看  该命令可以列出,当前目录还没有被git管理的文件

提示说 nothing added to commit but untracked files present (use "git add" to track) 

即除了没有路径的文件之外被没有可以提交的,这里的没有路径的文件实际上就是指我们的read.txt文件,而在想要将工作空间的文件同一到版本库里面,首先要用git add <filename> 讲文件放置在 缓存路径里面,然后用git commit -m "注释信息"  统一提交即可,我们再来看一张比较形象的图

途中的stage区就是我们的缓存区,Git为我们自动创建了一个master分支,以及一个HEAD指针,它指向当前的master分支,在我们在工作区做了修改之后,可以先后添加修改后的文件到stage区,然后用 git commit 命令同一把存在stage区的文件一并送到当前分支(master),

git add之后我们发现并没有任何提示,按照unix的思想,没有消息就是好消息,所以我们成功的把read.txt文件添加到stage区了,下一步我们就来把它commit了


完成后我们输入 git status 查看版本库的状态,发现提示说没有东西可以commit了,说明我们此时此刻的缓存区是没有东西的。

始终要记得一点,就是commit是把每次放在缓存区的文件提交上去,也就是说,即使你提交了修改到缓存区,之后,又在工作区修改了文件(即整个过程修改了两次),但最后commit的时候,只会将保存在缓存区的修改commit上去,


3.撤销修改

当然,人人都有犯迷糊的时候,假设你现在在凌晨赶做一份报告,你在文件的最后不小心加上了这么一句话:

完了蛋,这下你要是要把这个东西交上去,你就基本被fire了,但,你在刚准备add commit之前,灵光一现,发现好像哪里不对劲,首先,你用git status 查看

说明此时的修改还只是乖乖的躺在你的工作区里,并没有add到 缓存区,更没有commit上去,既是add 了 我们也有法子撤销(后面讲)

输入 git  check --<filename>    即git  check --read.txt 丢弃工作区的修改,此时我们再看

 

你的小命于是乎又被保住了,

,既是你已经把 那些敏感词汇(fu** u) add 到了缓存区,咱们还是有回头的余地的,我们再输入git status查看版本库的状态:

提示说

 (use "git reset HEAD <file>..." to unstage),用该命令去解除缓存区的修改,

此时用git status,我们会发现它提示我们将修改add到缓存区,说明缓存区的修改已经被我们撤销了。


4.删除文件

当你在工作区删掉某个文件之后,git版本库会追踪你的操作,知道版本库与工作区的内容不一样了,


我们把read.txt在工作区删除了,然后输入git status 发现 它提示我们

1.用 git add <file> 命令去更新缓存区的修改,以便让版本库与工作区同步

2.提示我们用 git checkout -- filename 去取消刚刚工作区的删除操作,即复原read.txt文件


git add    一个在工作区已经删除的文件即为删除一个文件, 然后commit出去 ,现在版本库与工作区都已经没有了 read.txt文件了,不信你可以用git status 看一下


如果你说,这下不好坏了大事,我的read.txt里面还有重要的信息,这下工作区和版本库里面都没有了,这下怎么办呀,别急,git强大着呢  我们且看:

    输入git log查看   git log 即提交的日志

git会列出从近到远的提交记录,每一次提交即一个版本,我们可以发现在 版本号为 be633ff....之后的版本号中都存在read.txt文件,此时我们只要将版本,回退到那些版本中,工作区,和版本库里都可以出现我们想要的read.txt文件啦。

输入

git reset --hard HEAD^,即回退到当前分支的上一个版本, HEAD右上角的^即为上一个版本 ^^为上上个版本,有人要问,我要是要回退到上30个版本也要这么操作吗?肯定不是呀   我们可以用HEAD~30来代替
然后我们发现我们心心念念的read.txt文件又回来了
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向当前版本到指向当前版本的上一个版本.
有关git的基本操作我现在更新到这里,推荐你们一个git的简单教程网站http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000
之后我还会更新的


0 0
原创粉丝点击