git版本控制(学习Git版本控制管理工具)
git版本控制(学习Git版本控制管理工具)cd git echo "hello world" > test.md 完成上述操作后,我们可以看一下工作空间: mkdir git 然后切换到该目录,并在里面随便创建一个文件,可以执行如下命令。3.远程仓库: 远程仓库是存储在远程服务器上的仓库,主要实现多用户的协同。4.暂存区: 暂存区一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。创建工作空间其实就是创建一个本地目录。
概念Git是一个分布式的版本控制工具 其工作流程如下图:
从上图可以看出Git分为3个大的区域 分别是工作空间、本地仓库和远程仓库。另外还有一个暂存区域,也称为索引区。
1.工作空间:其实就是我们在操作系统上的工作目录。比如编辑器上的存放项目。git bash界面直接ls或ll都可以查看。如:
2.本地仓库:工作空间有一个隐藏目录.git,这个目录及其内容并隶属工作空间,而是Git的本地仓库。它是用来实现版本控制的。
3.远程仓库: 远程仓库是存储在远程服务器上的仓库,主要实现多用户的协同。
4.暂存区: 暂存区一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
创建工作空间创建工作空间其实就是创建一个本地目录。
mkdir git
然后切换到该目录,并在里面随便创建一个文件,可以执行如下命令。
cd git echo "hello world" > test.md
完成上述操作后,我们可以看一下工作空间:
通过执行git init命令就可以初始化一个本地仓库:
git init
可以看到在目录下多出一个.git的隐藏目录,Git就是通过这个目录里面的内容实现版本控制的。
git status
执行该命令后,可以看到在该工作区有一个文件,且处于未管理状态(红色部分)。
由文章开头的流程图知道,文件在“工作空间”。执行命令
git add test.md
此时就将该文件添加到了暂存区。然后我们在执行以下git status命令,可以看到如下结果。
没错,在暂存区的文件都显示绿色。
提交文件(git commit)提交文件其实就是将文件提交到本地库,也就是开始进行真正的版本管理了。具体可以通过执行如下命令 其后面的-m选项表示该次提交的注释内容。
git commit -m "这个地方写注释,好记性不如烂笔头"
结果:
git status看一下这个工作空间的状态。此时工作空间的内容已经与本地仓库完全一致。
查看提交日志(git log)git log
从上图可以看到提交的基本信息,包括提交的UUID(黄色字体)、作者、日志和描述信息等内容。
查看提交详情(git show)如果我们想看一下提交的详细内容又该怎么办呢?通过git show命令可以查看某一次提交的详细内容。以上次提交为例:
git show f0db76209570cf1c6db0d2d6c6fc9f2ab56c6066
由上图可以看到提交的详细内容,除了上一个命令所涉及的简要信息外,还包括具体修改的那个文件,哪一行,以及具体修改的内容等等。
查看工作空间修改情况(git diff)我们在本地进行修改后,有的时候想了解当前工作区的内容作了哪些修改,这个时候可以使用git diff命令进行查看。
git diff
执行该命令是查看工作空间与暂存区的差异情况。比如我们在test.md文件中增加一行,此时执行git diff命令,如图绿色的部分就是我们新加的内容。
该命令不仅仅能够实现工作区与暂存区的对比,还能实现更复杂的对比功能。
恢复到某个点(git reset)在修改代码的时候经常会出现改了很多代码导致程序无法正常运行的情况,这个时候想回退到某个版本,然后把修改的代码慢慢加进去。Git提供了git reset命令来解决代码回退的问题。比如我们对刚才添加的代码不满意,想通过Git命令回退到之前的版本。这是需要找到期望回退版本的commit id,然后执行如下命令。
git reset --hard f0db76209570cf1c6db0d2d6c6fc9f2ab56c6066
执行成功后,可以看到如下提示,并且文件的内容已经被回退到该版本。
可以看到,编辑器的新内容不见了,git checkout test.md也可以实现相同的功能。
创建分支(git branch)分支( branches ) 是指在开发主线中分离出来,做进一步开发(比如新特性)而不影响到原来主线。实际上在我们创建完本地仓库时,就已经有一个_分支_了 只不过这个分支是主分支,也叫主线(master)。如图所示,在实际应用中除了主分支外还会有其它分支,比如dev分支用于开发新特性。当完成新特性开发完成后,将代码统一合并到主分支中。
通过命令git branch -l可以看到本地分支:
可以看到只有master,*星号表示当前的分支。
执行git branch命令可以创建一个新的分支。
git branch work
创建完成后,我们通过git branch -l可以看到已经有一个新的分支:
git checkout work
切换分支以后,再提交的代码就位于新的分支。需要注意的是,如果在分支做了一些修改,但还没有提交,这时切换分支会丢失已经做得的修改,因此切换之前需要提交代码。
合并分支(git merge)如下图是work分支写内容,添加,提交的过程:
先切换到主分支,然后执行
git merge work
前面简单说完了工作空间,暂存区,本地仓库主要操作流程。聊聊线上操作。
创建一个远程仓库1.注册一个GitHub账号
2.创建一个仓库名,如图
(注释写错了,不修改了,本地是git仓库名,不是test,嘻嘻)
在GitHub看到几种方式添加链接,选“存在仓库”吧,刚才在本地已经创建有一个git
通过git remote add命令添加远程库。
git remote add origin https://github.com/xxx/test.git
再初始化(第一次需要-u):
git push -u origin master
刷新GitHub当前页面,可以看到test.md文件了!
git push origin master
我们提交代码的一般流程是这样的:编辑器 新内容 保存 之后,添加到暂存区(git add) 提交到本地仓库(git commit) 最后推送到远程仓库(git push),具体可以参考文章开头流程图。
克隆远程仓库(git clone)git clone https://github.com/xxx/test.git newtest 下载远程仓库的更新(git fetch/pull)
在多人协同的情况下,会不断的有人向远程仓库提交新内容。为了保证代码的同步,我们需要将远程代码拉到本地,git有2个命令可以将远程仓库的内容拉到本地,一个是pull,可以将远程仓库的代码拉到本地仓库,同时合并到本地工作空间(编辑器上可以看到);另一个是fetch命令,这个命令只将远程仓库的内容更新到 本地仓库(编辑器看不到)。
git fetch
执行git merge命令,该命令会将本地仓库相同分支的内容更新到工作空间。
git版本控制工具还有许多操作,特别多人协作,冲突修改,版本号tag等等不一而足。。。官网文档很详细。
That it is.