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

    配置

      $ git config  Git相关配置

    $ git config --global user.name "match"
    $ git config --global user.email "121631835@qq.com"
    $ git config --global core.editor D:/soft/EmEditor/EmEditor.exe
    $ git config --global alias.co checkout
    

      $ git help <command>  获取帮助,也可以写成$ git <command> --help

    $ git help config
    

    基本操作

    【初始化】

      $ git init  初始化仓库

      $ git init ~/git-server --bare  将当前的仓库初始化为一个裸仓库,裸仓库的意思是没有工作目录。中央服务器并不需要工作目录,它是一个被动的接收作用,如果有工作目录的话,反而会造成错乱

    【增加】

      $ git add <file> 跟踪新文件,或者把已跟踪的文件放到暂存区

      $ git add .  批量跟踪所有工作目录下未被跟踪的文件

    【删除】

      $ git rm --cached <file> 仅从暂存区删除

      $ git rm <file> 从暂存区和工作目录删除

      $ git rm *~ 递归删除当前目录及其子目录中所有 ~ 结尾的文件

      $ git rm $(git ls-files --deleted)  删除所有被跟踪,但在工作目录被删除的文件

    【提交】  

      $ git commit  把文件提交到仓库,这种方式会启动文本编辑器以便输入本次提交的说明

      $ git commit -m 'wrote a file'  -m参数后跟提交说明的方式,在一行命令中提交更新

      $ git commit -am 'wrote a file'  把所有已经跟踪过的文件暂存起来一并提交

    【查看】

      $ git status  检查当前文件状态

      $ git diff  查看工作目录与暂存区的差异

      $ git diff --cached  查看暂存区与某次提交的差异,默认为HEAD

      $ git diff id1 id2  查看两次提交之间的差异

      $ git log  查看提交历史,git log有许多选项,下表列出了一些常用的选项及其释义

    选项         说明
    -p            按补丁格式显示每个更新之间的差异
    --word-diff       按 word diff 格式显示差异
    --stat          显示每次更新的文件修改统计信息
    --shortstat       只显示 --stat 中最后的行数修改添加移除统计
    --name-only       仅在提交信息后显示已修改的文件清单
    --name-status     显示新增、修改、删除的文件清单
    --abbrev-commit   仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
    --relative-date   使用较短的相对时间显示(比如,“2 weeks ago”)
    --graph        显示 ASCII 图形表示的分支合并历史
    --pretty        使用其他格式显示历史提交信息可用的选项包括oneline,short,full,fuller 和format(后跟指定格式)
    --oneline        `--pretty=oneline --abbrev-commit` 的简化用法

    【撤销】

      $ git commit --amend  修改最后一次提交,可以添加漏掉的文件,或者重写提交信息

      $ git reset HEAD <file>  取消暂存

      $ git checkout -- <file>  恢复文件内容

      $ git checkout HEAD -- <file>  取消暂存,并恢复文件内容

    分支操作

    【查看】

      $ git branch 列出所示分支,当前分支前面会标一个*号

      $ git branch -v 查看各分支最后一个提交对象的信息

      $ git branch -a 查看各分支情况,包括远程分支

      $ git branch --merged 查看哪些分支被并入当前分支

      $ git branch --no-merged 查看哪些分支没有被并入当前分支

      $ git cat-file -t  <git对象> 查看Git对象的类型,主要的git对象包括tree、commit、parent和blob等

      $ git cat-file -p  <git对象> 查看Git对象的内容

    【新建】

      $ git branch <branchName> 新建分支  

    【删除】

      $ git branch -d <branchName> 删除分支

      $ git branch -D <branchName> 强制删除分支,用于删除没有合并过的分支

    【切换】

      $ git checkout <branchName>  用于分支切换,将HEAD移动到目标分支,并将工作目录中的文件换成目标分支所指向的快照内容

      $ git checkout -b <branchName> 创建新分支并将HEAD移动到该目标分支

      $ git checkout -  将HEAD移动到上一分支

    【合并】

      $ git merge <branchName> 将目标分支合并到当前分支

      $ git merge --no-ff -m "commit描述" <branchName> 合并分支,强制禁用Fast forward快进模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

      $ git log --graph 查看分支合并情况

    【衍合(rebase)】

      衍合是按照每行的修改次序重演一遍修改,而合并是把最终结果合在一起

      $ git rebase master 把当前分支的改变移到master分支里重放一遍

      $ git rebase --onto master server client 取出client分支,找出client分支和server分支的共同祖先之后的变化,然后把它们在master上重演一遍

    【保存现场】

      $ git stash 保存目录的工作目录和暂存区状态,并返回到干净的工作空间

      $ git stash save "push to stash area" 保存目录的工作目录和暂存区状态,返回到干净的工作空间,并保存"push to stash area"信息

      $ git stash list 查看stash栈中保存的记录列表

      $ git stash apply stash@{0} 将stash栈中保存的stash@{0}内容重新恢复到工作目录中

      $ git stash drop stash@{0} 删除stash栈中保存的stash@{0}内容

      $ git stash pop 相当于apply和drop的合体,它将stash栈中最顶端的记录取出到工作目录中,这也意味着包含删除stash栈中对应内容的操作

    版本切换

    【回退】

      $ git reset --mixed <commit> (默认)将当前分支回退到历史某个版本,提交的内容会复制到暂存区

      $ git reset --hard <commit> 将当前分支回退到历史某个版本,提交的内容会复制到暂存区和工作目录

      $ git reset --soft <commit> 将当前分支回退到历史某个版本,工作目录和暂存区不会在任何变化

    【查看】

      $ git reflog 按照之前经过的所有的commit路径按序来排列,用来记录每一次命令

    远程操作

    【查看】

      $ git remote  查看当前配置有哪些远程仓库

      $ git remote -v  (v为--verbose的简写,中文意思是冗长的),显示远程仓库对应的克隆地址

      $ git remote show origin  查看远程仓库origin详细信息

    【关联】

      $ git remote add [shortname] [url]  添加一个新的远程仓库,可指定一个名字,以便引用,一般为origin

      $ git remote rename pb paul  将远程库的名称从pb改为paul

      $ git remote rm [shortname]  取消对该远程库的关联

    【获取】

      $ git clone <address> Git会自动将此远程仓库命名为origin,并下载其中所有的数据,建立一个指向它的master分支的指针,在本地命名为origin/master

      $ git fetch origin 同步远程服务器origin上master分支的数据到本地的master分支

      $ git fetch origin <branchName> 获取远程服务器origin上<branchName>分支的数据到本地的<branchName>分支

      $ git merge origin/master 使用fetch命令,只是将origin的数据下载到了本地,但本地的工作目录只有使用merge合并,才能更新为最新的内容

      $ git pull origin <branchName> 相当于fetch和merge命令的合体

    【跟踪远程分支】

      $ git checkout -b serverfix origin/serverfix 把远程分支serverfix的内容合并到当前分支serverfix。这会切换到新建的serverfix本地分支,其内容同远程分支origin/serverfix一致,这样就可以在里面继续开发了

      $ git checkout --track origin/serverfix 用--track选项简化$ git checkout -b serverfix origin/serverfix命令

      $ git checkout -b a1 origin/a2 把远程分支a2的内容合并到当前分支a1

    【推送】

      $ git push origin <branchName> 取出在本地的<branchName>分支,推送到远程仓库的<branchName>分支

      $ git push origin serverfix:somebranch 取出在本地的serverfix分支,推送到远程仓库的somebranch分支

    【删除】

      $ git push origin :serverfix 在服务器上删除serverfix分支

    标签管理

    【新建】

      $ git tag <tagname>  新建一个轻量级标签,默认为HEAD

      $ git tag <tagname> <commit id>  为指定的commit ID新建一个轻量级标签

      $ git tag -a <tagname> -m <标签信息>  新建一个带有标签信息的附注标签

    【签名】

      $ git tag -s <tagname> -m <标签信息>  新建一个GPG签名标签

      $ git tag -v <tagname>  验证一个GPG签名标签

    【查看】

      $ git tag 查看所有标签

      $ git show <tagname>  查看标签详细信息

    【删除】

      $ git tag -d <tagname>  删除本地标签

      $ git push origin :refs/tags/<tagname>  删除远程标签

    【推送】

      $ git push origin <tagname>  推送标签到远端仓库

      $ git push origin --tags  一次性推送全部尚未推送到远程的本地标签

    随笔转载自

    http://www.cnblogs.com/xiaohuochai/p/6672055.html

  • 相关阅读:
    diy_markdown 的 html 显示
    根据 vuex 的 this.$store.dispatch() 返回值 处理逻辑
    vue 项目配置: 局域网 ip 发布
    vue-markdown 之 markdown-it, 以及 table of content 的实现:markdown-it-toc-and-anchor
    程序员面试金典-面试题 08.05. 递归乘法
    程序员面试金典-面试题 08.04. 幂集
    程序员面试金典-面试题 08.03. 魔术索引
    程序员面试金典-面试题 08.02. 迷路的机器人
    程序员面试金典-面试题 08.01. 三步问题
    程序员面试金典-面试题 05.08. 绘制直线
  • 原文地址:https://www.cnblogs.com/miangao/p/6726520.html
Copyright © 2011-2022 走看看