git的使用

简介

VSS : 上古时代一个工具, 微软研发, 现在基本没啥人使用, 忽略

SVN : 十年前, 非常火的软件. 
    特点: 集中式版本控制器
    缺点: 一旦服务器毁灭, 代码就消失
    
GIT : 
    特点: 分布式版本控制器
    优点: 相对于SVN, 不用担心服务器挂掉

相同点:
    服务端(存储代码)
    客户端(用来管理代码)

安装

安装:   网站下载 https://gitforwindows.org/   # 傻瓜式安装

使用

原始解决bug的方式

-快速开发一个新版本, 上线 V1, 继续开发新的功能V2, 开发了一半
-紧急 bug 出现, 两个小时解决:
 将V2的功能放到某一个地方保存,然后拷贝线上的代码, 解决bug, 继续上线

git简单使用

    git init                           # 对当前的项目初始化 git
    git add test.txt / git add .       # 将当前的目录下的(所有)文件添加到暂存区
    git status                         # 查看当前目录下面的所有文件的状态
    git commit -m '辅助信息'            # 提交代码到版本库
    git branch                         # 查看所有的分支
    git branch dev (dev / bug)         # 开启一个新的dev分支
    git checkout dev                   # 将master上的代码拷贝了一份, 给dev分支开发     
  git push origin dev # 开始远程提交代码到dev支上(将公钥放到远程服务器上)
    git clone 代码的地址                 # 将远程代码克隆下来
    git branch dev origin/dev          # 生成分支dev
    git checkout dev                   # 切到分支上
   git pull
origin dev # 讲代码拉下来
git push origin dev # 讲代码推上去
# 注意所有的提交代码,也就是push操作的时候, 如果你没有git pull, 保证本地的代码版本是最新的话, 会报错:
因此, 我们需要每次push之前, pull一下, 确保代码是最新的
-初始化管理代码
    git init                           # 对当前的项目初始化 git
    git add test.txt / git add .       # 将当前的目录下的(所有)文件添加到暂存区
    git status                         # 查看当前目录下面的所有文件的状态
    git commit -m '辅助信息'            # 提交代码到版本库
    
    # 提交之前需要先设置用户名,用来知到是谁提交提交代码
    git config --global user.name "eagon"
    git config --global user.email 'eagom@163.com'


-开发一个新的功能, 发短信的功能
    git add <files> / .            # 将当前的目录下的(所有)文件添加到暂存区
    git status                     # 查看当前文件所有文件的提交状态
    git commit -m '注释'            # 将文件提交到本地版本库    
                

-回滚至以前某一个版本:
    # 查看日志得到以前版本的id
    git reflog                     # 查看文件提交日志
    git log                        # 查看文件提交日志

    commit e7664cfd0d82a549639fdd40d68e5175ca0e1bff (HEAD -> dev, origin/dev)
    Author: lxx <11@163.com>
    Date:   Mon Jun 3 19:15:49 2019 +0800
        版本3功能完成

    commit 32115674f70d05a5e76e55d583e5b32e5892f3b8
    Author: lxx <11@163.com>
    Date:   Mon Jun 3 17:27:09 2019 +0800
        版本2功能开发完成

    # git reset  --soft / --mix / --hard   commit_id 
    git reset --hard e7664cfd0d82a549639fdd40d68e5175ca0e1bff   # 将代码从本地版本库拉回 版本3:

正在开发了一个功能(直播功能), 开发到一半, 线上出现bug

方法一:(基本不用)

# 出现bug和修改的文件不是一个文件:
    git stash             # 将之前修改的内容保存到某一个地方 (******)
    # 修改好bug好以后
    git add .         
    git commit -m 'xinxi '
    git stash pop         # 将之前 保存的修改部分, 再次拉回来
    git add .
    git commit -m 'xxxx'


# 出现bug的文件和修改的文件是一个文件:
    git stash             # 将之前修改部分代码保存到某一个地方
    # 修改bug好以后
    git add .
    git commit -m 'xinxi '

    # 出现冲突:
        <<<<<<< Updated upstream
        myage = 123
        =======
        age  = 18
        height = 180
        >>>>>>> Stashed changes

    # 出现冲突,手动解决
        age  = 18
        height = 180
    # 解决以后,重新提交        
    git add .
    git commit -m 'xxxxx'

方法二:分支开发

master             # 上线代码的时候, 使用的是主分支代码, 需要保证没有任何bug
dev                # 开发的时候, 使用的分支

