git版本控制之四


【简化指令】

  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

原文地址:https://www.cnblogs.com/Hijacku/p/14675372.html