Git版本控制下的三种工程区域&文件状态
Git版本控制下的工程区域只有三种:
-
版本库(Repository)
在工作区中有一个隐藏目录.git,这个文件夹就是Git的版本库,里面存放了Git用来管理该工程的所有版本数据,也可以叫本地仓库。
-
工作区(Working Directory)
日常工作的代码文件或者文档所在的文件夹。
-
暂存区(Stage)
一般存放在工程根目录.git/index文件中,所以我们也可以把暂存区叫做索引(index)。
Git版本控制下的文件状态只有三种:
-
已提交(committed)
该文件已经被安全地保存在本地数据库中了。
-
已修改(modified)
修改了某个文件,但还没有提交保存。
-
已暂存(staged)
把已经修改的文件放在下次提交时要保存的清单中。
Git常用命令
工程准备
git init:用于在本地目录下新建git项目仓库
git clone:用于克隆远端工程到本地磁盘
查看工作区
git diff:用于比较项目中任意两个版本(分支)的差异,也可以用来比较当前的索引和上次提交间的差异
git status:命令用于显示工作目录和暂存区的状态
文件修改后提交推送
git add:新增文件到暂存区
git rm:将指定文件彻底从当前分支的缓存区删除,因此它从当前分支的下一个提交快照中被删除
git mv:命令用于移动文件,也可以用于重命名文件
git commit:主要是将暂存区里的文件改动提交到本地的版本库
git push:将本地版本库的分支推送到远程服务器上对应的分支
查看日志
git log:查看当前分支上的提交日志
分支管理
git branch:可查看本地工程的所有git分支名称
git checkout -b:新建分支
git branch 和 git checkout -b的异同:
-
相同点:
git branch和git checkout -b都可以用于新建分支(默认基于当前分支节点创建)
-
区别点:
git branch 新建分之后并不会切换到新的分支;
git checkout -b 新建分之后会自动切换到新分支。
git branch -d:用来删除本地分支
git branch -D:也是用来删除本地分支的,但是大写表示强制删除
git checkout:命令除了创建分支,还用来切换分支,当然比较官方的叫法是“检出“
git pull:从远端服务器中获取某个分支的更新,再与本地指定的分支进行自动合并
常用的更新分支命令格式:git pull origin remote_branch:local_branch
git fetch:从远端服务器中获取某个分支的更新到本地仓库
注意:git fetch与git pull不同,git fetch在获取到更新后,并不会进行合并操作(即git merge),这样能留给用户一个操作空间,确认git fetch内容符合预期后,再决定是否手动合并节点。
分支合并
git merge:用于从指定的分支(节点)合并到当前分支的操作
git会将指定的分支与当前分支进行比较,找出二者最近的一个共同节点base,之后将指定分支在base之后分离的节点合并到当前分支上。分之合并,实际上是分支间差异提交节点的合并。
git rebase:用于合并目标分支内容到当前分支
撤销操作
git reset:通常用于撤销当前工作区中的某些git add / commit操作,可将工作区内容回退到历史提交节点
git checkout .:用于回退本地所有修改而未提交的文件内容(谨慎使用)