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