- git,软件帮助使用者进行版本的管理

           阶段一git 命令:
git init 初始化 git config --global user.email "you@example.com"
git config --global user.name "Your Name" git add .
git commit -m '描述信息' git log 回滚,回滚之后在提交版本,就之后的不会保留在这里,保留在reflog里
git reset --hard asdfooiusdfsdfadf # reset 复位 git reflog 回滚后查之前的版本,在恢复 # reflog 回流
git reset --hard asdfooiusdfsdfadf git add .
git status 红色
git commit -m ''
git status 绿色
git checkout -- filename 就是不提交退出
git status 无 阶段二:
问题: 开发直播功能(一周开发完成),要紧急修复bug
线上正在运行出现bug,跟你开发的新项目没有关系,现在要修复这个bug 解决方法一:
git stash 将当前工作区的修改过(开发)的代码暂存到某个地方中,代码恢复到之前的版本(线上bug版本),修改好后还是需要提交个版本,才能恢复 线上代码
开发代码
git stash
线上代码bug恢复
git add .
git commit -m 'bug修改完成'
开发代码恢复
git stash pop
- 不产生冲突
- 产生冲突,手动去解决
error: Your local changes to the following files would be overwritten by merge: git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash list 查看“某个地方”存储的所有记录
git stash clear 清空“某个地方”
git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply 编号 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop 编号 删除指定编号的记录 解决方法二:分支
bug
master分支
dev分支 git branch 查看分支
git branch dev 创建分支
git branch -d dev 删除分支
git checkout dev 切换分支,下面也是冲突导致
error: you need to resolve your current index first git merge dev 分支合并 线上代码提交过add,commint,然后再开发的时候发现之前代码有bug
修复Bug流程:
创建开发分支,在这里开发,提交
git branch dev 创建开发分支
git checkout dev 切换到开发分支 # 写代码
--写开发代码 # 在开发分支提交版本
git add .
git commit -m 'xxx' git checkout master 切换到master你会发现它是线上版本,没有开发的版本 # 创建bug分支,来修改bug,也就是线上bug
git branch bug
git chekcout bug # 修复bug
git add .
git commit -m '紧急修复bug' =====到此,dev里面是开发新的东西,bug里面是要修复线上的bug,master里面是线上的东西 # 切换到master来合并bug,(注意,bug里面的修复也是需要提交)
git checkout master
git merge bug # bug修复后,就可以删掉这个分支
git branch -d bug # 继续在dev里面开发,然后提交,最后合并,手动解决冲突即可
git checkout dev # 最后需要在master上add,commit,提交最后版本 阶段三:三里屯和于辛庄
云端需求一个存放代码的地方:
公共:
- github,做代码托管
- 码云,做代码托管
- csdn code,做代码托管
内部搭建:
- gitlab 家里:
# 开发代码,并且提交版本
git add .
git commit -m 'xx' # github起别名,将代码推送到github上
git remote add origin https://github.com/jokerbj/firstpro.git 给后面的这个地址起了个别名origin,remote(远程意思,远程的源)
git push origin master 将当前的版本代码推送到远程的master分支上 # 切换分支
git branch dev
git push origin dev 将开发版本代码推送到远程的dev分支上 公司:新公司第一次获取代码,三种方式
# 克隆获取项目 (测试目录GongSi,拉下来之后有firstpro)
git clone https://github.com/jokerbj/firstpro.git 在当前目录就会有项目firstpro
ls -l / cd firstpro / git status / git branch / 只会克隆下来master这个分支 git branch dev 创建dev分支
git checkout dev 切换至分支
git pull origin dev 拉dev分支 # 创建文件获取代码
# 打开个文件目录,在里面创建个同项目名称的目录(GongSi,mkdir firstpro) *目录也可以不创建
git init
git remote add origin https://github.com/jokerbj/firstpro.git
git pull origin master git branch dev 创建dev分支
git checkout dev 切换至分支
git pull origin dev 拉dev分支 # 创建文件获取代码,不需要在文件目录里面创建项目目录
git init
git remote add origin https://github.com/jokerbj/firstpro.git
git fetch origin master 完毕后,ls并没有内容,拉到了工作区,也就是分支区,所以就需要合并
git merge origin/master 合并,跟网上下载下来的分支合并 git fetch origin dev 拉到了工作区,也就是分支dev区,所以就需要合并
git branch dev 创建dev分支
git checkout dev 切换至分支
git merge origin/dev 拉dev分支 # 第一次以后,就不需要上面克隆,或者添加源文件
git pull origin master
git push origin master
git fetch origin master
git merge origin/master # 本地冲突演示,更改本地s1文件(未提交),然后在github上更改s1文件
需要在dev分支操作
git pull origin dev # Please add your changes or stash them before you merge.
git status 查看状态,还在工作区,需要 git add .
git pull origin dev # Please commit your changes or stash them before you merge.
git status 查看状态,拿过来等待提交,需要 commit
git commit -m 'xxx' 提示冲突
'''
Auto-merging s1.py
CONFLICT (content): Merge conflict in s1.py
Automatic merge failed; fix conflicts and then commit the result
'''
# 手动解决冲突,线上的内容应该会在本地内容的下面
将>>> head 删除,然后提交,将会覆盖,在拉下来 # 真实场景
家里。公司
分支dev 里面都是一样内容 家里 在s1文件里面写点东西
vi s1.py
git add .
git commit -m 'xxx'
git push origin dev 公司 下拉代码
git pull origin dev ** 到公司了,写了代码,只做了add,commit但是忘记了push ? 家里 到了家里,发现在公司写的代码忘记了push?
没有关系,继续开发新的代码,然后add,commit,push。 公司 到了公司,不能push,因为公司代码晚,家里代码新,git不允许这么做,所以是pull拉家里代码。
解决冲突,继续开发代码,然后add, commit, push 家里 到了家里,pull公司代码 # 协同开发 阶段三:
master dev
review 开发老大没问题,代码合并到dev
bb 开发者 代码合并到review
sk 开发者 代码合并到review
wh 开发者 代码合并到review 协同开发:
- 项目协作者,github 找到项目firstpro -- settings -- Collaborators
- 组织协同,github + new organization -- people邀请成员 -- settings设置权限 PS: 创建组织 真实案例协同开发:
----
第一个人
git pull,最后在创建自己的开发目录bb
git clone https://github.com/jokerbj/firstpro
cd firstpro
git branch dev
git checkout dev
git pull origin dev 下拉github上dev代码 git branch review 创建reivew分支,用于提交测试
add,commit
git push origin review 将reivew分支提交上去 git checkout master 切到master分支,将代码同步到到自己开发分支目录
git branch bb 创建自己开发分支,保证代码与第二个人一样,也用review
git checkout bb 切换到自己分支 ----
第二个人
git clone https://github.com/jokerbj/firstpro
cd firstpro git branch dev 线上开发目录
git pull origin dev 拉线上dev代码
git branch review 老大审计目录
git pull origin review 拉线上老大目录 git branch sk 自己开发目录
git checkout sk 切换到自己分支
git pull origin review 将线上review审计的代码下拉到自己开发分支 ----
各自在自己的分支目录创建开发文件
git add .
git commit -m '第一次提交'
git push origin bb/sk 各自在自己的分支目录开发文件中写入文件
git add .
git commit -m '小功能开发完毕'
git push origin bb/sk ----
合并,切到review分支,拉下review代码,看看是不是有新的,没有,将自己的review与自己的开发目录 第一个人
git checkout review
git pull origin review
git merge bb git status 是否干净
git push origin review 提交第一个的代码 第二个人同第一个人
git checkout review
git pull origin review
git merge sk git status 是否干净
git push origin review 提交第一个的代码 第一个人注意,还要再拉一次才能保持最新 给老大看分支,老大说可以,就要放到dev分支,再没问题放到线上master,或者放到预发布分支 面试题:公司代码review怎么做?谁来做?review分支,开发小功能合并,给小组长看,小组长也开发代码,开发核心代码.(固定时间,一起来做review)
面试题:怎么做协程开发的?每个人都有自己分支,小功能开发固定时间提交到review,在提交到dev,最后master 阶段四:
fork,人家代码,自己fork就是将代码在自己项目里面拷贝了一份,你可以贡献代码。 面试题: 如何给别人的源码贡献代码,就是通过fork一下拷贝到自己这里,new pull request,create pull request,对面接受就是贡献(合并) 注意事项:
add . 这里面有隐藏文件(.pyc),pycharm notepadd++ 客户端不一样,不要把所有的代码提交,尤其是个人文件,自己ide文件,显得不专业
手动 不要加文件
自动
- .gitignore 文件
在当前git init下,直接vim .gitignore,里面写入不想提交的文件名字,.idea/ *.py .py[cod] 支持正则 - 认证,在之前的github不支持记住密码的,所以用的是用户凭证,在项目克隆那里可以看到
SSH:(ssh协议)
在git init目录下
ssh-keygen 三下回车,cd ~ 进入登陆用的家目录,cd .ssh/,cat id_rsa.pub ,复制到github上面,settings ssh andd gpg keys,new ssh key,复制过来 起个名字
git remote add origin git@github.com:ugfly1210/git_projects.git Https:(http协议)
https://github.com/ugfly1210/git_projects.git rebase
忘记push解决方法
之前解决方式,忘记push-----,用于查图的时候分支太多不好看
首先 在家里
git init
git remote add origin https://github.com/jokerbj/firstpro
touch a.py -- vim a.py
git add .
git commit -m '在家里'
git push origin master 然后 在公司
git clone https://github.com/jokerbj/firstpro
进入firstpro目录
vi a.py
git add .
git commit -m '在公司开发碰到美女'
*** 忘记上传 然后 在家里
vim a.py
git add .
git commit -m '凌晨三点开发'
git push origin master 然后 在公司
git fetch origin master
git merge origin/master
这样拉代码的时候就会产生冲突,手动解决冲突
git add .
git commit -m 'xxx'
git push origin master rebase 解决方法,其实就是在合并的时候不用merge,而是使用rebash
合并解决方法,也是忘记push-----,查图的时候分支一条线
git fetch origin master
git rebase origin/master
冲突,手动解决冲突
vim a.py
git status 查看一下状态,冲突解决完了,让咱们add一下
git add . 表示解决完冲突
git status 让我执行,git rebase --continue
git rebash --continue 这个表示合并完了,如果不执行这个,就会返回工作区
git push origin master
git status 合并的三种方法
git pull origin master (公司常用) git fetch origin master
git merge origin/master git fetch origin master
git rebase origin/master git add .
git rebase --continue