git branch                         # 查看所有的分支
git branch dev (dev / bug)         # 开启一个新的dev分支
git checkout dev                   # 将master上的代码拷贝了一份, 给dev分支开发                

# 分支上开发主支上出现了bug,怎么解决?        
    git checkout master         # 切到主支上    
    git branch bug              # 开启一个新的bug分支
    # 修复bug
    vim msg.txt
    git add .
    git commit -m 'xxxxxx'
    # 修复bug以后,合并到主支上
    git checkout master           # 切到主支上
    git merge bug:                # 合并bug分支
    #合并没有冲突过,有冲突手动解决
            
    # bug修复完毕, 继续切到dev分支上进行开发    
    git checkout dev


# 注意:功能开发完毕, 不要贸然的合并代码, 问一下领导, 接下来怎么做?
# 合并分支dev的代码到master上:  (权限属于领导)
    git checkout master
    git merge dev               # 合并分支dev
    # 出现如下界面, 说明没有任何冲突出现:
    Merge branch 'dev'
    # Please enter a commit message to explain why this merge is necessary,
    # especially if it merges an updated upstream into a topic branch.    # Lines starting with '#' will be ignored, and an empty message aborts
    # the commit.
    # 如果有冲突出现, 手动解决冲突

# 起分支名要有意义:
    git branch  0603fixmsg   # 6月30日提交消息

 git远程提交到码云服务器端

远程服务器软件

-公用(自己用):
      国外(github): https://github.com/
      国内(码云): https://gitee.com/ 
-私用: gitlab (公司自己用)

git远程提交到服务器上教程

git remote add 远程仓库名 远程仓库地址                         # 给远程仓库地址取别名
# https方式远程连接
git remote add origin https://gitee.com/lupython/s5git.git     # 给远程仓库地址取别名orange (https方式)      

# git的方式远程连接(需要配公钥私钥)
git : git@gitee.com:lupython/s5git.git   
git remote add origin https://gitee.com/lupython/s5git.git     # 给远程仓库地址取别名orange (ssh方式)


# 生成公钥私钥 ssh-keygen -t rsa -C "lxx@163.com" 一直回车,不用输入密码,完成之后,可以再主目录里找到.ssh文件夹,内有id_rsa和id_rsa.pub两个文件, id_rsa是私钥,id_rsa.pub是公钥
# 把公钥放到远程服务器上

 

 

# 主支上远程提交代码
    git push origin  master     # 开始远程提交代码到主支上

# 分支上远程提交代码
    git checkout dev
    # 开发新功能...
    git add .
    git commit -m 'xxxx'
    git push origin dev         # 开始远程提交代码到dev支上  

 在不同场合开发代码

# 在新的电脑上接着开发,也需要进行公钥私钥的认证
    git remote add origin https://gitee.com/lupython/s5git.git     # 给远程git仓库地址取别名
ssh-keygen -t rsa -C "lxx@163.com" # 生成公钥私钥
   # 将公钥放到远程服务器上

   git push origin dev # 开始远程提交代码到dev支上
    git clone 代码的地址           # 将远程代码克隆下来
    git branch dev origin/dev    # 生成分支dev
    git checkout dev             # 切到分支上
    # 接着开发一个新功能
    git add .
    git commit -m 'xxxx'
    git push origin dev
        

# 在原来的电脑上开发忘记提交了,解决方案
    git pull origin dev           # 先将线上最新的代码拉到本地, 保证本地的代码是最新的
    # 接着开发新功能
    git add .
    git commit -m 'xxxx'
    git push origin dev

# 注意所有的提交代码,也就是push操作的时候, 如果你没有git pull, 保证本地的代码版本是最新的话, 会报错:
因此, 我们需要每次push之前, pull一下, 确保代码是最新的

git多人协同开发

进入到远程版本库里,

 

 

链接邀请成员的方式协同开发

直接添加多人协同开发的方式

 

# 多人开发同一个项目注意事项
  在你入职的时候, 领导会给你开一个gitlab的账号, 然后将你拉入你要开发的那个项目中。接下来, 在你的电脑上, 配置公钥私钥免密登录,
常见的问题注意事项:
  -自己的代码自己管, 千万不要手贱, 动别人的代码 
  -遇到配置文件, config.py, 将配置选项汇总给领导, 让领导改 config.py

 

posted @ 2019-06-03 20:57  星牧  阅读(211)  评论(0编辑  收藏  举报