美文网首页
Git常用命令

Git常用命令

作者: Bean_Do | 来源:发表于2017-10-31 19:06 被阅读0次

    本篇是根据ProGit整理的常用Git命令,注释比较简单,如需详细了解Git,请阅读ProGit。

    • 状态检查
    git status  (查看git状态报告)
    git status -s  (以紧凑的格式输出git状态)
    git diff  (查看修改后还没暂存起来的内容)
    git diff --cached  (查看已暂存的将要添加到下次提交里的内容)
    git diff branchA branchB  (查看具体的不同内容,branchB多提交哪些内容)
    git difftool  (使用图形化的界面查看文件差异)
    git reflog  (查看命令历史)
    git remote  (查看已配置的远程仓库名字 -v显示对应的URL)
    git remote show <remote-name>  (查看远程仓库的具体信息)
    git branch  (查看当前所有的分支)
    git branch -v  (查看每个分支的最后一次提交)
    git branch --no-merged  (查看所有未合并到当前分支的分支 --merged是已合并的分支)
    
    • 标签管理
    git tag  (以字母顺序列出已有tag)
    git tag -a <version> -m "message"  (创建一个附注标签,推荐)
    git tag -a <version> -m "message" <commitId>  (后期打标签)
    git tag <version>  (创建一个轻量标签)
    git tag -d <version>  (删除标签)
    git push origin <tagName>  (推送标签到远程仓库,因为默认不会推送标签到远程仓库,需显示推送)
    git push origin --tags  (将所有不在远程仓库的标签全部推送上去)
    
    • 远端与本地的交互
    //使用Git管理项目
    git init (在现有目录中初始化仓库,对现有项目进行管理)
    git clone https://github.GreenBeanD/project [newName]  (克隆一个Git仓库,[]内容为可选,意为重命名仓库的名字)
    git remote add <name> <url>  (添加一个新的远程仓库并指定引用名称例如origin)
    git fetch <remote-name>  (从远程仓库获取数据,不会自动合并)
    git pull  (从远程仓库获取数据,自动合并到当前所在分支,这是在只有一个追踪分支时的省略参数指令)
    git pull <remote-name> <remoteBranch-name>:<localBranch-Name>  (将远程仓库的指定分支合并到本地的指定分支,不带冒号后的内容意味合并到当前分支)
    
    //添加远程仓库分支到本地
    //git pull默认不会将远程仓库的所有分支同步到本地,所以我们需要手动的添加一些需要的远程仓库的分支,主要过程是:
    //在本地新建一个分支并将此与远程分支关联
    git branch -r //查看远程分支,假设我们要添加远程仓库的dev分支`origin/dev`
    git branch dev origin/dev //新建分支并关联,这里最好保持本地分支和远程分支名称一致,可以避免pull的时候需要指定本地分支的名字
    git pull origin dev //将远程分支dev数据同步到本地dev分支
    
    git push <remote-name> <branch-name>  (将本地分支推到远程主分支)
    git remote rename <oldname> <newname>  (重命名远程仓库)
    git remote rm <remote-name>  (删除远程仓库)
    
    • 提交与修改
    //使用Git提交
    git add <file>  (开始跟踪文件或将已跟踪文件放入暂存区,添加当前全部文件: git add .)
    git commit -m "提交"  (提交修改)
    git commit -a -m "提交"  (跳过add步骤直接提交,只会自动添加跟踪过但未暂存的文件,未跟踪的文件不会自动跟踪)
    //移除文件
    git rm <file>  (从工作目录中删除文件,文件真的就没有了哦)
    git rm -f <file>  (对于之前修改过并已放入暂存区域的文件,必须强制删除)
    git rm --cached <file>  (从仓库中移除,但在工作目录中保留,换句话说移除跟踪,文件保留)
    //文件重命名
    git mv <oldName> <NewName> 
    //撤销操作
    git commit --amend  (重新提交,所以在此操作之前应该补全漏掉的操作)
    git reset <file>  (取消文件暂存操作)(reset操作可用于版本回退)
    git reset --hard  (取消某个提交之后的所有修改)
              --hard 表示取消某个提交之后的所有修改并且不保留被修改的部分
              --mixed 表示取消某个提交之后的所有修改但是保留被修改的部分,reset默认是mixed
    git checkout -- <file>  (撤销指定文件当前的所有修改到暂存状态或最初状态,视文件为已暂存还是未暂存决定)
    //不得不说的reset和revert
    //git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留
    //git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区 --hard是直接放弃所有修改,不会保留
    git revert commitId
    
    • 分支模型部分
    git branch <branchName>  (创建新分支)
    git checkout <branchName>  (切换到指定分支)
    git checkout -b <branchName>  (创建并切换到指定分支)
    git branch -d <branchName>  (删除指定分支 -D强制删除)
    git merge <branchName>  (将指定分支合并到当前分支)
    git rebase <branchName>  (将指定分支以rebase的方式合并到当前分支,这种方式合并后的分支是一条直线,强迫症患者的福音)
    git mergetool  (使用图形化工具来解决冲突)
    

    简单说明下rebase:


    rebase-origin.png
    rebase-end.png

    上边两图分表代表了rebase之前和之后的分支路线,可见,当前分支topic分支中的修改被依次添加到master分支新增内容之后,这样合并后的分支不会分叉。
    如果在rebase过程中发生了冲突,在命令行中会提示在哪一个文件中发生了冲突,到对应文件中修改之后执行git add 然后继续rebase --continue即可。

    • Log部分
    git log  (按提交时间列出所有更新)
    git log -p -2  (-p用来显示每次提交的内容差异 -2用来限定显示数量,数字可以任意填写,当然数量这个参数也可不指定,Git会自动分页)
    git log --stat  (查看每次提交的简略统计信息,如修改数量 --shortstat 简短的显示)
    git log --name-only  (仅在提交信息后显示已修改的文件清单)
    git log --name-status   (显示新增、修改、删除的文件清单)
    git log --graph  (带有分支合并历史的展示方式)
    git log --pretty=oneline  (将每个提交放在一行显示,除了online还有short、full、fuller等)
    git log --pretty=format:"%h - %s"  (按指定格式输出记录format后可以自定义任意的输出格式)
    `  %H  (提交对象(commit)的完整哈希字串)  %h  (提交对象的简短哈希字串)
    `  %T  (树对象(tree)的完整哈希字串)  %t  (树对象的简短哈希字串)
    `  %P  (父对象(parent)的完整哈希字串)  %p  (父对象的简短哈希字串)
    `  %an (作者(author)的名字)  %ae (作者的电子邮件地址)  
    `  %ad (作者修订日期(可以用 -date= 选项定制格式))  %ar (作者修订日期,按多久以前的方式显示)
    `  %cn (提交者(committer)的名字)  %ce (提交者的电子邮件地址)
    `  %cd (提交日期(可以用 -date= 选项定制格式))  %cr (提交日期,按多久以前的方式显示)
    `  %s  (提交说明)
    git log --left-right branch1...branch2   (只查看不同的提交,该指令会列出两个分支不同的提交,branchA的提交用<标识,branchB的提交用>标识)
         例如:commit > 9f9b4f383c521b3598c008c1a0 (HEAD -> branchA)
         commit < 3598c008c1a03598c008c1a0 (HEAD -> branchB)
    git log branchA..branchB  (查看branchB比branchA多的提交)
    git log --oneline --decorate  (查看各个分支当前所指对象 --oneline可省略,仅用来指明在一行显示)
    git log --oneline --decorate --graph --all  (查看提交历史,各个分支的指向以及项目的分支分叉情况)
    

    相关文章

      网友评论

          本文标题:Git常用命令

          本文链接:https://www.haomeiwen.com/subject/rcrmpxtx.html