Git - 常用命令
查看上个版本修改的内容
$ git diff 文件名
查看工作区和版本库中最新 指定文件的区别
$ git diff HEAD --文件名
显示从最近到最远的提交日志的历史(详细信息)
$ git log
显示从最近到最远的提交日志的历史(简洁明了的单行显示)
$ git log --pretty=oneline
用带参数的git log查看分支合并图
$ git log --graph --pretty=oneline --abbrev-commit
查看当前分支状态
$ git status
查看命令历史,以便确定要回到未来哪个版本
$ git reflog
回退到历史版本(上个版本 HEAD^ 上上个版本 HEAD^^ 上100个版本 HEAD~100)
$ git reset --hard HEAD^
回到未来版本
$ git reset --hard commit_id
将最新的暂存区的修改回退到工作区
$ git reset HEAD 文件名
取消工作区中指定文件的修改
$ git checkout -- 文件名
删除指定文件
$ git rm 文件名
已有的本地库与远程库关联
$ git remote add origin git@server-name:path/repo-name.git
第一次推送本地分支的所有内容到远程分支
$ git push -u origin master
非第一次推送本地分支到远程分支
$ git push origin master
根据远程库克隆本地库(本地path下会生成一个名为repo-name的文件夹)
$ git clone git@server-name:path/repo-name.git
创建并切换到新的分支
$ git branch -b newbranch
||
$ git branch newbranch
$ git checkout newbranch
合并指定分支到当前分支(master)
Fast forward模式合并,合并后的历史无分支相关信息
$ git merge newbranch
普通模式合并,合并后的历史有分支,能看出来曾经做过合并
$ git merge --no-ff -m "merge newbranch" newbranch
删除分支
$ git branch -d newbranch
隐藏当前工作现场
$ git stash
查看所有隐藏的工作现场
$ git stash list
stash@{0}: WIP on dev: f52c633 add merge
恢复指定的stash
$ git stash apply stash@{0}
释放当前工作现场,并删除stash
$ git stash pop
恢复当前工作现场
$ git stash apply
删除stash
$ git stash drop
强制删除一个没有被合并过的分支
$ git branch -D newbranch
推送本地分支到远程分支
$ git push origin 远程分支名称
本地创建和远程对应的分支
$ git checkout -b newbranch origin/newbranch
建立本地分支和对应远程分支的关联(当git pull提示no tracking information时使用)
$ git branch --set-upstream newbranch origin/newbranch
把最新的提交从远程分支上抓下来
$ git pull
把本地未push的feature1分支提交历史整理成直线
$ git rebase master
rebase 做了什么操作呢?
首先, git 会把 feature1 分支里面的每个 commit 取消掉;
其次,把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;
然后,把 feature1 分支更新到最新的 master 分支;
最后,把上面保存的 patch 文件应用到 feature1 分支上;
打一个新的标签
$ git tag v1.0
查看所有标签
$ git tag
对某一次(commit_id可以是前7位,如f52c631)的提交打标签
$ git tag v1.1 f52c631
创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git tag -a v1.1 -m "version 1.1 released" f52c631
查看标签中详细提交信息
$ git show v1.1
删除指定本地标签
$ git tag -d v1.1
一次性推送全部尚未推送到远程的本地标签
$ git push origin --tags
删除远程标签(先删除本地,再删除远程)
$ git tag -d v1.1
$ git push origin :refs/tags/v1.1