msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。
因为Git是分布式版本控制系统,所以每台机器都要自报家门,配置名称和Email,
$ git config --global user.name "name"
$ git config --global user.email "asd@163.com"git有很多命令类似linux的命令,类似 mkdir,cd,pwd等
2.$ git init 通过git init命令把这个目录变成Git可以管理的仓库
3.$ git add read.txt 将文件添加到仓库中
4.$ git commit -m "create a project" 将文件提交到git仓库 -m"" 添加注释,可以一次添加多个文件,一次提交
5.$ git status 查看仓库当前的状态。
6.$ git diff read.txt 查看文件的修改内容
7.$ git log 显示从最近到最远的提交日志,
$ git log --pretty=oneline 查看简单的更改日志。
8.$ git reset --hard head^ 将文件内容回退到上一个版本,
$ git reset --hard head^^ 将文件内容回退到上上个版本,
$ git reset --hard head~3 将文件内容回退到上上上个版本。
9.$ cat read.txt 查看文件的内容。
10.$ git reset --hard (commit id1) 将文件内容回退到id为id1的内容
11.$ git reflog 查看命令历史。
12.$ git diff HEAD -- read.txt” 可以查看工作区和版本库里面最新版本的区别
13.$ git checkout -- readme.txt 把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
14.$ git reset HEAD readme.txt 可以把暂存区的修改撤销掉
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,
第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
15.$ git rm filea
$ git commit -m "delete a file" 删除文件
远程仓库
16.$ ssh-keygen -t rsa -C "youremail@example.com" 创建SSH Keys
17.$ git remote add origin git@github.com:asd2523011/read.git 将本地仓库和github关联
18.$ $ git push -u origin master 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push origin master把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
19.$ git clone git@github.com:asd2523011/gitskills.git 用命令git clone克隆一个到本地库
20.查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
21.$ git log --graph --pretty=oneline --abbrev-commit
* 59bc1cb conflict fixed
|\
| * 75a857c AND simple
* | 400b400 & simple
|/
* fec145a branch test
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
22.通常,合并分支时,如果可能,Git会用“Fast forward”模式,但这种模式下,删除分支后,会丢掉分支信息。
$ git merge --no-ff -m "merge with no-ff" dev
22.$ git stash 把当前工作现场“储藏”起来
23.$ git stash list 查看工作现场
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令: $ git stash apply stash@{0}
24.$ git branch -d feature-vulcan
feature-vulcan分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用命令git branch -D feature-vulcan。
25.$ git remote -v显示查看远程库的信息
26.推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
$ git push origin master
如果要推送其他分支,比如dev,就改成:
$ git push origin dev
但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?
•
master分支是主分支,因此要时刻与远程同步;
•
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
•
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
•
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
27.先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
多人协作的工作模式通常是这样:
1.
首先,可以试图用git push origin branch-name推送自己的修改;
2.
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3.
如果合并有冲突,则解决冲突,并在本地提交;
4.
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
28.$ git tag v1.0 可以打一个新标签
$ git tag查看所有标签
$ git tag v0.9 6224937 对以前提交的打标签
$ git show tagname查看标签信息
$ git tag -a v0.1 -m "version 0.1 released" 3628164 创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git tag -d v0.1 删除标签
要推送某个标签到远程,使用命令git push origin tagname
一次性推送全部尚未推送到远程的本地标签:
$ git push origin --tags
•
命令git tag -d tagname可以删除一个本地标签;
•
命令git push origin :refs/tags/tagname可以删除一个远程标签。