前言
相信很多没有接触过git的小伙伴对这个词并不陌生,但是一直没用过且没机会用就始终不知道是干嘛的,其实git特别简单,只要搞懂了git四个区域之间是如何协作的那么命令啥的也不难记了
git的四个工作区域是如何的?
在git本地上是有三个工作区域的,分别是
本地仓库
暂存区
工作区
当然在gitte或者github有远程仓库,加起来就是四个区域了
而文件在这四个区域是这样进行移动的
Workspace : 工作区,就是你平时存放项目代码的地方
Index / Stage : 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository: 仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新方入仓库的版本
Remote : 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
而实际上在平时我们在写项目时最常用的就是git add、git commit、git push以及git clone了
常用场景
部署项目
一般来讲当我们在本地项目完成了想部署在服务器上,那么就使用git将项目push到远程仓库中,再在云服务器用git把项目pull下来就行了。
在本地中的操作步骤就是
- git init初始化一个git仓库,
- 设置你的全局个人信息
git config --global user.email '***'
git config --global user.name'***'
- 然后
git add .
把你的工作台的项目放到暂存器 git commit -m '名字'
把暂存区的文件放到本地仓库- 在码云中新建仓库,按照他给的步骤连接本地仓库
git push
就可以把本地项目放到远程仓库了- 然后在云服务器
git clone '远程仓库的url'
拉下来了
项目的版本管理
在很多时候我们可能会对项目进行版本迭代,使用git就可以把每个版本都放在仓库里,如果不满意当前版本就可以回滚到之前的版本,如果不使用git就会很麻烦。而在编辑器里一般都支持git使用,就可以直接在编辑器里进行图形化操作
.gitignore
很多时候有些文件我们是不愿意被进行移动的,这时候就可以使用.gitignore文件对文件进行一个“锁住”的操作
*.txt #忽略所有.txt结尾的文件
! 1ib.txt #但1ib.txt除外
/temp #仅忽略项目根目录下的TODo文件,不包括其它目录temp
bui1d/ #忽略bui1d/目录下的所有文件
doc/* .txt #会忽略doc/notes.txt但不包括doc/server/arch.txt
文件四种状态
理解了文件的这几种状态又可以对文件的移动操作加深理解
Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为staged
Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致.这种类型的文件有两种去处,如果它被修改,而变为Modified.如果使用git
rm移出版本库,则成为untracked文件
Modified:文件已修改,仅仅是修改,并没有进行其他的操作.这个文件也有两个去处,通过git
add可进入暂存staged状态,使用git checkout则丢弃修改过,返回到_unmodify状态,这个git
checkout即从库中取出文件,覆盖当前修改!
Staged:暂存状态.执行 git
commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为unmodify状态.执行git reset HEAD
filename取消暂存,文件状态为Modified