Git命令
[TOC]
参考廖雪峰的git教程
1.1 git初始化
$ git config --global user.name "Your name"
指定全局提交用户名
$ git config --global user.email "email@example.com"
指定全局提交邮箱 , 注意
git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
1.2 创建版本库
$ mkdir learngit
创建目录
$ cd learngit
进入目录
$ pwd
显示当前目录:
/d/learngit
$ git init
通过
git init
命令将该目录变成Git可以管理的仓库,多了一个.git
目录,这个目录是Git来跟踪管理版本库的。.git
目录默认隐藏的,可以通过 ls -ah命令可以看见
$ git add readme.txt
将文件添加到版本仓库
git commmit -m "wrote a readme file"
-m
后面输入的是本次的提交说明
为什么Git添加文件需要add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
2.1 时光机穿梭
$ git status
查看仓库当前状态
$ git diff
查看当前修改的内容
2.2 版本回退
$ git log
查看 Git提交的历史
commit e550f1e8500e0ffc8b655bb5eae71be60979c5da
Author: markzl zhoulong2312@163.com
Date: Thu Oct 19 11:19:20 2017 +0800append GPL
commit d06169b9ae751b98189c55d1ea3931f2f9d76105
Author: markzl zhoulong2312@163.com
Date: Thu Oct 19 11:15:44 2017 +0800add distributed
commit 677947b74b1824d81f0cea908426f69c1d5940fa
Author: markzl zhoulong2312@163.com
Date: Thu Oct 19 11:02:19 2017 +0800worte a readme file
$ git log --pretty=oneline
一行查看
git
的提交历史e550f1e8500e0ffc8b655bb5eae71be60979c5da append GPL
d06169b9ae751b98189c55d1ea3931f2f9d76105 add distributed
677947b74b1824d81f0cea908426f69c1d5940fa worte a readme file
$ git reset --hard HEAD^
回退到上一个版本,上上个版本是HEAD^^,往上100个版本是 HEAD~100
$ cat readme.txt
查看该文档内容
$ git reset --hard e550f1e
回到
commitid
对应的版本
$ git reflog
可以查询之前操作的commitid
$ git diff HEAD --readme.txt
比较工作区和版本库里面最新版本的区别
$ git checkout -- readme.txt
将
readme.txt
文件在工作区的修改全部撤销,这里有两种情况:一种是
readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
3.1 远程仓库
$ git remote add origin git@github.cocm.xxxxx/learngit.git
添加远程仓库
$ git push -u origin master
把本地库的内容推送到远程,用
git push
命令,实际上是把当前分支master
推送到远程。由于远程库是空的,我们第一次推送master
分支是,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
的分支关联起来,在以后的推送或者拉取时就可以简化命令:$ git push origin master
$ git clone git@github.cocm.xxxxx/learngit.git
克隆一个仓库在本地
4.1 分支管理
$ git checkout -b dev
$ git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
$ git branch
查看当前分支
在dev
分支上修改过后,切换到master
分支上
$ git merge dev
git merge
命令用于合并指定分支到当前分支
合并完成后,可以删除dev
分支了:
$ git branch -d dev
删除
dev
分支
$ git log --graph --pretty=onelint --abbrev-commit
git log --graph
命令可以看到分支合并图
$ git merge --no-ff -m "merge with no-ff" dev
注意
--no-ff
参数 表示禁用Fast forward
$ git stash
储存当前工作区内容
$ git stash list
查看储存工作区的内容
$ git stash pop
恢复工作区之前保存的内容,和这个步骤:
$ git stash apply
: 恢复 stash, 但是 stash内容并没有删除
$ git stash drop
: 删除stash内容
$ git branch -d feature-vulcan
安全删除分支,没有合并到主干提示错误信息,无法删除
$ git branch -D feature-vulcan
强制删除该分支
5.1 标签管理
$ git tag v1.0
git tag <name>
打个标签
$ git tag
查看所有标签
$ git tag v0.9 76868723
根据对应的 commit id 打标签
$ git show v0.9
查看标签信息
- 命令
git push origin <tagname>
可以推送一个本地标签; - 命令
git push origin --tags
可以推送全部未推送过的本地标签; - 命令
git tag -d <tagname>
可以删除一个本地标签; - 命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。