git安装与配置用户
window安装git
可以去git官方网站上下载
在完成安装后还需要配置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每台机器都必须配置:名字和Email
版本库管理
git init
:通过git init命令把一个目录变成Git可以管理的仓库
git add file
:把文件添加到仓库暂存区
git commit -m "message"
:把文件提交到仓库分支
git status
:查看仓库当前状态
git log
:显示提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数
版本回退
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
git reset --hard HEAD^
:git reset
用于版本回退。
git reflog
:用来记录你的每一次命令
git diff HEAD -- readme.txt
:命令可以查看工作区和版本库里面最新版本的区别
git checkout -- file
意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
- 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
- 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
要从版本库中删除该文件,那就用命令git rm file
删掉,并且git commit
git checkout -- file
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
添加远程库
git remote add origin git@github.com:sunyiwei/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.com:michaelliao/gitskills.git
分支管理
HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。
git checkout -b dev
:git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
用git branch
命令查看当前分支:
$ git branch
* dev
master
我们把dev
分支的工作成果合并到master
分支上:
$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到当前分支。
合并完成后,就可以放心地删除dev
分支了:
$ git branch -d dev
Deleted branch dev (was b17d20e).
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
多人协作
当你从远程仓库克隆时,实际上Git自动把本地的maste
r分支和远程的master
分支对应起来了,并且,远程仓库的默认名称是origin
。
要查看远程库的信息,用git remote
:
$ git remote
origin
或者,用git remote -v
显示更详细的信息:
$ git remote -v
origin git@github.com:michaelliao/learngit.git (fetch)
origin git@github.com:michaelliao/learngit.git (push)
上面显示了可以抓取和推送的origin
的地址。如果没有推送权限,就看不到push的地址。
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
如果要推送其他分支,比如 dev
,就改成:
$ git push origin dev
标签管理
在Git中打标签非常简单,首先,切换到需要打标签的分支上:
$ git branch
* dev
master
$ git checkout master
Switched to branch 'master'
然后,敲命令 git tag <name>
就可以打一个新标签:
$ git tag v1.0
可以用命令git tag
查看所有标签:
$ git tag
v1.0
在指定提交上打标签:
$ git tag v0.9 f52c633
标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>
查看标签信息
git tag -d v0.1
:删除标签
如果要推送某个标签到远程,使用命令git push origin <tagname>