Git起源
Git的诞生是Linus用来管理Linux而自己写的。
Git简介
Git是分布式版本控制系统,而SVN是集中式的。
分布式优点:
1.没有中央服务器,不需要联网;
2.安全性高,每个人的电脑上都有一份完整的版本库;
3.强大的分支管理。
集中式图解:
分布式图解:
安装Git
Mac或者windows上安装SourceTree客户端来管理。下载地址:
https://www.sourcetreeapp.com/
一、mac上安装Git:
1.访问git-osx-installer的官方网站:http://code.google.com/p/git-osx-installer/,下载Git安装包.
2.解压安装包,然后点.pkg开始安装。
3.安装完毕后直接在终端运行git命令就行了。
二、在windows上安装Git:
1.msysgit是Windows版的Git,从https://git-for-windows.github.io下载,然后按默认选项安装即可。
2.安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
3.安装完成后,还需要最后一步设置,在命令行输入:
$git config --global user.name"Your Name"
$git config --global user.email"[email protected]"
创建版本库
一、版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
$mkdir YYKKJ
$cd YYKKJ
$pwd
/Users/michael/ YYKKJ
二、通过git init命令把这个目录变成Git可以管理的仓库:
$git init
添加远程库
1.要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行git remote add [shortname] [url]:
2.把远程库中的文件clone到本地库
$git clone xxxxxxxxxxxxxx
把文件添加到版本库
1.用命令git add告诉Git,把文件添加到仓库:
$git addxxx.xxx
2.用命令git commit告诉Git,把文件提交到仓库:
$ gitcommit-m"提交信息"
-m后面输入的是本次提交的说明
Git更新的规范步骤
1.如果记不清了可以需要用git diff这个命令看看。
2.提交到本地仓库,git add
3.git status看看当前仓库的状态
4.git commit提交。
5.再用git status看看状态是否提交上去。
6.把本地的内容提交到远程库
$git push origin master
加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
7.更新本地分支:git pull
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
分支管理
一、创建分支:
1.创建分支:
$git checkout -bxxx
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$git branch xxx
$git checkout xxx
2. 用git branch命令查看当前分支:
$git branch
git branch命令会列出所有分支,当前分支前面会标一个*号。
3合并分支;
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
$git mergexxx
4删除当前分支;
$git branch -d dev
5切换分支;
$git checkoutxxx
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
标签管理
一、创建标签
1首先切换到要打标签的分支上,然后敲命令:git tag
2查看标签git tag
3忘记打标签找到提交的commitid就能打标签
$git log --pretty=oneline --abbrev-commit
6a5819e merged bug fix101
cc17032 fix bug101
7825a50merge with no-ff
6224937add merge
59bc1cb conflict fixed
400b400& simple
eg:$git tag v0.96224937
4git tag -a-m "blablabla..."可以指定标签信息
操作标签
1.删除标签
$git tag -d v0.1
2.推送标签
$git tag -d v0.1
3.一次性推送全部标签
$ git push origin --tags
4.删除远程标签
$git tag -d v0.9
$git push origin:refs/tags/v0.9
忽略特殊文件
在Git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
.settings
.classpath
.project
target
rebel.xml
*.class
.gitignore
# Package Files #
*.jar
*.war
*.ear
/target