场景一:Git本地库的基本用法
初始化本地版本库
方式一:在vscode中使用打开工作区文件夹,然后用快捷键打开源码管理(⇧ ⌃ G )
方式二:使用git init
指令
查看当前workspace的状态
方式一:vscode的源码管理器中查看,绿色的U表示该文件未被版本库跟踪,即未添加到暂存区中,绿色的A表示工作区与暂存区中内容一致,红色的M表示工作区与暂存区内容不同,有修改
方式二:通过git status
指令查看
暂存更改的文件
方式一:在vscode中点击文件后的加号
方式二:终端命令
- 添加到暂存区
git add FILES # 指定文件或文件列表
git add . # 将当前目录提交到暂存区
- 将版本库同步到暂存区
git reset HEAD FILES # 指定文件或文件列表
git reset HEAD
- 将暂存区同步到工作区
git checkout -- FILES # 不要忘记“--” ,不写就把FILES当分支名了
git checkout .
将暂存区中的文件提交到仓库
方式一:在vscode中点击✔️号,并附上提交日志
方式二:终端命令
git commit -m "wrote a commit log infro"
注意每一次的提交应该是有重大的变化
git log # 查看当前HEAD之前的版本
git reflog # 查看当前HEAD之前和之后的版本
git reset —hard HEAD^ # 返回到上个版本
git reset —hard HEAD~100 # 返回到上一百个版本
git reset —hard 128个字符的commit-id
git reset —hard 简写为commit-id的头几个字符
场景二:Git远程版本库的基本用法
创建远程仓库
关联远程库
git remote add origin git@gitee.com:codefish99/git-test.git
提交到远程库
首次提交使用-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
场景三:团队项目中的分叉合作
创建分支
# 创建一个新分支,并切换到新分支上
git checkot -b <name>
git switch -c <name>
# 相当于以下两条命令
git branch dev
git switch dev
切换分支
git checkout <name>
git switch <name>
合并分支
git merge <name> # 将某个分支合并到当前分支上
git merge --no-ff <name> # 关闭快进式合并
快进式合并:
dev分支在第三次提交后,版本号为d2ccf81,此时将其快进式合并到master上,反应为直接将master指向dev,因为版本号未变
非快进式合并:
dev分支在第四次提交后,版本号为c3486cd,此时关闭快进式合并,合并到master分支,创建了新的版本号,并且此时HEAD和master都指向新版本,dev仍然指向上一次的提交中
删除分支
git branch -d <name>
场景四:Git Rebase
目的:开发者的提交要尽量干净、简单。开发者要把自己的代码修改按照功能拆分成一个个相对独立的提交,一个提交对应一个功能点,而且要在对应的 commit log message 里面描述清楚。
git rebase -i [startpoint] [endpoint]
如果不指定endpoint,则默认为当前HEAD,表示重新整理startpoint 到 endpoint 区间内的提交
此时去掉B记录,这时会提示冲突,打开冲突文件
选择要保存的更改,保存后提交到暂存区,然后执行以下命令完成rebase
git rebase --continue
这时在log中已经没有B记录了
心得体会
作为一个小白初次接触git,体会到了git版本控制功能的强大,但是还是要在实践中不断巩固对Git的运用。感谢孟宁老师的指导
参考文献
https://mp.weixin.qq.com/s/Km5KuXPETvG0wCGHrvj9Vg
https://www.liaoxuefeng.com/wiki/896043488029600/1216289527823648