Git分布式版本管理工具的基本使用

来源:互联网 发布:不需要网络的游戏大全 编辑:程序博客网 时间:2024/05/29 12:15

一:简介

GIT:分布式版本管理工具,需要先将代码提价的本地仓库,然后再提交到远程仓库;使用流程:用户先将文件添加到本地版本库的当前分支中的暂缓区,然后再将本地版本库中的暂缓区提交到本地版本库的当前分支中,然后再将当前分支提交到远程仓库中(即服务器)

用户 —add—> 【暂缓区】—commit—> 【当前分支】—push—>【共享版本库|远程服务器】,相对于svn,git增加了一个中间环节,因每个开发者本地都有本地版本库,即使在没有网的情况下也可以进行版本管理

基本使用过程
首先将代码克隆下来clone,修改代码,将代码提交commit到本地版本库,然后将本地版本库推送到push共享版本库,如果需要获取最新的代码就要从共享版本库中拉取下来pull

origin:远程版本库名称(Git创建好的),可以创建多个
master:默认创建的分支名称

git版本库的基本目录:
这里写图片描述

SVN和Git的比较

Git和SVN最大的不同就是Git是分布式版本管理,就是用户将代码先提交到本地仓库,然后再提交到远程仓库,这样即使在没有网络的情况下也可以使用Git进行版本管理,而SVN是直接将代码提交到远程服务器的,如果没有网络就不能进行版本管理。

git对于版本回退好像操作比较麻烦,需要其他同事都要版本回退进行配合;

图形化界面

  1. SourceTree https://www.sourcetreeapp.com/
  2. GitHub https://mac.github.com/
  3. Xcode

初始化代码仓库
git init // 在当前目录下会生成一个.git的文件夹(一个空的版本库)

// 配置当前版本库的用户名和邮箱
git config user.name “zhangsan”
git config user.email “zhangsan@163.com”

// 配置全局的用户名和邮箱(所有版本库都通用的)
git config - -global user.name “zhangsan”
git config - -global user.email “zhangsan@163.com”


.git目录:

工作区:本地仓库文件夹中除了.git目录以外的其他内容

版本库:.git目录,用于记录版本信息
暂缓区stage
分支:初始化版本库是会自动创建一个master分支作为默认的分支
HEAD指针:用于记录当前的分支


常用命令

git status // 查看文件状态(红色:该文件被添加或者被修改,但是没有添加到暂缓区,绿色:该文件在暂缓区,但是没有提交到本地版本库),只有在暂缓区track中的文件才可以被commit,一但提交暂缓区就会被清空

git add // 将文件添加到版本库中的暂缓区,在图形工具中不在暂缓区中一般显示问号?

git add . // 将工作区所有不在暂缓区的所有内容添加到暂缓区

git commit -m “注释” 文件名 //(提交到本地仓库) 将暂缓区的所有内容提交到本地版本库的当前分支

git rm // 删除指定的文件,rm之后需要commit一下

git log // 查看提交的版本信息(只有普通的版本信息,如果有版本回退的是不显示的)
git reflog // 也可以查看所有版本回退的操作

// 版本回退(也就是svn中的还原),一般需要进行备份,防止操作失误,回退的是本地版本,还需要push -f 到远程服务器, 因其他同事本地版本库仍然是原来的,所以其他同事要么重新克隆,要么也要在本地版本库回退一下
git reset - -hard HEAD // 版本强制回退当前版本
git reset - -hard HEAD ^ // 回退到上一个版本
git reset - -hard HEAD ^^ // 回退到上上一个版本
git reset - -hard 版本号(前5位)

无论是新添加的文件还是修改了文件都需要add命令将文件添加到暂缓区,使用命令行比较烦,一般图形工具都会默认自动做了这件事

git help // 查看git的所有命令的解释

搭建Git服务器(共享版本库)

  1. 自己搭建(非常繁琐)
  2. 代码托管 GitHub、OSChina
  3. 一个文件夹 git init –bare
  4. 一个U盘

项目经理创建一个共享版本库(以文件夹的形式),一般使用OSChina作为共享版本库
git init - - bare

项目经理将共享版本库的所有内容克隆到本地
git clone <共享版本库地址>

创建忽略文件.gitignore(经理操作), 文件的内容 https://github.com/github/gitignore/blob/master/Objective-C.gitignore,这样再创建项目后再提交就不会提交一些不需要提交的文件了

git push origin master // 推送到远程服务器中


版本备份(打tag)
git tag // 查看所有的tag
git pull // 拉取代码(可以拉取所有的包括tag)
git branch // 查看本地分支以及当前所在分支
git branch -r // 查看远程分支
git checkout // 切换分支,checkout既可以切换分支也可以切换tag

1、 1.0版本开发完毕,上传到AppStore,并对其进行备份

git tag -a <tagname> -m "注释"  // 现在只是在本地打的taggit push origin <tagname>   // 将tag推送到远程服务器中 

2、 开始开发2.0版本,开发过程中发现1.0有bug,需要某人来修复

首先将远程版本库的代码clone下来,克隆到一个新的目录下,切换到指定标签,创建分支(修复bug不是在tag中修复的而是在分支中修复的)git clone <url>git checkout <tagname>  // 将当前环境切换到指定的taggit checkout -b <branchname>   // 创建分支,并切换到该分支,然后修改bug

3、 bug修复好,上传到AppStore,再为该版本打一个分支来备份一下(标签名不允许重复,要唯一)

git tag -a <tagname2>  -m "注释"git push origin <tagname2>

4、 开发新版本的同事 和bug分支近行合并

Source Control --> pull --> origin/<branchname>  // 先将新分支的代码拉取下来,新分支和主分支就合并了Source Control --> push --> origin/master   //  推送到主分支中

5、 删除分支(需要3步)

// 删除分支时当前分支不能是要删除的分支git checkout master  // 切换到master分支git branch -d <branchname> // 删除本地分支git branch -r -d origin/<branchname>   // 删除本地版本库分支 git push origin - -delete <branchname> // 删除远程

创建新人共享版本库

首先创建一个新的共享版本库,然后新添加一个远程仓库,最后将Xcode中的工程推送到新的远程仓库中,新同事就从新的远程仓库中就行clone就好。

使用Xcode 添加一个新的远程仓库(Source Control—> Config xxx…—> Remote—>Add Remote…Name(新远程仓库的名字)&Address(新的远程仓库地址))
这里写图片描述

这里写图片描述

这里写图片描述

然后将工程推送push到新的远程版本库
新人就可以克隆clone新的远程版本库

0 0