【简化指令】
git add/status/log/commit 等指令都可以简化 比如 git a 就表示添加 git s 就表示查看状态等
语法:git config --global alias.a add ==》 表示给 ade 命令起一个别名叫 a 后续 commit add ==》 commit a
就可以完成一样的功能!!!
【git 分支 branch】
很多时候一个项目开发上线后,可能会遇到客户反映bug,开发者去修复bug或者增加若干新功能等场景,你不可能都把这些工作放在同一排程中,分支branch就是为了解决这种问题的,它可以把不同的业务逻辑从开发主线上分离开,不同分支上面的代码开发不会互相影响。最后把不同的分支(branch)汇聚到主干(master)上,就完成了互不干扰的高效开发。
初始化一个git 项目 ,初次提交就会产生主分支(主干 master) , 创建分支:git branch branch1这样就创建了一个分支 branch1
查看分支:git branch
切换分支: git checkout branch-name 切换到branche-name 这个分支 ,在这个分支内的任何操作,只要分支没有汇聚到主干,分支的任何操作对主干都是没有影响的!!!
创建并切换分支:git checkout -b bbs :创建bbs分支并切换过去
【合并分支branch】
当分支的业务逻辑以及测试ok后,就可以把分支的代码同步到主干中,然后删除分支。这个分支的任务就算结束!!!
同步到主干: git merge bbs: 把bbs分支同步到master【注意切换到master分支】
删除bbs分支:git branch -d bbs
【分支冲突:同一个文件被多个分支占用,修改情形】
主分支提交的那个点【假如a.html】,紧接着创建的分支时【假如创建c、d 两个分支】,没有对分支里的内容进行修改和新增,删除等操作时,分支内是包含主文件提交的文件的!!!【因为此时主干和分支的提交点是一样的】
然后c分支修改a.html ,切换到d分支修改a.html
合并:切换到master,merge合并两个分支,就会提示冲突,因为系统不知道采取那次修改作为最终合并结果。 这种方式下只能手动去修改a.html 再次提交以解决冲突
【查看已经正常合并的分支和没有合并的分支】
git branch --merged,同上面,主干和分支的提交点是一样的,使用命令查看git branch --merged,系统会认为这个新的,为操作过得分支是已经合并ok的,因为此时不需要合并!一旦新的branch有操作发生,使用git branch --merged 命令查看已经合并的就不包含这个新的分支了
git branch --no-merged:查看没有合并的分支
上面说到已经合并的分支时需要删除 【git branch -d branch-name】 ,没有合并的分支 使用 -d 参数删除会提示删除错误 没有合并的分支使用 -d参数权限不够 , -D 参数就可以删除 没有合并的分支
【实际开发工作流】
一般实际会新建一个master和develop分支
master只存放干净的业务逻辑完好的,测试稳定的代码
develop用于实际开发的分支。开发就只在develop分支上延伸分支就好了!
【stash 临时存储区】
作用:通俗的用一个场景来说明就是,假如你在写a分支中的某个功能模块业务,临时接到领导通知,说b分支某个功能模块出现了bug,需要排查,这时a分支才写了一半,没写完,直接提交不合适,放弃编辑那更蛋疼,
stash临时存储区就是解决这个尴尬的处境的。你可以把a分支写了一般的代码放到这个临时的存储区中暂存,切换到b分支去排查bug,排查完在去临时区继续a分支的编写。
命令:git stash
git stash list 查看 stash临时区
恢复:git stash apply 恢复暂存区数据,临时区报错 git stash pop 恢复数据,删除存储区git
删除 stash临时区 :git stash drop stash-name
【tag标签】
某一阶段,代码所有业务逻辑已经完成,测试稳定,就可以将这一版本的代码发布给用户使用,并且给这个版本使用 git tag v1.0 定义为第一个版本,后续有变更在继续1.1 或者2.0 这样发布!!!
查看历史版本 git tag