1.1 git是什么
git是一种版本控制器.
更直白说,团队开发时,管理代码用的软件.
面试时,容易被问到的一个东西.
1.2 安装
git在linux,Mac,Win下都可以安装.
本文是以Win7系统为环境编写的.
Window环境:
到https://git-for-windows.github.io/ 下载软件,双击,一路”Next”,安装完毕.
到开始菜单找”git bash”,如下图
Linux环境下安装git:
#ubuntu,debian#
#sudo apt-get install git
centions,redhat系统
#yum install git
1.3报家门
人在江湖,岂能没有名号.
开源教主RIchard Matthnew Stallman的江湖名号RMS
在你用git之前,要先报家门,否则代码不能提交
$ git config --global user.name #你是谁
$ git config --global user.email #怎么联系你
1.4代码管理
1.4.1创建版本库
$ cd E:/
$ mkdir test
$ cd test
$ git init
注意:
- 不要把仓库建在中文目录下,可能会出问题.
- .git是个隐藏目录,不要乱碰(你的每一次代码修改它都帮你记录着呢)
1.4.2添加文件
在E:/test目录下,用你喜欢的编辑器(sublime/editplus/notepad/vim等)
开发你的程序,比如index.php
编辑PHP文件后,git status,查看仓库状态
实例如下:
$ git status
可见,此时git发现有一个新文件,但并没有把此文件纳入管理.
我们需要两步,让git仓库管理index.php
- git add index.php
把index.php提交到暂存区 - git commit -m “新建index.php”
把index.php提交到版本库
1.4.3修改文件
如果修改了文件,也不要忘记提交到版本库
这个过程和添加文件时一样的
一样需要两步,让git仓库记录此次改变
- git add index.php
把index.php提交到暂存区 - git commit -m “改了第2行”
把index.php提交到版本库
1.4.4删除文件
用rm命令删除文件,并直接commit提交到版本库
例:先创建一个foo.ph供练习删除用
实例如下:
$ git add foo.php
$ git commit -m "练习删除用"
$ ls
foo.php index.php
#开始删除
$ git rm foo.php
rm 'foo.php'
$ git commot -m "删除foo.php"
(master e4dc37c)删除foo.php
$ ls
index.php
1.5远程仓库
经过前面的练习,你在本地的仓库里管理代码已经比较熟练了.
但如果是团队开发,如何配合起来呢?
我们可以把版本仓库放在互联网上.
开发者把自己最新的版本推到线上仓库.
同时,把线上仓库的最新代码,拉到自己本地.
这样,就可以配合工作了.
1.5.1注册git在线仓库的账号
国外:http://www.github.com
国内:http://git.oschina.net
github.com也是目前程序员的装逼利器,在github上挂个项目,逼格瞬间提升两三档.
不过由于是国外网站,速度不咋样.
出于学习的方便,我在oschina.net给大家演示.
请立即打开http://git.oschina.net 注册一个账户.
1.5.2创建项目
在oschina注册后,”新建项目”,我们先建一个测试项目,叫test.
oschina为此项目提供的仓库地址有2个.
http地址:https://git.oschina.net/lianshou/test.git
ssh地址:git@git.oschina.net:lianshou/test.git
近几章的学习,我们先用http地址
1.5.3把代码推到远程仓库
推:push
- 为本地库添加远程库
$ git remote add origin https://git.oschina.net/lianshou/test.git
意思是:添加1个远程库,代号是orgin,地址是https://....test.git
- push 推代码
push orgin master
意思是,把本地的版本(默认是master),推到代码origin的远程库去.
这个过程会让你输入用户名|密码,即你注册时的账户密码.
1.5.4 团队合作
你想让一位叫”火夫”的程序员,和你一起开发.
首先lianshou账户把火夫添加到此项目中来,让其成为开发者
项目->管理->项目成员管理->开发者->添加项目成员->输入“huofu”.
他应该先把远程库复制一份到他本地.
命令:clone
$ cd F:/
$ git clone https://git.oschina.net/lianshou/test.git
$ cd test
$ ls
index.php
“火夫”修改并push他的代码
另一个账户,如何得到仓库里的最新代码?
推:push 拉:pull
lianshou账户拉取最新代码
$ git pull origin master
此时,查看最新的index.php内容,第四行,多了”火夫”的那一行.
至此,你可以和小伙伴愉快的用git开发了.
如果要掌握更多的git功能,后面还有四章,敬请期待!
第二章 git的特点及诞生
2.1分布式版本控制器
2.2发展历史
第三章 代码管理
3.1工作区和版本库
如果你想要更清晰的学习git,你必须了解3个重要的区域.
- 工作区,即开发者的工作目录
- 暂存区,修改已被记录,但尚未录入版本库的区域.
- 版本库,存储变化日志及版本信息.
3.2文件操作
3.3改动日志
每个文件/目录发生的版本变化,我们都可以追溯.
命令为“git.log”
常用格式:
git log 查看项目的日志》
git log 查看某文件的日志
git log . 查看本目录的日志
如果感觉log有点乱可以git log –pretty=oneline,让日志单行显示.
3.4版本切换
我们针对ver.txt.连续修改4次,形成了4个版本.
one line
second line
third line
four line
git reflog 查看版本变化
$ git reflog
72f608d HEAD@{0}: pull origin master: Fast-forward
488c592 HEAD@{1}: commit: orgin
5aa41fc HEAD@{2}: commit: del read.txt
af2afd7 HEAD@{3}: commit: read
ece7822 HEAD@{4}: commit: modified
7b09637 HEAD@{5}: commit (initial): 新建index.txt
HEAD指向当前版本7b09637
切换成head的当前1版本,git reset –hard HEAD^
切换成head的当前2版本,git reset –hard HEAD^^
切换成head的当前100版本,git reset –hard HEAD~100
也可以利用版本号来切换.
注意:版本号不用写那么长,能保证不与其他版本号重复就行.
第四章 分支管理
4.1 分支有什么用?
4.2查看分支
查看所有分支 git branch
4.3创建分支
创建dev分支 git branch dev
4..4 切换分支
切换到dev分支 git checkout dev
4.5合并分支
当我们在dev上开发某功能,并测试通过后,可以把dev的内容合并到master分支.
例:
当前的readme.txt内容为“so so”,在dev分支下,添加一行“from dev”
并提交
git add readme.txt
git commit -m "mod in dev"
再次切换到master,查看readme.txt的内容,仍为“so so”
合并dev分支,git merge dev,如下:
再次查看readme.tex的内容,已变成”soso from dev”;
4.6 删除分支
git branch -d dev
Deleted branch dev (was 412926b)
4.7 快速创建和切换分支
git checkout -b dev #创建dev分支并立即切换到dev分支
即起到git branch dev和git checkout dev的共同作用.
第五章远程仓库配置
查看远程仓库别名
查看远程仓库:git remote
查看远程地址:git remote -v
删除远程库别名
命令:git remote remove <远程库名>
示例:git remote remove origin
5.1添加远程库
命令:git remote add <远程库名><远程库地址>
注:远程库名一般叫origin,但并非强制,你可以自己起名.
5.2公钥配置
我们push本地仓库到远程时,总要输入用户名/密码,这很不方便.
配置公钥,可以避免频繁输用户名/密码的麻烦.
1.配置ssh格式的远程仓库地址
git remote add 远程仓库名 远程仓库地址
2.创建ssh key
ssh-keygen -t rsa -C “youremail@example.com”,把邮件地址换成你自己的邮件地址,一直回车,不用输入密码,完成后,可以在用户主目录里找到.ssh目录,内有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,id_rsa.pub是公钥.
这两把钥匙是成对的,可以让分别持有私钥和公钥的双方相互认识.
3.把公钥放在服务器
用记事本打开id_rsa.pub,复制公钥内容.
登录git.oschina.net,填入公钥并保存.