zoukankan      html  css  js  c++  java
  • git 常用命令

    笔记参考自以下链接:

    git官方网站 https://git-scm.com/

    git小书 https://git-scm.com/book/zh/v2

    阮一峰 git_cheat_sheet http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

    ### 经常使用的git命令

    git add ./xx文件
    git status
    git diff xx文件
    
    git commit -m '注解'
    git diff --staged/--cached
    
    git log -p
    
    git rebase xx分支
    git merge xx分支
    
    git pull origin xx远程分支
    git push origin xx远程分支
    
    git stash =>git stash pop
    多次stash =>git stash apply(应用最近的一个stash)
    git stash list => git stash apply stash@{2}

     (0)注意事项

    ( a ) 一定想着建分支(无论是改bug,还是新的feature)
    ( b ) 每次操作git要多用git status
    ( c ) git commit -m '注释' 注释一定要写的简洁明要

    (1) git 简单流程

    git add .
    git commit -m "代码描述"
    git push origin master  //远程仓库的默认名称为origin

    (2)将本地a分支上传到远程a分支上

    git add .     //在a分支上
    git commit -m "代码描述"
    git checkout master
    
    git pull origin master  //在master分支上,拉下远程master上最新代码,与本地代码合并。有冲突则解决,无冲突则继续
    git checkout a
    
    git rebase master   //在分支a上,将分支a和master上代码融合,有冲突则按照提示解决
    git push origin a

     (3)git基础知识

    1,获取git仓库 

    git init  //从现有的项目或目录导入所有文件到git中
    或
    git clone xx@github.com //从一个服务器克隆现有的git仓库

    2,添加文件到git仓库

    git add <file1> <file2> //或git add . 添加所有的文件到index/stage中
    git status  //一定要在git commit 之前查看是否还有未添加的文件
    git commit -m '代码描述'

     目前git本地仓库内仅有两个commit记录 

     

          文件的状态变化周期

     

     (1)在当前分支下,创建一个新的文件 

    echo 'this is a test'>>'test.text'  //新建一个有this is a test的内容的test.text文件
    //echo 'add one line'>'test.text   //使用>只会每次替换原来的内容;>>会新加一行内容
    cat test.text  //查看test.text的内容
    vi test.text   //打开test.text文件
    //vim 同vi 一样,有两种工作模式:命令模式,编辑模式(对文件进行增删查改)
    //(1)输入字母i或insert,进入编辑模式
    //(2)保存文件:esc退出编辑模式,进入到命令模式
             在命令模式下,ZZ:wq为保存修改并退出vim
                    :w保存修改,仍在命令模式
    //(3)放弃修改:esc退出编辑模式。进入到命令模式
             在命令模式下,:q!放弃修改并退出vi
                    :e!放弃修改,仍在命令

     (2)查看状态 git log / git status / git diff <file>

    git status //查看工作区的状态,查看哪些文件被改动

    说明工作区比较干净,所有的改动都已经添加到本地仓库内

    git diff <file> //查看该文件具体有哪些改动

    git log //查看从最近到最远的提交日志
    git log --graph --pretty=oneline --abbrev-commit //以tree型展示提交记录

         

    git log --pretty=oneline //查看提交日志的commit id号

     3,在版本之间穿梭 git reset --hard commit_id

    (1)版本回退:过去版本

    git reset --hard HEAD^ //回退到过去:上一个版本(现在只剩一个commit日志了), HEAD^5回退到上5个版本
    git reset --hard f7c7a //回退到commit id为f7c7a……的版本,不需要写全,git会自己去找

    (2)版本找回:未来版本(回退后悔药)

    git reflog //查看每一次的记录
    git reset --hard f7c7aba //去到未来:版本f7c7aba……

     

    4,撤销修改

    (1)放弃在工作区的修改 git checkout -- test.text   // git checkout -- <file>用本地仓库中的版本替换工作区的文件

    (2)放弃在暂存区的修改 git reset HEAD test.text +(1)

    (3)放弃在本地仓库的修改 git reset hard commit_id + (2) +(1)

    5,删除文件

    (1)工作区删除文件 rm test.text

    (2)在git上也要删除文件记录 git rm test.text

    万一在git上删除错误,想要撤销 git checkout -- test.text

    6,分支管理

    (1)新建分支/删除分支

    git branch test //新建一个叫test的分支,并切换到test分支上
    git checkout test
    ==
    git checkout -b test

    git branch -d test //删除一个叫test的分支
    git branch -D test //强行删除一个从未合并过的分支test

    (2)查看本地分支、远程分支

    git branch //查看本地分支
    git branch -a //查看远程分支

    当前分支会有*,且为绿色

    (3)合并某指定分支到当前分支

    git merge <分支名>

    (4)合并中出现冲突

    Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,根据git提示,找到对应位置,然后解决冲突,然后再git add <刚刚修改的文件>; git commit -m '注释'

    (5)bug分支 git stash / git stash pop 

    故事前提提要:你在test分支上开发,但是现在主分支上有bug需要修复,但是你在test分支上工作并没有完成,不想commit。

    解决方法:

    git add .
    git stash //在test分支上,将所有代码暂时先储藏起来
    git checkout master //切换到有bug的分支上,然后在该分支上新建bug解决分支
    
    git checkout -b issue-001 //然后在该issue--001分支上解决所有问题
    git add .
    git commit -m 'issue-001'
    git checkout master
    
    git merge issue-001 //将master与issue-001分支上合并
    git add. 
    git commit -m 'fix issue-001'
    git checkout test //切到当初正在工作的分支test
    git stash pop //将原来的代码取出,并销毁stash记录
    ==
    git stash apply
    git stash drop

     (6)多人协作

    git remote //查看远程仓库信息  或 git remote -v 
    git checkout -b branch-name origin/branch-name  //本地创建与远程分支对应的分支branch-name
    git branch --set-upstream branch-name origin/branch-name  //建立本地分支与远程分支的关联

    7, 标签管理

    git tag //查看所有标签,标签显示为字母顺序而不是时间顺序
    git show v1.2  //显示标签v1.2的具体信息
    
    git tag tag-name  //在需要的分支上,默认最新的commit上,一般为类似v1.2
    git tag -a v1.2  -m  "version 1.2 released"  //-a显示标签名,-m显示说明文字
    git tag tag-name commit_id //给某一个commit_id添加一个标签
    
    git tag -d v1.2  //删除标签v1.2,且标签只会存储在本地,不会自动上传到远程仓库
    git push origin :refs/tags/v1.2  //在远程仓库删除远程标签
    
    git push origin v1.2 //推送一个本地标签
    git push origin --tags  //推送全部未推送过的本地标签
  • 相关阅读:
    27 Spring Cloud Feign整合Hystrix实现容错处理
    26 Spring Cloud使用Hystrix实现容错处理
    25 Spring Cloud Hystrix缓存与合并请求
    24 Spring Cloud Hystrix资源隔离策略(线程、信号量)
    23 Spring Cloud Hystrix(熔断器)介绍及使用
    22 Spring Cloud Feign的自定义配置及使用
    21 Spring Cloud使用Feign调用服务接口
    20 Spring Cloud Ribbon配置详解
    19 Spring Cloud Ribbon自定义负载均衡策略
    18 Spring Cloud Ribbon负载均衡策略介绍
  • 原文地址:https://www.cnblogs.com/hiluna/p/9250170.html
Copyright © 2011-2022 走看看