zoukankan      html  css  js  c++  java
  • GIT常用命令及常见问题解决方法-协作篇

    功能驱动

    git 主要有三种工作流程,有一个共同点:都采用"功能驱动式开发"Feature-driven development,简称FDD)。

    它指的是,完成开发后,该分支就合并到主分支,然后被删除。

    Git flow

    最早诞生、并得到广泛采用的一种工作流程,就是Git flow 

    它最主要的特点有两个

    1.项目存在两个长期分支

    master 主分支

     

    develop 开发分支

     

    //前者用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的发布版,最不活跃的;后者用于日常开发,存放最新的开发版。

    2.存在三种短期分支

    功能分支(feature branch

    补丁分支(hotfix branch

    预发分支(release branch

     

    // 缺点: 部门开发中通常要不就一条master走到底,要不就是master+develop,其实基本满足需要了。多了徒增复杂度,维护起来很麻烦

    Github flow (推荐)

    Github flow Git flow的简化版,专门配合"持续发布"。它是 Github.com 使用的工作流程。

    它只有一个长期分支,就是master,因此用起来非常简单。

    Github flow 的最大优点就是简单,对于"持续发布"的产品,可以说是最合适的流程。

    假设有1github 地址 https://github.com/976500133/FETopic.git

    1.克隆仓库 Repository 地址

    git clone  https://github.com/976500133/FETopic.git

    2.首先切换到devlop分支 (devlop 也可以叫其他的, 比如deploy )

    git checkout -b devlop ( 及其重要:一定要确保 devlop 基于 master 新建的, 也就是在master 的分支上运行  )

    3.分出一个功能性分支

    git checkout -b feature-user-profile

    4.如果进行了一顿猛如虎的代码修改

    5.测试没问题,提交更改

    git add .   // feature-user-profile 

    git commit -m "add user-profile feature "

    6.拉取最新代码(非必要)

    git pull  (非必要,在push 不上去的时候 需要执行)

    7.推送分支到远程

    git push origin feature-user-profile

     

    或者

    git push --set-upstream origin feature-user-profile  //(只设置一次就行)

    git push  //以后可以直接push

    8.假设是master 为主分支,通知主分支合并feature-user-profile,

    git rebase origin/master

     

    //如果出现冲突 conflict , 解决完之后 执行

     

    git add .

    git rebase --continue //多次冲突的话需要多次执行命令 

     

    //如果放弃的话, 使用如下命令

    git rebase --abort

    9.rebase 过的代码推送到远程

    git push -f origin feature-user-profile

    10.直接master 合并 feature-user-profile 就是直线了~!!赞

    git checkout master

    git pull 

    git merge origin/feature-user-profile

    Merge节点

    Git merge 有两种合并:一种是"直进式合并"fast forward),不生成单独的合并节点;另一种是"非直进式合并"none fast-forword),会生成单独节点。

    前者不利于保持commit信息的清晰,也不利于以后的回滚,建议总是采用后者(即使用--no-ff参数)。只要发生合并,就要有一个单独的合并节点。

    部分非完全精准的总结

    git merge | 直接合并某个分支或节点。用于2个不同分支直接的代码合并

    git cherry-pick 摘取合并某次提交的信息 , 比如我某次提交就叫了一句注释,就会合并进来这句注释

    git rebase 时间基线会修改,修改时间线,让线看起来笔直的

  • 相关阅读:
    js 实现商品放大镜效果
    Angular.js数据绑定时自动转义html标签及内容
    Sublime 快捷键一览表
    这么牛的简历,你见过么?
    正向代理与反向代理
    负载均衡
    redis搭建与安装
    svn服务配置和日常维护命令
    Mysql导出导入
    linux搭建svn服务器
  • 原文地址:https://www.cnblogs.com/passkey/p/9881830.html
Copyright © 2011-2022 走看看