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  //推送全部未推送过的本地标签
  • 相关阅读:
    Java技术路线--2循环
    Java技术路线--1基本类型与包装类
    Linux内存管理之UMA模型和NUMA模型
    最长XX子串/数组/子序列
    epoll LT 模式和 ET 模式详解
    OS篇:OS中进程的阻塞与挂起的区别
    约瑟夫环问题
    最大公约数和最小公倍数
    C++之寻找素数(素数筛)
    Linux OOM机制分析
  • 原文地址:https://www.cnblogs.com/hiluna/p/9250170.html
Copyright © 2011-2022 走看看