zoukankan      html  css  js  c++  java
  • git的使用

    代码分支管理规范

    1. 实际开发中,一个仓库(通常只放一个项目)主要存在两条主分支:master与develop分支。这个两个分支的生命周期是整个项目周期。就是说,自创建出来就不会删除,会随着项目的不断开发不断的往里面添加代码。master分支是创建git仓库时自动生成的,develop分支是从master分支创建的。
    2. master:这个分支最为稳定,这个分支代表项目处于可发布的状态,所以要在项目全部完成后再往master分支合并
    3. develop:作为开发的分支,平行于master分支
    4. Feature branches:这种分支和我们程序员日常开发最为密切,称作功能分支。该分支必须从develop分支创建,完成后合并回develop分支

    当需要开发新的功能时,需要从develop新建一个分支,当功能开发完成时,合并该分支到develop

    1. Release branches:这个分支用来分布新版本,做版本发布的相关操作,例如设置版本号等操作
    2. Hotfix branches:这个分支主要为修复线上特别紧急的bug准备的。必须从master分支创建,完成后合并回develop与master分支。

    综上:首先新建一个项目,项目中默认有master分支,在master分支上创建develop分支,在develop上创建Feature branches用于模块的开发,多个模块可以创建多个Feature branches。开发完成后把Feature branches分支内容合并到develop分支。当所有模块开发完成后,把develop分支内容合并到master分支,等待上线。

    具体git操作流程见下面附录

    1.上传项目

    首先进入要上传项目的文件夹,在文件夹下右键Git Bash,执行以下命令

    1. git init

    通过git init命令把这个目录变成Git可以管理的仓库

    2. git add readme.txt(readme.txt换成自己文件名称)

    用命令git add告诉Git,把文件添加到仓库,实际上就是把文件添加到暂存区

    3. git commit -m "wrote a readme file"(引号内信息是本次提交的说明)

    用命令git commit告诉Git,把文件提交到仓库,实际上就是把暂存区的所有内容提交到当前分支

    4. git remote add origin git@github.com:michaelliao/learngit.git(把michaelliao替换成你自己的Git账户名,该命令只在第一次推送新内容的时候执行)

    在本地关联远程库

    5. git push -u origin master(master为分支名称)

    把本地库的内容推送到远程

    2.新建分支

     

    1. git checkout -b dev

    首先,我们创建名称为分支,然后切换到dev分支

    2. git branch

    查看当前分支

    之后在该分支执行上传项目部分的命令,可上传代码到当前分支

    3.合并分支

     

    1. git checkout master

    切换回master分支

    2. git merge dev

    合并dev分支的内容到master分支

    3. git branch -d dev

    删除dev分支

    4.查看修改内容

    1. git status

    git status命令可以让我们时刻掌握仓库当前的状态,该命令只会告诉你那个文件被修改过,不会告诉你具体修改了什么。

    2. git diff readme.txt( readme.txt为文件名)

    该命令用来查看,具体修改了文件的哪些内容

    3. git log

    查看编辑过哪些信息

    4. git log --pretty=oneline

    如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数,这样会输出关键信息

    5.版本回退

    版本回退功能用于修改过内容,但是没有push到远程

    1. git reset --hard HEAD^

    首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    注意:版本回退后,看不到之前的修改记录

    2. git reset --hard 1a4e(1a4e为版本号)

    回退到指定版本。只有当git bash窗口没有关闭的时候,可以用版本号找回,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了

    3. git reflog

    在Git中,总是有后悔药可以吃的。当git bash 窗口关闭,Git提供了一个命令git reflog用来记录你的每一次命令,可以查看对应操作的版本号

    4. git log

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

    5. git reflog

    要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    6. git diff HEAD -- readme.txt(readme.txt为文件名)

    命令可以查看工作区和版本库里面最新版本的区别

    7. git checkout -- readme.txt

    意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    总之,就是让这个文件回到最近一次git commit或git add时的状态。

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作

  • 相关阅读:
    软件开发面试
    jQuery插件
    基于消息的软件架构
    线程池的原理及实现(转)
    java实现生产者消费者问题(转)
    并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法(转)
    JAVA CAS原理深度分析(转)
    菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)
    Android中利用Handler实现消息的分发机制(三)
    char* 和char[]的差别
  • 原文地址:https://www.cnblogs.com/r0825/p/11112318.html
Copyright © 2011-2022 走看看