zoukankan      html  css  js  c++  java
  • 版本控制工具-git

    SCCS:源代码控制系统

    RCS:版本控制系统

    CVS:并发版本控制系统(联网)

    Git:分布式的版本控制系统

    https://www.liaoxuefeng.com/wiki/896043488029600

    廖雪峰 git使用

       

    Linux目录配置
    目录的四个类型为 可分享 不可分享 可变动 不可变动

    git bash中
    git status 显示当前文件夹仓库与当前文件夹之间那些文件被修改
    git diff 显示当前文件夹下的文件 与 仓库中的文件之间的具体差异
    两个指令的另外一个区别是:在修改过的文件,执行git add 指令之后,git diff不会显示任何内容、即比较的是当前文件夹文件与暂存区文件之间的区别,add后两者相同而不会显示任何内容 git status会显示文件被修改,此时字体为绿色(add前为红色)
    而git commit 是会更新仓库内容
    git用到的指令

    git本地仓库 常用指令
    pwd cd ls rm vim cat 等linux常用指令
    git add xxx.xx //添加本地代码到暂存库
    git commit -m "" //更新仓库内容 ""中写本次更新的log
    git status //查看本地文件有无变化 是否有未处理任务
    git diff //查看变化 区别见上
    git log //查看commit代码的log 显示版本号(复杂的十六进制数字)
    git reset --hard HEAD^ //回退到上一个版本
    git reset --hard HEAD^^ //回退到上上个版本
    git reset --hard *** //***为想要回退的版本号
    git reflog //查询每一次仓库操作命令 及当时对应的版本号(用来查询版本号)
    git checkout -- readme.txt //撤销对readme.txt的修改 让这个文件回到最近一次git commit或git add状态
    1.修改没有被add 则退回上一次commit状态
    2.修改被add 则退回上一次add状态
    远程仓库常用操作
    在建立本地与远程仓库链接之前 需要先对本地进行commit所有变化
    //将本地仓库内容推送到GitHub仓库建立两个仓库间的链接// @github.com:tju-wang/learngit.git
    git remote add origin git@github.com:tju-wang/learngit.git

    //取消与远程仓库已经建立的链接

    git remote remove origin
    //将本地仓库所有内容推送到远程仓库 将当前分支master推送到远程
    git pull origin master
    //拉取远程仓库master分支 并合并到本地分支
    git pull origin master --allow-unrelated-histories
    //本地与远程仓库完全无关联时(均为独立创建 非clone关系) 使用上句
    git push -u origin master //-u 参数 Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    git push origin master //把本地master分支的最新修改推送至GitHub

    GitHub创建好远程仓库 克隆远程仓库到当前
    git clone git@github.com:michaelliao/gitskills.git

    分支管理
    创建分支
    git checkout -b dev //-b 参数表示创建并切换 相当于一下两条指令

    git branch dev
    git checkout dev

    //查看当前分支 当前分支前 会有*
    git branch
    //在当前分支下 add status commit 等操作 均是对于当前分支的 即*指向的分支

    //切换回主分支
    git checkout master

    //将分支工作 合并到master上 更新master的操作
    git merge dev

    //合并(指针切换指向)后,可以删除掉dev分支
    git branch -d dev

    冲突
    在分支上修改文件 在master也修改了同一个文件 且二者都进行了commit
    在merge合并分支时,会有conflict导致合并失败
    需要人为解决冲突后 再进行merge
    git status 会显示文件冲突 查看冲突文件的内容 直接修改该文件 然后再提交
    此时 master 分支 的该文件内容都会更新
    可以使用
    git log --graph --pretty=oneline --abbrev-commit //查看处理冲突修改的文件

    分支管理策略
    通常 团队协作开发时 master为release上线版本
    dev为修改测试的beta版本
    而每个人工作时 需要先clone最新内容 然后创建属于自己的分支 再修改代码
    分支确认后 merge到dev上

    Bug分支
    处理的问题是,当前正在进行的开发未结束 又有新的任务 需要在master的基础上进行修改 -->譬如 release版本的bug修复问题
    此时通过git提供的
    git stash函数 保存当前的工作现场(在保存前需要add操作) 然后在需要修改的master目录下,创建bug修复分支
    bug修复完毕 提交到master bug修复结束,返回dev分支(之前正在工作的分支)
    git stash list //查看当前被保存的所有工作现场
    git stash pop//恢复工作现场 并删除stash保护区域 --》多个工作现场时,用 git stash apply stash@{0} 分别操作



    开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过
    git branch -D <name>强行删除。

    //多人协作
    git remote -v //查看远程库的信息

    git push origin master //将本地仓库主分支推送到远程仓库
    git push origin dev //将本地仓库 dev 分支推送到远程仓库


    因此,多人协作的工作模式通常是这样:
    首先,可以试图用
    git push origin <branch-name>推送自己的修改;如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;如果合并有冲突,则解决冲突,并在本地提交;没有冲突或者解决掉冲突后,再用
    git push origin <branch-name>推送就能成功!如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令
    git branch --set-upstream-to <branch-name> origin/<branch-name>。这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    Rebase //变基操作 将分差的提交图变为直线--》详询 Git Book

    标签管理tag
    tag是一个让人容易记住的有意义的名字,它跟某个commit绑定在一起
    创建tag
    在最近一次提交的commit上 进行打标签 切换回master分支
    git tag v1.0.0
    指定标签名字并附有文字说明 为1094adb的id打标签
    git tag -a v0.1 -m "version 0.1 released" 1094adb
    git tag //查看所有标签
    git tag -d v0.1 //打错了 删除标签v0.1
    git push origin <tagname> //可以推送一个本地标签
    git push origin --tags //可以推送全部未推送过的本地标签
    git push origin :refs/tags/<tagname> //删除一个远程标签

    使用git 参与开源项目
    1.Fork一个开源项目 此时在自己的git下也出现了同样的仓库
    2.从自己的仓库拉取代码 修复bug或添加新功能
    3.使用pull request 给官方仓库贡献代码

    配置使git自动忽略一些文件(由编译器编译过程产生的中间文件、含有重要信息的文件、不希望被上传的文件等)
    添加xxx.gitignore文件 在文件中写明文件格式
    想提交给github符合忽略规则的某文件 要用
    git add -f App.class // -f 关键字
    git check-ignore -v App.class //查看.gitignore中 哪条规则屏蔽了APP.class文件 方便修改

    配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
    git命令可以配置别名

    搭建Git服务器非常简单,通常10分钟即可完成;
    要方便管理公钥,用Gitosis;
    要像SVN那样变态地控制权限,用Gitolite。

  • 相关阅读:
    路径变量@PathVariable/请求参数@RequestParam的绑定以及@RequestBody
    JSR303后端校验详细笔记
    创建ssm项目步骤
    利用 R 绘制拟合曲线
    在 Linux 中将 Caps 根据是否为修饰键分别映射到 esc 和 Ctrl
    Master Transcription Factors and Mediator Establish Super-Enhancers at Key Cell Identity Genes
    Genomic Evidence for Complex Domestication History of the Cultivated Tomato in Latin America
    Variation Revealed by SNP Genotyping and Morphology Provides Insight into the Origin of the Tomato
    The genetic, developmental, and molecular bases of fruit size and shape variation in tomato
    微信支付jsapi
  • 原文地址:https://www.cnblogs.com/Mrwang-tju/p/12468622.html
Copyright © 2011-2022 走看看