美文网首页
常用git命令

常用git命令

作者: 一颗老鼠屎 | 来源:发表于2019-09-26 21:18 被阅读0次

    参考

    git简介 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    通用命令

    help & vim

    git [命令] --help

    git status
    git cat xxx
    git vim xxx
    git tail xxx

    diff

    git diff xxx

    具体想要看是哪里做了修改,用此命令,比较的是工作区和暂存区的不同

    git add xxx
    git diff xxx

    add以后,此处应该不存在不同

    git diff HEAD -- xxx

    比较工作区和版本库的不同 这里的HEAD指的是当前分支版本最近的一次commit
    git commint -m "add a file(comment)"
    只会提交暂存区中的"变化",不管工作区中的”修改“

    rm & clean

    git rm xxx

    和git add xxx一样的效果,都是将文件的变化从工作区保存到暂存区,不过git rm 的使用一般是在,文件(rm xxx)被删除后。
    换一种理解,rm xxx 删除的是工作区的文件, git rm xxx 删除的是暂存区的文件,然后再git commit -m ""

    git clean -f

    删除 untracked files

    git clean -fd

    连 untracked 的目录也一起删掉

    git clean -xfd

    连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)

    在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删

    git clean -nxfd
    git clean -nf
    git clean -nfd

    初次拉代码

    ssh

    ssh-keygen -t rsa -C "youremail@example.com"

    生成秘钥

    config

    git config user.name
    git config user.email

    查看用户名和邮箱地址

    git config --global user.name "username"
    git config --global user.email "email"

    设置用户名和邮箱地址

    git config --list

    查看Git所有配置

    git config --global --unset user.name

    删除配置中的用户名

    或者:进入.git中,gedit编辑config文件,修改指定项即可

    clone

    git clone git@github.com:13575294417/haha.git

    克隆项目到本地

    remote

    git remote -v

    查看远程地址能否 push 和fetch

    git remote add origin git@github.com:13575294417/haha.git

    添加一个远程地址,名称为origin

    git remote remove <name>

    删除某个远程地址

    回退重置相关命令

    log

    git log

    查看初始化到"当前"时间节点的"提交"状态

    git log --pretty=oneline

    简化的日志信息,只显示ID,注释

    git log --graph --pretty=oneline --abbrev-commit

    图形化界面

    git reflog

    查看初始化后所有时间节点的重置、提交、切换分支、合并分支状态

    reset

    git reset --hard HEAD^

    返回上一个版本,同时重置工作区和暂存区

    git reset --hard HEAD^^

    返回上上个版本,同时重置工作区和暂存区

    git reset --hard HEAD~100

    返回前100个版本,同时重置工作区和暂存区

    git reset --hard 版本号

    --hard 工作区,暂存区,版本库,保持一致,一起回退
    --soft 工作区,暂存区不变化,只是回退版本库
    --mixed reset的默认参数,工作区不变化 ,暂存区和版本一起回退

    git reset HEAD xxx

    将暂存区的xxx文件回退到最新版本,不影响工作区的修改
    个人理解:一般是针对文件

    git reset HEAD .

    将暂存区回退到最新版本,不影响工作区的修改
    个人理解:一般是针对暂存区

    checkout

    git checkout -- xxx

    将工作区中xxx文件的状态回置为暂存区的状态,--必须不能少
    个人理解:一般是针对文件

    git checkout -- .

    将工作区的状态回置为暂存区的状态,--必须不能少
    个人理解:一般是针对暂存区

    分支相关

    branch & checkout

    分支是指针,指向提交,而HEAD指向分支

    git branch

    查看分支

    git branch <name>

    创建分支

    git checkout <name>

    切换分支

    git checkout -b <name>

    创建+切换分支

    git checkout -b dev origin/dev

    新建分支dev并与远端origin存在的分支dev建立起联系,然后切换分支到dev

    从远程仓库克隆下来后只有一个master分支,此时可以使用 git branch -a 查看有没有其他分支,如果有,那么可以使用 git checkout -b dev origin/dev 新建分支,并与远端建立关系

    git branch -d <name>

    删除分支,此命令只能删除已经合并后的分支

    git branch -D <name>

    删除分支,此命令可以强行删除未合并的分支

    git branch --set-upstream-to=origin/dev dev

    建立本地分支和远程分支的关联

    merge

    git merge <name>

    合并某分支到当前分支

    git merge --no-ff -m "merge with no-ff" dev

    --no-ff参数,表示禁用Fast forward

    合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

    此方式下,如果dev相比较master多提交一个commit,那么master上合并后会多两个commit,一个是dev多commit的那个,一个是合并时加上参数 -m 后的一个commit,

    而fast forward下只有dev多出的commit,没有合并后 -m 的节点

    git branch -a 查看所有的分支信息,包括clone下来后没有显示的分支

    远程相关

    push

    git push -u origin master

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,

    还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    个人理解:-u origin master 将当前分支与远程origin的master分支进行关联,下次在当前分支进行推送时,默认推送到远程origin master分支上,

    两个分支的名称不一样也没关系?

    git push origin feature

    将本地分支feature推送到远程仓库origin上面,如果origin上没有该分支则新建,如果本地没有该分支则报错,此命令可以在任何分支上进行,但不受所处分支影响,因为推送哪个分支已经指定,如feature

    git push origin master

    将本地master分支推送到远程库origin对应的master分支上

    git push origin master:feature

    将本地master分支推送到远程库origin对应的feature分支上

    【如果这个分支在远程仓库里对应不同的名称(如:feature),你应该使用这个命令】

    fetch & merge

    git fetch 和 git merge

    组合命令的参考文档:https://blog.csdn.net/u012028371/article/details/52384882

    git fetch upstream

    将某个远程主机的更新,全部取回本地 参考:https://www.yiibai.com/git/git_fetch.html

    git fetch upstream master

    取回upstream主机的master分支 所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取

    git diff dev upstream/master

    比较dev分支和本地远程库upstream下master分支的区别

    git merge upstream/master

    合并本地远程库upstream的master分支到当前分支上

    stash

    git stash
    git stash save "本地环境配置"

    保存未commit命令
    把当前工作区和暂存区的内容保存起来

    git stash list

    存储列表,栈的形式存储

    git stash apply stash@{0}

    恢复编号为stash@{0}的存储内容,只恢复工作区

    git stash apply --index stash@{0}

    恢复工作区的同时 也恢复暂存区

    git stash drop stash@{0}

    删除编号为stash@{0}的存储内容

    git stash pop stash@{0}

    git stash pop = git stash apply + git stash drop

    git log --graph --pretty=oneline --abbrev-commit

    查看图形化的分支,包括合并过程

    相关文章

      网友评论

          本文标题:常用git命令

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