原理介绍
- 工作区
工作区即本地文件所在的目录。
- 版本库
版本库即本地文件中的.git文件,其中包含了stage(index)或称为缓冲区。在Git创建时,主支称为master。
- stage:当使用git add命令将文件提交后,实际是进入了缓存区
- master:当使用git commit 之后才是将缓存区的文件提交到了master或指定分支
创建版本库
- 创建并首次提交代码
# 1、选择一个合适的目录,作为未来的Git可以管理的仓库
# 2、通过以下命令,将目录变成Git可以管理的目录
git init
# 3、上传需要提交的文件
git add xxxx(你的文件)
# 4、添加提交信息,方便后续查找
git commit -m "xxxx信息说明"
- 日常代码提交
# 1、查看当前工作区状态
git status
# 2、如上述命令显示有文件修改,可使用以下命令查看修改内容
git diff xxxx(被修改文件)
# 3、确认无误,需要上传时,使用上一部分命令提交即可
- 代码回滚
# 1、查看提交历史,确定回滚到哪个版本
git log
# 如果觉得参数过多,可以使用
git log --pretty=oneline
# 2、回溯到需要的版本
git reset --head xxxx_id
# 或者使用
git reset --head HEAD^ # 回到上一版本
git reset --head HEAD^^ # 回到上上版本
# 3、通过命令实现版本的新旧切换
git reflog
常规修改
- 管理修改
# 1、查看当前工作区和版本库的区别
git diff HEAD --xxx_文件
# 2、查看工作区与satge的区别
git status
# 3、针对修改重新进行提交
git add
git commit
- 撤销修改
# 1、当工作区修改,但未提交到stage时,使用如下命令,查看工作区和stage的区别
git status
# 2、根据提示重新提交文件
git add xxxx
# 2、或撤销工作区修改,与stage保持一致,使用如下命令
git checkout --xxxx_文件
# 3、如果工作区修改,并且已经add到了stage,此时使用如下命令,把stage中的内容撤销
git reset HEAD xxxx_文件
git checkout --xxxx_文件 # 重新和stage保持一致
- 删除文件
# 1、删除工作区文件,使用命令或其他方式
rm xxxx_文件
# 2、如果想将版本库中的对应文件,使用如下
git rm xxxx_文件
git commit -m '删除xxxx'
# 3、如果误删,想从版本库恢复到工作区
git checkout -- xxxx_文件
远程仓库
- 本地推送到远程仓库
# 本地仓库连接远程
git remote add origin git@xxxxxxxxx
# 推送本地内容到远程库
git push -u origin master
# 删除与远程库的连接
git remote -v # 查看远程库信息
git remote rm xxxx
- 远程库克隆到本地
# 将远程库克隆到本地
git clone git@xxxxxxx
分支管理
- 创建合并分支
# 1、创建分支,并切换到分支
git checkout -b dev_xxxx
# 等价于
git switch -c dev
# 等价于
git branch dev
git checkout dev
# 2、查看当前分支
git branch
# 3、切换到其他分支,例如master分支
git checkout master
# 等价于
git switch master
# 4、合并分支,将分支合并到当前分支
git merge dev_xxxx
# 5、删除分支
git branch -d dev_xxx
- 解决分支冲突
# 1、合并分支
git merge dev_xxx
# 2、有冲突,利用以下命令查看具体区别
git status
# 3、根据提示信息,修改分歧内容,然后提交
git add xxxxx
git commit -m 'xxxx'
# 4、查看分支合并情况
git log --graph --pretty=online --abbrev-commit
# 5、删除无用分支
git branch -d dev_xxxx
# 6、删除没有合并的分支
git branch -D dev_xxxx
- 临时保存分支
# 1、保存当前工作区
git stash
# 2、查看当前保存的工作区有哪些
git stash list
# 3、恢复保存的工作区
git stash apply xxxx # 恢复工作区
git stash drop xxxx # 删除保存的工作区
# 等价于
git stash pop
# 4、master分支上修复的bug,计划合并到当前分支,可以用一下命令,复制到当前分支
git cherry-pick xxxxx
- 多人协作
# 1、推送分支,即将本地所有推送到远程库
git push origin master
# 2、抓取分支
# 其他人从远程库clone时,默认情况,只能看到本地的master分支
git branch
# 想在dev分支上开发,需要远程origin的dev分支创建到本地
git checkout -b dev origin/dev
# 3、如果有冲突,可用git pull把最新的提交从远程抓取下来
git pull
# 4、如有分支指定错误 可使用
git branch --set-upstream-to=origin/<branch> dev_xxx
# 5、修改差异后再提交