基础
1. 总体关系

- Remote: 远程仓库
- Respository: 本地仓库
- index/stage: 暂存区
- workspace:工作区
2. 具体关系

HEAD
表示当前版本,每此commit都会产生一个版本,可以git log
查看到,如下:

HEAD^
表示上个版本
working diretory 工作区
码代码的地方,其中文件包含三种状态
- Untracked:未追踪,正常是新增文件
- modified: 修改
- deleted: 删除
实际工作中常用操作
提交代码
- 'git add .' 将工作区代码 提交到 stage暂存区
- 'git commit -m "注释"' stage 提交到 本地仓库,此时github上远程仓库并没有更新
- 'git pull origin 分支名' 拉取并合并代码
- 'git push origin 分支名' 提交到远程仓库
分支
- 查看本地分支
git branch
- 查看所有分支
git branch -a
- 切换分支
- 如果本地已存在分支
git checkout 分支名
- 如果本地不存在
git checkout -b 分支名 origin/分支名
- 合并分支
git merge <branch>
,其中branch是指想要合并过来的分支git push -u origin <branch>
第一步出现冲突怎么办?
- 修复冲突,通过手动修改文件
git add/rm
冲突文件git commit
然后执行大步骤的第二步。
commit
- 撤销commit
git log
获取到“想撤销commit”的上一个commit的idgit reset --soft id
: 撤销,保留修改到暂存区git reset --hard id
: 撤销,不保留修改
reset 与 revert 区别:revert本质是一次新的特殊的commit,commit内容很特殊:提交的内容是与前面普通commit文本变化的反操作,相当于重置某一次commit及之后的commit,比如前面普通commit是增加一行a,那么revert内容就是删除一行a。
- 撤销修改或重置文件
- 如果文件未提交到暂存区stage
git checkout -- <file>
- 如果文件已提交到暂存区stage,但未提交到版本库
1)撤销到工作区,保留修改:git reset HEAD <file>
2)撤销到工作区,重置:git checkout -- <file>
3)重置所有文件:git reset --hard HEAD
,语句的直意是将版本重置到当前版本,即重置当前版本。