用了5年的source tree,来了字节之后发现大家都喜欢用指令行。什么git rebase;git rebase -i;git cherry-pick;git stash;git commit --amend;
这些只在博客里看到的指令全都变成日常了,呜呜呜,真的是栓q。我不论!我不论!我不论!他人都会的我也要会。
经过我废寝忘食的学习总算整理出了这份《Git进阶指令精选》,再不好好学面试都不用去了,回家睡觉去吧。
branch办理
- git checkout -b feat/sass-v1 origin/feat/sass-v1 // 克隆远端分支feat/sass-v1到本地
- git checkout -b feat/saas-0817 // 从当时分支新建一个分支feat/saas-0817
- git merge [branchName] 将branchName兼并到当时分支
- git merge [branchName] –squash 将branchName兼并到当时分支,并将branchName上的一切提交兼并成一次提交
git commit --amend 修正上次的提交信息,push后不会增加新的commit记载,可是会修正本次的commithash(也可以理解为删掉了最新的一次commit,重新又提交了一次)
git commit --amend
// 修正commit msg
- git branch -D [branchName] 删去本地分支
git push origin -D [branchName] 删去远端分支
rebase branch
- git pull –rebase origin [branchName] = git fetch + git rebase
// 假定当时分支dev, commit 为 a b c d e
// 假定master分支, commit 为 a b f g h
git pull --rebase origin master
// 当时分支dev commit 变为 a b c d e f g h
- git rebase master
// 假定当时分支dev, commit 为 a b c d e
// 假定master分支, commit 为 a b f g h
git rebase origin/master
// 当时分支dev commit 变为 a b f g h c d e
stash储藏代码
- 场景:当你的功用还没开发完不能commit可是现在需求rebase下master,缓存区的代码该咋办?当你写了几行代码,可是现在需求切到其他分支去改bug,缓存区的代码该咋办? 用git stash就好啦
- git stash 储藏代码
- git stash pop 恢复到作业区和缓存区,会移除stashid
- git stash list 检查当时储藏区
留意:stash@{0} stash@{1} stash@{2} 是stashname
git stash apply stashname 恢复指定储藏代码到作业区和缓存区,会保留stashid
git stash save 'msg' 带备注储藏
- git stash show -p 显现最新的储藏文件详细改动
- git stash show -p stashname 显现指定的储藏文件详细改动
commit
- git commit -m “msg” –no-verify 强制提交不检查
- git push -f 强制提交代码并以本地版别代码为主掩盖远程
git push -f是不安全的,git push --force-with-lease更安全,留意--force-with-lease失利后再履行一次也会强制提交掩盖
reset回退
- git log 检查提交日志
- git reset 将一切暂存区回退到作业区
- git checkout . 丢掉作业区一切的更改
- git reset –hard [commit hash] 将从commithash(不包括此hash)之后的丢掉
- git reset –hard 将暂存区、作业区一切内容丢掉
git reset --soft [commit hash] 将从commithash(不包括此hash)之后的提交回退到暂存区
git reset --soft HEAD~4 回退最近4次提交到暂存区
cherry-pick 仿制提交
- 场景:当你在merge或许rebase的时候发现冲突太多了,想哭的时候,可以用原分支check目标分支处理,然后再cherry-pick当时分支的每个提交,这样冲突就会少很多。或许另一分支上有些代码还没有merge到master,可是你当时分支又非要用的时候,就可以cherry-pick过来一份。
git cherry-pick [commit hash] 将其他分支上已提交的commit在当时分支再提交一次,发生新的commithash
revert
- git revert [commit hash] 非merge的commit
- git revert -m [1|2] [commit hash] merge类型的commit
- 通过git show [commit hash]检查
- 第三行第一个hash为编号1,第二个hash为编号2,以哪个父hash为主线则保留哪个,删去另一个
- git revert -m 1 bd86846 则回滚bd86846的提交,且以ba25a9d master分支为主线保留,回滚掉1c7036f 地点分支提交
rebase -i
- 场景:运用merge导致git提交线杂乱无章,提交日志过多非常难看。自从运用了rebase提交线变得无比丝滑,运用rebase -i兼并每个需求的一切提交成1个,使日志变得明晰
-
git rebase -i HEAD~10
调整最近10次提交的日志、或兼并多次提交为1次,让log更好看更明晰
p运用, pick = use commit
s兼并掉, squash = use commit, but meld into previous commit
一切的提交按时间倒序排列
被s的会兼并到上一次commit,也便是当时排列的上一个里面
scope
feat: 新功用、新特性
fix: 修正 bug
perf: 更改代码,以提高功用(在不影响代码内部行为的前提下,对程序功用进行优化)
refactor: 代码重构(重构,在不影响代码内部行为、功用下的代码修正)
docs: 文档修正
style: 代码格局修正, 留意不是 css 修正(例如分号修正)
test: 测试用例新增、修正
build: 影响项目构建或依靠项修正
revert: 恢复上一次提交
ci: 持续集成相关文件修正
chore: 其他修正(不在上述类型中的修正)
release: 发布新版别
workflow: 作业流相关文件修正
以上仅为个人学习总结,欢迎评论讨论
觉得不错的记得点个赞哦~
笑死,下面这几篇你们都不看,那你们看啥?
你不得不知的大厂问题复盘方法论
规划模式这样学也太简单了吧!
你不知道的前端软技能