Git 现在作为工作中主流的版本控制系统,同时它也是个内容管理系统(CMS),工作管理系统等的。所以在这里对于Git的介绍我就不赘述过多了。所以我在工作中常用的Git命令在这里我会分享给大家。
1.“git init”
创建git的暂存区和版本库
创建.git的隐藏文件夹
应用场景:一般会用于初始化搭建项目的时候会用到。
2.“配置git的用户信息”
全局:一个设置只需要配置一次,重复配置会覆盖
`git config --global user.name "用户名"
`git config --global user.email "邮箱"`
项目(局部):一个项目只需要配置一次,重复配置会覆盖
`git config user.name "用户名"`
`git config user.email "邮箱"`
缺少局部,会自动找全局,全局没有,上传版本信息时,会报错
3.“git add .”
添加到暂存区
4.“git commit -m '提交的commit说明' ”
上传到版本库
注意:这里建议commit提交说明中添加一些规范。
例:
feat:新功能(feature) 常用
fix:修补bug 常用
peaf:优化 常用
focs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
Test:增加测试
Chore:构建过程或辅助工具的变动
5.“git push origin master”
将本地仓库推送到远程仓库
6.“git log”
查看版本日志
7.“git reflog”
查看操作日志
8.“git reset --hard <commit id>”
回退版本(回退到第几次修改时文件的修改时的状态)
9.“git clone <远程仓库地址>”
将远程仓库克隆到本地
10.“git branch”
创建分支:git branch dev
查看当前所在分支:git branch
查看本地和远程的分支:git branch -a
remote:代表远程
(注意:删除分支时首先不要再将要删除的分支上输入命令)
删除本地分支:git branch -d dev
删除远程仓库分支:git push origin --delete dev
上传分支:git push -u origin dev
11.“git pull”
拉去当前分支上最新的代码
12.“git checkout”
切换分支
git checkout -b dev 创建并切换到dev分支上
12.“git merge”
git merge是一个重点,作用是合并该分支上的commit
场景:比如dev环境开发完了,需要合并到master分支。
git add . //上传到暂存区
git commit -m 'feat:...' //上传到版本库
git pull //拉去最新的代码
git push origin dev //推送到dev 分支
git checkout master //切换到master 分支
git pull //拉去 master 分支上的最新代码
git merge dev //合并dev 分支上代码
但是再git merge 需注意一下几点
1.git merge通常情况下合并的log日志,不产生log日志的原因是因为当前分支没有最新的提交代码。
2.所以会有常考的面试题,就会说git merge 和git rebase 的区别在哪里,答案就是一个会产生log日志,一个则不会。
3.所以对于这个log日志,工作流程比较严谨的公司,都会采用git merge的方法,去产生log日志,便于出问题之后回滚版本。但是没有最新的提交产生log日志怎么办呢。所以会去使用
git merge --no-ff dev
当当前分支没有最新提交的时候,git merge 会快速合并不产生log日志,而 no-ff的作用就是不让他进行快速合并。
12.“git cherry-pick”
这个命令相对于来讲的话,只有业务比较复杂的时候会用到,鄙人有幸(emm....)
场景:开发分支dev,子分支a,b ,c,三个分支都是从dev上创建出来的,a,b,c三个分支呢对应三种不同的需求开发,也有可能呢,这三个分支会有相同的需求都会合并到这三个分支上,所以这时候呢,我们就需要在dev上开发,但是我们开发完三个需求之后,对应的合并到a,b,c三个不同的分支上去,我们不可能使用 git merge,这样的话,就会把所有的代码都合并上去了,显然这不是我们想要的,我们就需要用到git cherry-pick的命令。
他是合并相对的commit 我们push到仓库之后会有commitId,我们根据这个commitId去相对应的合并
git cherry-pick commitId
git cherry-pick 教程 - 阮一峰的网络日志 (ruanyifeng.com)
如果我说的不够详细的话,具体可以看阮一峰老师的。