首先看一张图,了解一下git的工作原理 和概念
Git 分为 工作区、暂存区和版本库概念:
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 本地仓库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库
- 远端仓库:线上或远端的git库 如github
1.克隆代码
方式一
普通克隆 要求:外层文件夹为空 可能需要自己 创建文件夹-->进入文件夹-->...然后执行命令
创建文件夹
mkdir mydirname
进入文件夹
cd mydirname/
clone
git clone git@github.com:githref.git
方式二
指定目标文件夹 ‘mygitdir’
git clone git@github.com:githref.git mygitdir
方式三(推荐)
指定分支 ‘dev’ 指定目标文件夹 ‘mygitdir’
git clone -b dev git@github.com:githref.git mygitdir
2.代码对比(只限于本地层次)
git status :用于工作区和暂存区本地代码仓库的对比
git status -s 状态解读
A:
你本地新增的文件(服务器上没有).
C:
文件的一个新拷贝.
D:
你本地删除的文件(服务器上还在).
M:
文件的内容或者mode被修改了.
R:
文件名被修改了。
T:
文件的类型被修改了。
U:
文件没有被合并(你需要完成合并才能进行提交)。
X:
未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
?:
未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理
比较工作区域和缓存区的代码差异
git diff [file]
查看上次提交缓存区的改动
git diff --cached [file]
git diff --staged [file]
显示两次提交之间的差异:
$ git diff [first-branch]...[second-branch]
查看已提交缓存的与未缓存的所有改动
git diff HEAD
3.本地代码更新
git pull
git pull origin dev
pull的时候Git会检测本地缓存区的版本号 和线上对比 如果相同证明当前版本号就是上次最新版本(类似单人开发不需要merge) 否则会merge线上代码到本地
4.本地代码提交和本地仓库提交
本地仓库
git commit -m “注释”
提交暂存区到本地仓库中,[message] 可以是一些备注信息
git commit -a
会自动把所有内容被修改的文件(不包括新创建的文件)都添加到索引中,并同时把它们提交。会弹出vim编辑器的界面,有提交信息,提示,提交时间,修改的文件
git commit --amend
git commit --amend -m <msg>
有两个作用:
追加提交,它可以在不增加一个新的commit记录的情况下将新修改的代码追加到前一次的commit中但是请注意commit-id会改变
覆盖上次提交的信息,也会生成一个新的commit-id
git commit --help查看帮助,还有许多参数有其他效果
git push
将本地仓库的代码提交到 远端仓库
(提交的是本地 commit 过后的代码 而且push的时候git会自动进行版本号核对 如果本地版本号与线上不一致 会提醒你,先进行pull统一版本所以 不会有安全问题可以放心大胆的操作)
4.代码回滚、撤销
git log查看本地仓库的提交记录(如果想看 简略一点的信息可以使用git log --pretty=oneline)
git reflog 获取提交记录id
(验证显示:这个id只有本地当前git版本控制的提交记录 如果想回滚到他人提交的指定版本建议使用 git log查找对应版本)
git reset --hard c97955d 根据commit id 回退到指定版本
(回退到指定commit id 版本 是回退到 指定commit id 提交过后的文件 如果想要提交之前的 应该向前 回退一个版本 )
5.分支