1.下载安装
官网下载地址:https://git-scm.com/downloads
官网的下载地址可能有些慢,我是在电脑管家的软件管理里面下载的,速度很快,推荐使用这种方式或者其他软件管理。安装步骤在这里就不过多介绍了。
2.学前准备
以上是git进行版本管理的一个大致流程图,首先,对一个文件夹目录进行git初始化操作,这个初始化就是为了让git对这个文件夹中的文件进行版本管理。初始化完成之后,在当前目录下会有一个.git文件夹,这个文件夹就是我们所说的版本库。然后对需要版本控制的文件进行add操作到暂存区,再进行commit操作到提交区(个人命名)。下面,再以实际操作来讲解下具体是怎么实现的。
3.设置
在使用git进行版本管理之前,需要进行一个配置才能使用,这个设置是告诉git你是谁以及你的邮件账号。
git config --global user.email "***@qq.com"
git config --global user.name "liulin"
小技巧:忘记命令的具体写法时可以使用Tab键进行提示。
4.Git体验
那么,设置完成后怎么使用git进行版本管理呢?
第一步:找到需要管理的文件夹,右键,如果git已经安装成功,那么你的界面大概是这个样子的。
如上图所示,会多出来两个git相关的选项。点击Git Bash Here
文件夹里面会多出来一个.git文件。
下面以一个例子来给大家介绍,我新建了一个git_exercise.txt的文件,并在里面编辑了部分内容。
在这里先对大家介绍一个新的命令
git status
可以查看哪些文件被修改了。
这里可以看到提示有未被追踪到底文件,让我们使用git add的命令,那么,我们就按它提示的操作一波
git add git_exercise.txt
再查看一下
继续执行commit指令,-m 后的字符串为本次提交的一个备注信息
git commit -m "create file git_exercise.txt"
再执行status时提示我们已经没有需要提交文件了。
看到这里,你可能还是不清楚git到底是怎么进行版本管理的,因为我们的文件在这时候并没有发生任何变化。不要着急,继续往下看。接下来我对git_exercise.txt进行二次编辑。
然后重复进行前面的提交步骤。
下面,我们使用一个新的命令git log
查看提交日志
从上面可以看到我们前面的两次提交记录
使用git reset --hard commitid
(这个id就是上图提交记录中commit后跟的黄色字符串,可以使用git log进行查看)回退得到之前得到版本。
也可以使用git reset --hard HEAD^
直接回到上一个版本
git reset --hard HEAD^
直接回到上上个版本
这里有一点需要注意的是这个id可以不用全部复制,像我上面的操作就只复制了一部分。
然后我们再打开文件,就会发现文件内容回到了第一次提交的状态了。
这个时候我们再查看日志信息
发现只有第一次提交的记录了,那么我们想要回到最新的那个版本怎么办呢?不要慌,再教你一个新的命令
git reflog
这样,有可以看到最新的版本的commitid了,再执行git reset --hard cfb843a
命令回到最新的版本
再去查看文件时,就发现文件回到了第二次编辑后提交的状态了。
这就是git进行版本管理的一个大致流程了。下面对git的一些其他操作进行介绍。
5.其他操作
1.从上面我们看到的查看日志的时候信息太多,如果版本过多查看就会显得特别复杂。所以,这里引入一个新的查看日志的命令git log --pretty=oneline
效果如下
2.对提交到暂存区的文件进行撤回。在工作区修改了文件,然后git status会有一个提示,正常思维,会进行git add ,但是add之后你又后悔了怎么办呢?这里使用一个新的命令进行撤回
git checkout -- git_exercise.txt
这样就可以撤销之前的修改了。那么,如果已经进行了 add操作又该如何操作呢,对于这种情况,我们需要先使用git reset HEAD git_exercise.txt
回到提交区中的最新版本,然后再使用git checkout -- git_exercise.txt
命令。
3.当我们进行团队开发时,需要建立不同的分支,每个人都在自己的分支上去修改代码,这样就不会影响到主分支master。这里使用git checkout -b dev_wang
建立一个新的分支。
4.当我们建立多个分支后,怎么查看具体有哪些分支呢?引入了这样一个命令 git branch
带*标志的为当前所在分支。在不同的分支上进行的版本管理,只有在自己的分支上才会生效。简单来说就是,我在dev_wang的分支上对刚才的git_exercise.txt文件进行了修改,并不会影响到master分支上的这个文件。
5.git branch -d dev_wang 既然有创建,那么肯定有删除了,这个命令就是用来删除分支用的。但是使用这个命令需要注意,必须是在其他分支上
6. git checkout master
这个命令用于切换分支
7.在上面的5中说到使用 git branch -d dev_wang进行删除分支需要切换到其他分支,现在切换到master分支了,我们来尝试删除一下。
但是发现提示删除不了,这是因为在dev_wang分支上已经有提交,但是还没有进行合并。这里可以使用 git branch -D dev_wang
进行强制删除。
8. git merge dev_zhang
在7中提到合并这样一个概念,下面我们使用git merge进行合并
合并之后可以看到分支dev_wang分支上的操作记录在master上面也能看到了。同样的,我们再看一下git_exercise.txt文件
可以看到,在分支dev_wang的操作已经与master分支的文件进行了合并。
9.解决版本冲突的问题。往往在开发中我们会有多人同时开发,这样就不可避免的会遇到冲突的问题。
明显的看到第三次第四的编辑发生了冲突,而且日志里面也没有zhang的提交。这里我们可以对文件进行修改,然后在master上进行提交。
这样我们就可以看到两次的提交记录和一次手动合并冲突的记录了。
10 配置相关
git config -l
查看所有的配置信息
git config --local -l
查看仓库的配置信息
git config --system -l
查看系统的配置信息
git config --global -l
查看全局的配置信息,包括我们之前配置的user.email和user.name都在里面
11. 配置别名,通过上面的命令使用,有没有觉得有很多的命令太长了 操作起来影响效率呢? 我们可以对所有的命令配置一个别名。git config --global alias.st status
表示用st代表status。
12.打标签 当我们需要返回到以前的版本时,需要找到原来的commitid 但是id太长了记不住怎么办呢?就像我们访问百度时,都适用www.baidu.com,想来也没有人去记住他的ip 180.101.49.45吧。同样的,我们也可以给版本打上一个类似域名的标签。git tag v1.0
给最新版本打标签直接用这个命令git tag commitid
给指定版本打标签。
13 git tag
查看标签列表