GIT的工作流程
三种状态
文件的三种状态:已提交(committed)、已修改(modified)和已暂存(staged)
- 已修改,表示修改了文件,但还没保存到数据库中。
- 已暂存,表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
- 已提交,表示数据已经安全的保存在本地数据库中。
- 工作区(workspace):就是你在电脑里能看到的目录。
- 暂存区(staging area):一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),保存了下次将提交的文件列表信息。
- 仓库区( local repository & remote repository):工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库,用来保存项目的元数据和对象数据库的地方。
Git 工作流程
基本的 Git 工作流程如下:克隆、检出、增删改、暂存、提交、推送- 克隆:从远程仓库中克隆项目到本地(git clone; git init) * 克隆或创建的目的都是产生一个本地仓库;
- 检出:检出或切换分支(git branch; git checkout) * 切换分支只替换工作区内容,因此,多个分支不需要多个目录;切换分支后,工作区还原到分支创建时或最后更新时的样子; * 执行 git init 的时候,默认情况下 Git 会创建 一个 名为master 的分支,并且将该分支作为当前分支;
- 增删改:添加修改工作区上的文件——主要工作内容(git status; git diff; git reset; git rm; git mv; git merge) * 合并分支时会产生冲突, 需要手动去修改, 修改后,用 git add 告诉 Git 文件冲突已经解决; * 可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支;
- 暂存:将文件的快照放入暂存区域(git add)
- 提交:将暂存区域的文件快照永久性存储到 Git 仓库目录(git commit)
- 推送:将本地项目的修改推送到远程仓库中(git push) * git push 将本地分支合并到远程分支“或上传作为远程仓库的一个分支”; 如果本地分支名与远程分支名相同,可以省略命令行中的远程分支名;如果合并时发生冲突,则会push 失败,需要 pull 或 fetch先。 * git pull 将远程分支直接合并到本地分支“或将远程仓库的某一分支下载为本地的一个分支”; 如果是拉取到当前分支,可以省略命令行中的本地分支名; 可能会产生冲突,需要手动解决; * git fetch 将远程分支拉取到本地,用户检查远程分支的更新内容之后,判断是否与本地冲突等,再决定是否合并到本地分支中( git merge); * git romote 主要用于编辑存于本地的“远程仓库的基本信息”,包括为一个或多个远程仓库创建(增删改)别名、为某一远程仓库的别名“配置(增删改)”url等;origin 为 git clone 时 为所克隆的远程仓库创建的默认别名。
- 库级:git clone; git init; git romote
- 分支级:git branch; git checkout; git push; git pull; git fetch
- 文件级:git status; git diff; git reset; git rm; git mv; git merge; git add; git commit; git log; git blame