git版本控制-详细操作的更多相关文章

  1. git版本控制工具(二)----本地版本库的常用操作

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. Git详细操作

    Git详细操作 一.本地配置 1公钥钥配置 1.参考帮助文档:https://gitee.com/help/ 仓库管理 =公钥管理 =生成/添加SSH公钥 ssh-keygen -t rsa -C & ...

  3. git超详细教程

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Gi ...

  4. Git版本控制教程

    Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...

  5. Git 版本控制工具(学习笔记)

    GIT(分布式) 一.Git 初始版本控制工具 1. 安装Git Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core  之后回车输入密码,即可完 ...

  6. Git版本控制与工作流详解

    这篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: 专为设计师而写的GitHub快速入门教程 git – 简明指 ...

  7. Git版本控制:Git查阅、撤销文件修改和撤销文件追踪

    http://blog.csdn.net/pipisorry/article/details/47867097 查看文件的修改历史 git log --pretty=oneline 文件名 # 显示修 ...

  8. 七 Git版本控制

    把环境准备 主机名 node1  ip地址10.0.0.11              node2             10.0.0.12              node3           ...

  9. 使用Git版本控制工具管理GitHub

      使用Git版本控制工具管理GitHu Git是一个分步式的管理系统:只要上传操作得当,所有的都可以相当于是中央服务器,成员代码共享,A写的代码B也有,一般把一个人当做主机,其他人通过该主机拼装代码 ...

