https://www.liaoxuefeng.com/wiki/896043488029600
看了教程总结,有错误请指出
1、版本控制系统
集中式版本控制系统
*PC端在中央服务器存取版本,速度慢
分布式版本控制系统
PC端可以在本地存储版本
CVS和SVN使用的是集中式版本控制
Git使用的是分布式版本控制
2、创建版本库
git init //初始化
git add "文件名" //把本地文件添加到暂存区
git commit -m "版本信息" //告诉暂存区一些标记信息
3、版本回退
每一次的commit都会有一个版本号,就像打一个印章,可以指定回退
git log //查看历史提交的日志 添加--pretty=oneline 参数可以简化
git reset --hard HEAD^n //返回上第n个版本
git reset --hard 版本号 //指定返回版本号
cat "文件名" //显示文件内容
git relog //记录每一次提交回退记录
git status //查看状态,本地仓库与暂存区的区别
git diff "文件名" //查看本地仓库与暂存区该文件的区别,可加参数查看其他的区的区别
4、管理修改
HEAD指针指向当前的分支
git diff HEAD -- readme.txt //查看工作区和版本库里面最新版本的区别
5、撤销修改
场景一:放弃仓库文件的修改
git checkout -- <file> //让本地仓库文件回到最近一次git commit或git add时的状态。
场景二:放弃暂存区文件的修改
git reset HEAD <file> //把暂存区的修改撤销掉(unstage),重新放回工作区
场景三:放弃提交的文件–版本回退
6、删除文件
git rm <file> //本地删除文件
7、连接远程仓库
场景一:本地已有仓库,远程创建好仓库,怎么将远程的仓库与本地仓库连接起来?
在gitub创建仓库的时候有提示
场景二:远程有仓库,本地没有创建,怎么将远程连接到本地?
git clone url
8、分支管理
HEAD指向当前分支
可以创建不同的分支,让HEAD指向不同的分支
创建与合并冲突
git branch dev //创建分支
git checkout dev //切换分支
git checkout -b dev //建立并切换分支
git branch //查看当前所有分支
git merge dev //合并分支,需要切换到另一个分支才能合并以开发完的dev分支
git switch -c dev //切换到dev分支,-c 表示创建分支
git branch -d dev //删除分支
解决冲突
git log --graph //查看分支合并图
Bug分支
场景:有main和dev分支,你在dev分支上干活,现在需要你解决一个bug
解决:保存dev现场 -> 跳到main分支,创建 issue-101 分支,在这个分支上做修改 -> 修改完毕合并main和issue-101分支 -> 回到dev分支,把保存的内容恢复,把在main分支提交的修改复制到dev分支
git bash //保存现场
git stash list //保存现场列表
git stash apply //回到dev,恢复现场
git stash drop //删除现场
git stash pop //上面两条的整合
git merge --no-ff -m "merged bug fix 101" issue-101 //合并issue-101保存历史分支
git cherry-pick 4c805e2 //在dev分支复制4c805e提交的修改
Feature分支
在开发过程中,在dev分支上开发出新的功能,最好创建新的分支去开发,做完之后再dev上合并
git branch -D feature1 //大写D强制删除某分支
多人协作
git remote -v //查看远程的信息
git push origin main //推送分支 origin远程分支名 main本地分支名
场景1:远程只有main的主分支,本地有main分支,又创建dev分支,想要推送给远程本地的dev分支,这时候需要给远程创建一个dev的分支
git push --set-upstream origin dev //现在是切换到dev分支,执行这条命令,为远程创建
git branch --set-upstream branch-name origin/branch-name // 本地与远程分支连接
git checkout -b dev origin/dev //另一位小伙伴创建远程的dev分支到本地
场景2:你和你的小伙伴共同在拉取远程的dev,都在dev上工作,小伙伴提交了一份时候你也想提交,会提示有冲突。
需要pull最新的dev到你的本地,在本地解决冲突之后再提交
9、标签管理
就像是取别名hhh
git tag v1.0 //默认标签是打在最新提交的commit上
git tag id //指定id打标签
git tag -a v0.1 -m "version 0.1 released" 1094adb //-a标签名 -m解释
git tag //查看所有标签
git tag -d v0.1 //删除标签
——————————————————————————————————————————————————————————————以上都是在本地打标签
git push origin v1.0 //推送指定标签
git push origin --tags //推送所有标签
//删除远程标签
git tag -d v0.9 //先删除本地标签
git push origin :refs/tags/v0.9 //在删除远程标签
10、其他
.gitignore配置忽略提交文件
每个仓库的Git配置文件都放在.git/config文件
我喵,终于完了,哈哈哈哈,回宿舍~