定义:
- 工作区(Working Area):就是你在电脑里能看到的目录。
- 暂存区(Stage或index):一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 本地仓库(Local Repository)
- 远程仓库(Remote Repository):远程仓库的默认名称是origin。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
以上4个区(工作区、暂存区、本地仓库、远程仓库),进入每一个区成功之后会产生一个状态,再加上最初始的一个状态,一共是5种状态。
- 未修改(Origin)
- 已修改(Modified)
- 已暂存(Staged)hbg
- 已提交(Committed)
- 已推送(Pushed)
常用命令:
1、默认用户设置:
git config --global user.name"用户名"
git config --global user.email"邮箱"
2、初始化:
git init //使文件夹变成本地仓库
3、克隆:
git clone 项目地址
4、查看:
git status //查看本地状态
git log //查看操作历史记录
cat 文件名.后缀 //查看文件内容
ls //查看文件目录
5、分支:
git brabch //查看分支
git brabch 分支名 //创建分支
git checkout 分支名 //切换分支
git checkout -b 分支名 //创建分支并切换(不要自己在码云再创分支名相同的分支)
git brabch -d 分支名 //删除分支
git branch -D <name> //强行删除没有被合并过的分支
6、暂存
git add 文件名.后缀 //把某个文件放入暂存区
git add . //把所有文件放入暂存区
7、提交:
git commit -m "注释" //把所有文件从暂存区提交进本地仓库
8、合并分支:
git merge 指定分支名 //合并指定分支名的已提交内容到当前分支上
git merge --no-ff -m “注释” 分支名 //禁用”Fast forward”模式
9、推送:
git push origin 分支名
git push //把所有文件从本地仓库推送进远程仓库
10、修改:
- 已修改,未暂存
git diff //检查
git checkout .
或
git reset --hard //撤销
- 已暂存,未提交
git diff --cached //检查
git reset
git checkout .
或
git reset --hard //撤销
- 已提交,未推送
git diff master origin/master //master分支时
git diff master 分支名 //检查
git reset --hard origin/master //撤销
- 已推送
git reset --hard HEAD^ //先恢复本地仓库
git push -f //(再push到远程仓库)撤销
11、删除
git rm 文件名.后缀 //删除(配合在工作目录中删除对应文件)
git rm -f 文件名.后缀 //若删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
git rm --cached 文件名.后缀 //把文件从暂存区域移除,仅是从跟踪清单中删除
git rm -r * //递归删除整个目录中的所有子目录和文件
12、重命名
git mv 原文件名.后缀 信息文件名.后缀 //对原文件重命名
13、添加、查看和删除远端项目地址
- 添加
git remote add origin 项目地址
git remote add xx(自定义命名替代) 项目地址
- 查看
git remote -v
- 删除
git remote rm origin
特殊情况:
- git status 显示上一次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。
- 当在master与旁分支内分别对文件进行不同的改动再暂存后,合并时便会产生冲突。
解决:
git status //查看状态,确定产生冲突的文件名
cat 文件名 //查看文件内容,确定产生冲突的代码(Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<>>>>f1 是指分支f1上修改的内容)
vi 文件名.后缀 //进入冲突文件内编辑代码或在目录文件内修改代码(修改完成后esc键跳转到末尾行,输入“:wq”可保存并退出)
git add 文件名
git commit -m”冲突已解决”
- 通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,一般使用带参数 –no-ff来禁用”Fast forward”模式。
- 在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。
git stash //将当前的工作现场分支dev隐藏起来
//在主分支上创建一个临时分支用来修改bug:
git branch -b bug-404
cat 文件名.后缀 //未修改前查看文件内容
cat 文件名.后缀 //修改后查看文件内容对比
git add 文件名.后缀
git commit -m “fix bug-404”
git checkout master //切换到主分支
git merge --no-ff -m “merge bug-404” bug-404 //合并
cat 文件名.后缀 //查看文件内容是否一致
git branch -d bug-404 //删除分支bug-404
git checkout dev //切换到之前的工作分支dev
git stash list //查看工作现场