随机推荐

  1. netty的异常分析 IllegalReferenceCountException refCnt: 0

    netty的异常 IllegalReferenceCountException refCnt: 0 这是因为Netty有引用计数器的原因,自从Netty 4开始,对象的生命周期由它们的引用计数(ref ...

  2. mybatis 批量修改接口的几种实现方式

    -----------------我也是有上线的--------------我也是有上线的------------我也是有上线的---------------我也是有上线的-------------- ...

  3. AWR报告分析解读

    http://blog.csdn.net/weiwangsisoftstone/article/details/7614430 1.AWR报告头信息 DB Name :数据库名字 DBid: 数据库i ...

  4. sqlserver数据库脱机时发生异常:由于无法在数据库 'SMS' 上放置锁,ALTER DATABASE 失败。请稍后再试。 ALTER DATABASE 语句失败。 (.Net SqlClient Data Provider)

    sqlserver数据库脱机时发生异常,如下: =================================== 设置脱机 对于 数据库“SMS”失败.  (Microsoft.SqlServe ...

  5. switch遇到0的问题

    你是否经常有switch来代替if else?是否因为使用了switch,提高代码的执行效率而庆幸?好吧,你和我一样,但也许你没有遇到下面的问题. 这个小程序,会输出什么呢?会是'00'么?   结果 ...

  6. windows获取屏幕显示比例 读取注册表法

    static int GetDesktopScale() { ; HINSTANCE hUser32 = LoadLibrary(L"user32.dll"); if (hUser ...

  7. Django初体验——搭建简易blog

    前几天在网上看到了篇采用Django搭建简易博客的视频,好奇心驱使也就点进去学了下,毕竟自己对于Django是无比敬畏的,并不是很了解,来次初体验. 本文的操作环境:ubuntu.python2.7. ...

  8. 剑指Offer面试题:11.调整数组顺序使奇数位于偶数前面

    一 题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 二 解题思路 如果不考虑时间复杂度 ...

  9. 如何理解Robot Framework

    不知不觉公众号已经有很多人关注了,小编先谢谢大家的支持-今天我们就来谈一谈我对RF的理解,因为前段时间换了工作,目前RF知识基本用不上了.其实我在上一份工作中大部分都是在反复的使用前面讲过的知识——其 ...

  10. C#网络编程(订立协议和发送文件) - Part.4

    文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时, ...