git 奇技淫巧

作者: s_在路上 | 来源:发表于2018-09-11 14:04 被阅读13次

    Tag

    添加 Tag

    例如:1.0.0

    git tag -a 1.0.0 -m "1.0.0 版本的备注信息."
    

    推送所有 tag,同步到远程仓库:

    git push origin --tags
    

    删除本地 Tag

    例如:1.0.0

    git tag -d 1.0.0
    

    删除远程标签需要先删除本地标签,再执行下面的命令:

    git push origin :refs/tags/1.0.0
    git push origin --delete tag 1.0.0
    

    展示当前分支的最近的tag

    git describe --tags --abbrev=0
    

    默认 tag 是打在最近的一次 commit 上,如果需要指定 commit 打 tag:

    git tag -a <version-number> -m "v1.0.0 发布(描述)" <commit-id>
    

    分支

    快速切换分支

    git checkout -
    

    删除已经合并到master的分支

    git branch --merged master | grep -v '^\*\|  master' | xargs -n 1 git branch -d
    

    列出远程服务器和本地的所有分支,以及分支上的最后提交

    git branch -vv
    

    列出本地和远程分支

    -a参数相当于:all

    git branch -a
    

    列出所有远程服务器上的分支

    -r参数相当于:remote

    git branch -r
    

    同步本地与远程分支

    删除远程不存在的本地分支

    git fetch --p
    

    更新远程跟踪分支

    git fetch origin
    

    创建并切换到本地分支

    git checkout -b <branch-name>
    

    创建并切换到远程分支

    git checkout -b <branch-name> origin/<branch-name>
    

    删除远程分支

    git push origin --delete <remote-branchname>
    git push origin :<remote-branchname>
    

    重命名本地分支

    git branch -m <new-branch-name>
    

    Commit

    合并本地的最后两次 commit

    git reset --soft HEAD^git commit --amend
    

    修改上一次的 commit 信息

    git commit --amend
    

    展示简化的 commit 历史

    git log --pretty=oneline --graph --decorate --all
    

    以新增一个commit的方式还原某一个commit的修改

    git revert <commit-id>
    

    回到某个commit的状态,并删除后面的commit

    和 revert 的区别:reset 命令会抹去某个 commit id 之后的所有 commit

    git reset <commit-id>  #默认就是-mixed参数。
    git reset –mixed HEAD^  #回退至上个版本,它将重置HEAD到另外一个commit,并且重置暂存区以便和HEAD相匹配,但是也到此为止。工作区不会被更改。
    git reset –soft HEAD~3  #回退至三个版本之前,只回退了commit的信息,暂存区和工作区与回退之前保持一致。如果还要提交,直接commit即可   
    git reset –hard <commit-id>  #彻底回退到指定commit-id的状态,暂存区和工作区也会变为指定commit-id版本的内容
    

    查看指定路径文件代码是谁写的

    git blame <file-name>
    

    远程仓库

    删除远程仓库地址

    git remote remove origin <remote-url>
    

    修改远程仓库的url

    git remote set-url origin <URL>
    

    增加远程仓库

    git remote add origin <remote-url>
    

    列出所有远程仓库

    git remote
    

    stash

    暂存命令stash使用

    git stash #将本地修改暂时存储起来
    git stash list #查看暂存的信息
    git stash pop  #应用最近一次暂存的内容
    git stash apply stash@{1} #应用指定版本的暂存内容
    git stash clear  #清空暂存栈
    git checkout <stash@{n}> -- <file-path> #从stash中拿出某个文件的修改
    

    Git取消合并(merge)、暂存修改(stash)、回退到某个版本(reset)的使用方法

    例如:取消某次合并

    git merge --abort #如果Git版本 >= 1.7.4
    git reset --merge #如果Git版本 >= 1.6.1
    

    注意:
    在合并之前要保证没有未提交的文件,如果有未提交的文件但现在又不想提交,用stash命令暂存。

    回退到某个版本并应用指定的几次提交

    git reset --hard 1d7444 #回退到某个版本
    git cherry-pick 626335 #将某次commit的更改应用到当前版本
    git cherry-pick …
    git push origin HEAD --force  #强制提交
    

    注意:
    如果是撤销某次提交,可以用revert命令,git revert是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留; git reset是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区。

    git强制push

    git push -u origin master -f
    

    把暂存区的指定file放到工作区中

    不添加参数,默认是-mixed

    git reset <file-name>
    

    撤销所有未提交的本地修改

    git checkout .
    

    Push 本地分支到指定远程分支

    例如:Push 本地当前分支到远程仓库 origin 的 master 分支

    git push -u origin master
    

    相关文章

      网友评论

        本文标题:git 奇技淫巧

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