git 分支操作命令大全

创建远程仓库

以下操作为演示在Github网站上创建远程仓库

  • 1.登陆注册Github

  • 2.创建仓库入口

  • 3.编辑仓库信息

  • 4.仓库创建完成

  • 5.查看仓库地址

配置SSH

  • 如果某台电脑需要与Github上的仓库交互,那么就要把这台电脑的SSH公钥添加到这个Github账户上

  • 1.配置SSH公钥入口

  • 2.修改电脑git配置

    • 配置Github注册邮箱和用户名

        vi .gitconfig
      
        [user]
            email = [email protected]
            name = zhangxiaochuZXC
      

  • 3.生成SSH公钥

      ssh-keygen -t rsa -C "[email protected]"
    

  • 4.配置SSH公钥

  • 补充:删除旧的秘钥

    • 删除~/.ssh目录,这里存储了旧的密钥

      rm -r .ssh

    • 克隆项目

      • 准备经理的文件 Desktop/manager/
      • 准备张三的文件 Desktop/zhangsan/

      经理的工作

      • 立项:克隆远程仓库+配置身份信息+创建项目+推送项目到远程仓库

      • 1.克隆远程仓库的命令

          cd Desktop/manager/
          git clone [email protected]:zhangxiaochuZXC/test007.git
        
      • 2.解决可能出现的密钥错误

        • 提示错误信息如下:
          • sign_and_send_pubkey: signing failed: agent refused operation
        • 错误原因:在ssh账户中没有加入新生成的密钥
        • 解决:将密码加入ssh账户
        • 逐条运行如下命令

            eval "$(ssh-agent -s)"
            ssh-add
          

      • 3.克隆远程仓库到本地

      • 4.克隆成功后查看经理的文件

      • 5.配置经理身份信息

          cd Desktop/manager/test007/
          git config user.name '经理'
          git config user.email '[email protected]'
        

      • 6.创建项目

      • 7.推送项目到远程仓库

          # 工作区添加到暂存区
          git add .
          # 暂存区提交到仓库区
          git commit -m '立项'
          # 推送到远程仓库
          git push
        

      张三的工作

      • 获取项目:克隆项目到本地、配置身份信息

      • 1.克隆项目到本地

          cd Desktop/zhangsan/
          git clone [email protected]:zhangxiaochuZXC/test007.git
        

      • 2.克隆成功后查看张三的文件

      • 3.配置张三身份信息

          cd Desktop/zhangsan/test007/
          git config user.name '张三'
          git config user.email '[email protected]'
        

      张三身份信息配置成功后即可跟经理协同开发同一个项目

      分支

      • 作用:
        • 研究新的功能或者攻关难题
        • 解决线上bug
      • 特点:
        • 分支使每个员工开发期的代码互不干扰
        • 项目开发中公用分支包括master、dev
        • 分支master是默认分支,用于发布,当需要发布时将dev分支合并到master分支
        • 分支dev是用于开发的分支,开发完阶段性的代码后,需要合并到master分支
        • 项目中每个项目成员都可以单独建立分支用于的代码开发,实现不交叉

      模拟经理分支操作

      • 对比:操作分支前的代码

      • 1.进入到经理的本地仓库test007

         cd Desktop/manager/test007/
        
      • 2.查看当前分支

          git branch
        
        • 没有创建其他分支时,只有master分支

      • 3.经理创建并切换到dev分支

         git checkout -b dev
        

      • 4.经理在dev分支编辑代码

      • 5.管理dev分支源代码:addcommitpush

      • 6.dev分支合并到master分支

        • 提示:只有当dev分支合并到master分支成功,张三才能获取到num4
        • 6.1 先切换到master分支

            git checkout master
          

        • 6.2 dev分支合并到master分支

            git merge dev
          

        • 6.3 经理推送合并分支操作到远程仓库

          • 合并分支默认在本地完成,合并后直接推送即可

            git push
            

      • 7.张三同步经理合并后的num4

        • 只有当张三同步代码成功,分支合并才算成功

            cd Desktop/zhangsan/test007/
            git pull
          

      BUG分支:重中之重

      • 有时当我们正在开发新功能时,出现了线上BUG。此时,必须暂停正在开发的功能,新建临时分支先解决线上BUG。

      以下代码为模拟张三解决线上BUG:v1.0版本出错

      • 1.张三切换到dev分支

      • 2.张三在dev分支上编辑代码

      • 3.线上v1.0版本突然发现bug

        • 张三暂停手中的工作,解决线上v1.0版本bug
        • 记录未提交的修改:保留现场

            git stash
          

      • 4.张三解决线上v1.0版本bug

        • 4.1 张三切换到master分支

        • 4.2 新建fixbug分支,并下载v1.0版本的代码到fixbug分支

            git checkout -b fixbug v1.0
          

        • 4.3 修复线上v1.0版本bug

        • 4.4 管理fixbug分支代码

          • addcommitpush
        • 4.5 合并fixbug分支到master分支,并推送到远程仓库

            # 切换到master分支
            git checkout master
            # 合并fixbug分支到master分支
            git merge fixbug
            # 推送合并到远程仓库
            git push
          

        • 4.6 经理打标签v1.1,发布v1.1版本

            git tag -a v1.1 -m 'version 1.1'
            git push origin v1.1
          
        • 4.7 张三恢复dev分支未提交的修改

          • 恢复到发现线上bug的那个节点
          • v2.0开发中...

            git stash list
            git stash pop
            

        • 4.8 张三将fixbug分支合并到dev分支

          • 当把未提交的修改提交后,即可将fixbug合并到dev
          • 保证张三现在开发的版本不会有v1.0版本遗留问题

              # 切换到dev分支
              git checkout dev
              # 合并fixbug分支到dev分支
              git merge fixbug
              # 推送
              git push
            

        • 4.9 张三将dev分支合并到master分支,并推送

        • 到目前为止:v1.0版本bug解决了,v2.0也开发完成了

      合并分支禁用Fast Forward模式

      • 在合并分支时,默认采用Fast Forward模式
      • 该模式没有分支合并的版本记录
      • 如果需要在合并分支时记录版本需要禁用Fast Forward模式

          git merge --no-ff -m '合并描述' 分支名

你可能感兴趣的:(github)