zoukankan      html  css  js  c++  java
  • Git命令

    #git速查表

    Git内都只有三种状态:已修改(modified),已暂存(staged)和已提交(committed)。已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中;已提交表示该文件已经被安全地保存在本地数据库中了。

    对应三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。

    所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。    

    基本的 Git 工作流程如下:
    1. 在工作目录中修改某些文件。
    1. 对修改后的文件进行快照,然后保存到暂存区域。
    1. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

    我们可以从文件所处的位置来判断状态:如果是Git目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

    bash
    #设置全局的用户名及邮箱
    $ git config --global user.name waile23
    $ git config --global user.email waile23@163.com

    #创建版本库
    $ git clone <url> #克隆远程版本库
    $ git init #初始化本地版本库

    #修改和提交
    $ git status #查看状态
    $ git diff #查看变更内容
    $ git add . #将所有已修改的文件保存到暂存区,文件变为已暂存
    $ git add <file> #将指定的已修改的文件保存到暂存区,文件变为已暂存
    $ git add -u #将所有已经修改的文件保存到暂存区,文件变为已暂存
    $ git commit -m “commit message” #提交已暂存文件
    $ git commit --amend #修改最后一次提交
    $ git rm <file> #取消git对文件的版本控制.
    $ git rm --cached <file> #取消git对文件的版本控制,-–cached选项允许你把文件保留在你的工作目录中.(常用)
    $ git mv <old> <new> #重命名文件(先删除旧文件,再添加新文件)(基本不用)。

    #日志
    $ git log --oneline --stat #查看日志,可以查看文件列表 显示每次更新的修改文件的统计信息
    $ git log -p #按补丁显示每个更新间的差异

    #撤消和重做

    $ git checkout HEAD <file> #撤消指定的未提交(已修改,已暂存)文件的修改内容,即保证工作目录中的状态与已提交状态一致。
    $ git revert <commit> #回滚至指定的提交(还没弄明白)

    $ git reset HEAD <file> #取消已暂存的文件。即,撤销先前"git add"的操作。
    $ git reset --hard HEAD #把工作目录中所有未提交(已修改,已暂存)的内容清空(当然这不包括未置于版控制下的文件 untracked files)。
    $ git reset --hard <commit_id>(哈希值的前几个字符)彻底回退到某个版本,本地的源码也会变为该版本的内容。

    根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:
        git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
        git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
        git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
        
    技巧: $ git reset --hard <commit_id> 与 git push origin HEAD --force 合用,彻底回退到某个版本并提交服务器(删除指定版本,在提交错误后可以使用该方法删除错误提交)

    #分支与标签
    $ git branch #显示所有本地分支
    $ git branch <new-branch> #创建新分支  
    $ git checkout <branch/tag> #切换到指定分支或标签  
    $ git checkout -b <branch/tag> #相当于$ git branch <branch/tag>   $git checkout <branch/tag>  
    $ git branch -d <branch> #删除本地分支
    $ git tag #列出所有本地标签
    $ git tag <tagname> #基于最新提交创建标签
    $ git tag -d <tagname> #删除标签

    #合并与衍合
    $ git merge <branch> #合并指定分支到当前分支,新的版本
    $ git rebase <branch> #衍合指定分支到当前分支,形成线性

    #merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。
    #想要更好的提交树,使用rebase操作会更好一点。
    #远程操作

    $ git remote -v #查看远程版本库信息
    $ git remote show <remote> #查看指定远程版本库信息
    $ git remote add <remote> <url> #添加远程版本库
    $ git fetch <remote> #从远程库获取代码
    $ git pull <remote> <branch> #下载代码及快速合并
    $ git pull <remote> <branch>:<local-branch>  取回remote的branch分支,与本地的local-branch分支合并,注意冒号后不能有空格  
    $ git push <remote> <branch> #上传代码及快速合并
    $ git push <remote> :<branch/tag-name> #删除远程分支或标签
    $ git push --tags #上传所有标签

    #生成ssh key
    ssh-keygen -t rsa -C "邮箱"  #生成ssh key,然后根据提示连续回车即可在~/.ssh目录下得到id_rsa和id_rsa.pub两个文件,id_rsa.pub文件里存放的就是我们要使用的key。
    ssh -T git@github.com #测试是否配置成功

    ##参考
    [来源](https://gitcafe.com/GitCafe/Help/wiki/Git-%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E9%80%9F%E6%9F%A5%E8%A1%A8#wiki)

    http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

    http://www.ituring.com.cn/article/202419

    http://www.cnblogs.com/renkangke/archive/2013/05/31/conquerAndroid.html

  • 相关阅读:
    vi常用操作
    Python练习题
    Jmeter也能IP欺骗!
    mysql主从配置
    性能测试之mysql监控、优化
    Git 命令
    Chrome——F12 谷歌开发者工具详解
    Appscan
    微信群发红包抢红包设计测试用例
    MySQL基础篇(1)SQL基础
  • 原文地址:https://www.cnblogs.com/MrzhangKk/p/6132952.html
Copyright © 2011-2022 走看看