Git分布式版本控制系统快速参考
一.安装与配置Git
Git是一个开源的分布式源代码版本控制系统,主要是在Linux/Unix系统上使用,现已被移植可以到Windows系统上使用.
Windows上的Git是msysgit,图形界面环境可以使用tortoisegit,一般配合使用,先安装msysgit再安装tortoisegit.
Git下载地址:
http://git-scm.com/download/
TortoiseGit下载地址:
https://code.google.com/p/tortoisegit/
安装msysgit和tortoisegit时基本上都是选择默认选项.
在Windows平台安装msysgit后,Git的命令环境是Git Bash.
配置Git的User信息.
$ git config --global user.email "[email protected]"
$ git config --global user.name "gym"
Git的使用可以参考官方文档:
http://git-scm.com/docs
二.Git服务器搭建
一般需要搭建一个Git服务器作为远程仓库(Remote Repository),用于开发团队存储和交换开发成果的媒介.
实际上对于分布式方式来说,远程仓库和本地仓库管理的内容是一样的
远程仓库可以使用Github或自己搭建Git服务器。
如果在Windows平台搭建Git服务器,还需要CopSSH软件作为ssh服务器,使用putty或其它ssh客户端软件访问和管理服务器.
配置Git服务器(Windows平台),需要CopSSH + Git
先安装msysgit,再安装CopSSH.
打开CopSSH,创建帐户,激活帐户.
复制git的文件到copssh的bin目录下
bin/libiconv-2.dll
libexec/git-core/git.exe
libexec/git-core/git-receive-pack.exe
libexec/git-core/git-upload-archive.exe
libexec/git-core/git-upload-pack.exe
三.Git常用操作命令
1.创建版本库(init)
版本库又叫仓库(Repository),是存放需要管理的文件的目录,创建版本库就是创建一个目录并初始化.
$ mkdir repo
$ cd repo
$ pwd
/E/repo
$ git init
初始化库后,将会在版本库目录下创建一个.git的隐藏目录,是由Git管理的版本库.
初始化后将会产生一个主分支(Branch): master,可以查看版本库的状态
$ git status
2.添加文件进版本库管理(add)
$ git add . #添加所有文件
$ git add filename #添加指定文件
修改文件也是用git add
3.提交更改(commit)
用commit命令提交更改,需要备注信息.
$ git commit -m "description"
4.暂存更改(stash)
将工作区中有修改还未提交的更改储藏到暂存栈中,清干净工作区
$ git stash
显示暂存栈中储藏的更改
$ git stash list
将储藏的更改从暂存栈中恢复到工作区
$ git stash pop
清除暂存栈中内容
$ git stash clear
5.分支管理(branch,merge)
$ git branch branch_name #创建新分支
$ git checkout branch_name #签出并切换到新分支
或者一条命令做两条命令的事: 创建新分支并切换到新分支
$ git checkout -b branch_name
查看当前分支
$ git branch
在看看当前分支的状态
$ git status
合并分支,将分支上的工作合并到master分支上.
$ git checkout master
$ git merge branch_name
删除分支
$ git branch -d branch_name
6.版本库共享与更新(push,fetch,pull)
将本地版本库推送到远程版本库
$ git push origin master
抓取远程版本库
$ git fetch origin deve
抓取远程版本库并合并到本地版本库
$ git pull origin deve
7.标签(tag)
创建标签
$ git tag -a 'release_1' -m 'tag code' HEAD
推送标签到远程版本库
$ git push origin tag release_1
查看标签
$ git tag -l
删除标签
$ git tag -d release_1
四.版本库操作示例
1.远程版本库(Remote Repository)操作示例
在实际应用中一般将版本库放在远程服务器上,开发团队不直接操作远程服务器,每个开发成员从远程服务器上克隆一个版本库到本地。
开发工作将在本地版本库中完成,更改后提交到本地版本库,再推送到远程版本库中.
当然,远程版本库(Remote Repository)可以放在远程服务器上,也可以放本地.
(1)创建新的远程版本库
$ mkdir remoterepo/project #创建空目录remoterepo/project作为项目远程版本库
$ cd remoterepo/project #进入创建的目录
$ git init #将创建的目录初始化为版本库
$ git status #查看版本库状态
(2)添加文件进版本库管理并提交
在目录remoterepo/project下添加一些文件,再将这些文件添加进版本库管理
$ git add . #添加文件进版本库管理-添加所有文件
$ git add filename #添加文件进版本库管理-添加指定文件
$ git commit -m "add file" #提交更改
(3)创建新分支deve作为开发分支
$ git branch deve #创建新分支deve
$ git checkout deve #签出并切换到新分支
$ git checkout -b deve #或者一条命令做两条命令的事: 创建新分支并切换到新分支
$ git branch #查看当前分支
$ git status #再看看当前分支的状态
$ git checkout -b master #切换到主分支.
2.本地版本库(Local Repository)操作示例
(1)克隆远程版本库到本地
$ mkdir localrepo
$ cd localrepo
$ git clone ../remoterepo/project/.git #克隆远程版本库到本地,默认只克隆了master分支
$ git clone -b master ../remoterepo/.git #选择克隆版本库的某一分支
$ git clone git://github.com/.../....git #如果是从远程服务器克隆.
执行之后就把版本库的内容全部都复制过来了.
$ cd project
查看远程库信息
$ git remote #在本地,远程仓库的默认名称是origin
origin
$ git remote -v
origin e:/localrepo/../remoterepo/project/.git (fetch)
origin e:/localrepo/../remoterepo/project/.git (push)
默认只克隆了master分支,可以依远程库分支deve创建新分支deve
$ git branch origin/deve
$ git checkout deve
(2)修改并提交分支deve
$ git checkout deve #签出分支
$ git add . #新增或修改代码后,添加文件进版本库管理
$ cat .gitignore #忽略特定文件或目录
#.[oa]
#~
$ git diff #查看staging文件差异,未添加进库管理时的差异
$ git diff --cached #查看staging文件差异,已添加进库管理时的差异
$ git commit -m "add file" #提交更改,提交到本地版本库
(3)创建新分支
当有某种需要时可以再创建新分支
$ git branch test #创建分支test
$ git checkout test #切换到分支test
$ git add . #新增或修改代码后,添加文件进版本库管理
$ git commit -m "add file" #提交更改
(4)合并分支
$ git branch #查看当前分支
$ git checkout deve #切换到分支deve
$ git merge test #将分支上的工作合并到master分支上.
解决分支合并冲突: 当各分支修改同一个文件内容,在合并时就可能会出现冲突,无法自动合并分支,需要解决冲突.
$ vi test4.txt #查看冲突的文件
<<<<<<< HEAD
test4
=======
test4test4test4
>>>>>>> test
Git会用<<<<<<< ======= >>>>>>>标记出不同分支的内容,修改后保存:
$ git add .
$ git commit -m "add file"
$ git branch -d test #合并完成后可以删除分支
(5)推送到远程版本库.
$ git push origin deve
在推送到远程版本库时,有可能远程版本库的内容已经被别人更改,此时需要解决冲突.
一般需要使用fetch或pull下载最新的版本后合并分支,然后再推送到远程版本库.
(6)抓取远程版本库(fetch,pull).
获得更新到本地版本库(fetch)
$ git fetch origin deve #从远程版本deve主分支下载最新的版本到origin/deve分支上
$ git log -p deve..origin/deve #比较本地的deve分支和origin/deve分支的差别
$ git merge origin/deve #合并分支deve
从远程版本库获取最新版本并合并到本地版本库(pull)
$ git pull origin deve
Git 的详细介绍:请点这里
Git 的下载地址:请点这里