个人 git 使用笔记
git 简介
Git是分布式版本控制系统,那么它就没有*服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
git 工作原理、流程图
- workspace: 工作区
- index/stage : 暂存区
- Repository : 本地仓库
- Remote : 远程仓库
工作区
程序员平常开发改动的地方,是你当前看到的。
暂存区
即是 .git 目录下的index 文件。暂存区会记录git add 添加文件的相关信息(文件名,大小,timestamp…)。不保存文件实体,通过id指向每个文件实体。可以使用git status 查看暂存区的状态。暂存区标记了你当前工作区中,那写内容是被git 管理的。
当你完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过git add 先提交到暂存区,被git 管理。
命令详解
常用操作
- 创建仓库
git init
- 关联远程仓库
git remote add origin resp_url
- 将文件添加至暂存区
git add files
- 将工作区中已被git管理的文件添加至暂存区
git add -u
- 查看当前状态
git status
恢复至某个commit 状态
git revert commit id
diff
- 查看暂存区和工作区的变动
git diff
- 查看本地仓最新提交和工作区的变动
git diff HEAD
- 查看本地仓最新提交和暂存区的变动
git diff --cached
- 查看某次commit 和工作区的变动
git diff commit_id
- 查看任意两次commit的变动
git diff commit_id1 commit_id2
checkout
checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。
- 将工作区的文件还原成跟暂存区的一致
git checkout a.c
- 将工作区、暂存区的文件还原成跟本地仓库的最新修改一致
git checkout HEAD a.c
- 根据commit id 还原工作区 和暂存区
git checkout commit_id
还原后,工作区进入匿名分支状态:HEAD detached at commit_id
可以通过执行git checkout master
重返 master分支 - 执行分支切换
git checkout branch_name
reset
- 撤销最后一次的git add files 操作
git reset files
- 将本地仓的最近提交恢复至暂存区和工作区
git reset --hard
等同于git reset --hard HEAD
- 将本地仓的某次commit 恢复至工作区
git reset --hard commit_id
查看git 管理的文件
- 查看git 已经管理的文件
git ls-files
- 查看 还没添加的文件
git status
show
- 查看最近commit 的内容
git show
- 查看某次commit 的某个文件的提交的内容
git show commit_id fileName
删除第一次commit
git update-ref -d HEAD
remote
- 查看远程仓库链接
git remote -v
- 将本地仓库添加至远程
git remote add origin master url