基本概念
工作区:电脑上可以看到的目录、即我们放置文件的目录
暂存区【stage/index】: 一般放在.git目录下、通过 git add fileName 将工作区的文件添加到暂存区
版本库:通过git init初始化一个仓库之后、在工作区里面有一个隐藏目录.git 这就是Git的版本库。
文件状态
场景1:通过git init在本地初始化一个git仓库之后。
- 新建一个文件、此时处于
untracked状态- 通过
git add将工作区的文件添加到暂存区 此时处于staged状态- 通过
git commit将工作区的文件提交到本地仓库。
场景2:通过git clone 拉取远程仓库、此时文件已经处于tracked状态
- 修改文件内容此时处于
modified状态- 若文件内容没有修改、则处于
unmodified状态- 通过
git add将工作区的文件添加到暂存区 此时处于staged状态- 通过
git commit将工作区的文件提交到本地仓库。
文件追踪
场景1:当文件已经被修改、没有通过 git add添加到暂存区【Changes not staged for commit:】
git checkout --fileName:此时工作区的文件和版本库里面的一致即未修改的状态
场景2:当文件已经被修改且通过 git add添加到暂存区、然后再次修改了工作区的文件【Changes to be committed:【modify】】
git checkout --fileName:此时工作区的文件和暂存区里面的一致 此时文件处于【modify】状态、最新的修改会丢失。git restore --staged fileName: 文件从暂存区移除 【Changes not staged for commit:】git restore fileName: 文件恢复到未修改前的状态
文件冲突
场景1:在不同的分支上修改了同一个文件并进行了提交、并合并分支
- git status 查看状态哪些文件的内容发生了冲突。
- 修改冲突、修改之后
git add 冲突文件、然后git commit、提交到合并的分支上。
临时需求
场景:在原有开发任务还没有完成的请求下、突然有额外紧急的需求或者bug修复、此时需要保存当前的工作环境、切换到线上运行的代码分支、然后修改提交
- 保存当前的工作环境:git stash: 保存当前的工作环境
- git stash list: 查看当前暂存的状态列表
- git stash pop stash@{num}: 恢复状态列表中num个状态
- git stash clear:清空所有记录