git的使用

54次阅读

共计 1841 个字符,预计需要花费 5 分钟才能阅读完成。

Git 和 SVN 的区别

git 和 svn 是我们在开发过程中常用的代码版本管理工具,那么它们有什么区别呢?

1. Git 是分布式的,SVN 是集中式的。

SVN 必须有一个服务器版本库在中央服务器,所有的开发代码提交都是和服务器进行交互的,在断网的情况下我们就无法提交版本。

Git 是趋向于分布式的开发,每一个计算器上都要一个本地代码库,和服务器上的一样,所有即使在断网情况下一样可以进行 commit,查看历史版本记录,创建分支等操作。

2. Git 和 SVN 的存储形式不一样

Git 把内容按照元数据形式存储,Git 只关心文件数据的整体变化,更像是把文件做快照,文件没有改变时分支指向这个文件的指针不会改变,文件变化的时候,指针指向新版本。
SVN 是文件形式存储,保存文件前后变化的差异。

3. 版本号不一样

Git 没有全局版本号,采用 40 位长的哈希值作为版本号,你没有先后之分。
SVN 有版本号进行控制,每次操作会生成一个高版本号。

4. 分支不同
SVN 创建分支其实是创建一个新文件夹(目录)拥有实际的文件,相当于 copy 一份源文件,创建分支后,影响全部成员。每个人拥有这个分支,拉分支会比较慢,多分支并行开发较难。
Git 可以在任意 commit 节点开启分支,没有创建新的文件夹,创建一个分支就是多了一个索引文件,记录这个分支的变化,占用很小的内存。可以在一个文件夹下快速的切换不同的分支,每一个分支都是独立的,可以进行任何操作,不会影响其他的操作

5. 管理权限不同
Git 没有严格的管理权限,在 gitlab 中可以在项目目录下进行用户权限分配
SVN 权限管理比较严格,可以按照组,个人对子目录权限进行控制

6. 工作流程比较类似,但是还是有区别

SVN 每次更改文件需要 update,有冲突会打断提交
Git 提交之前需要先 pull。在 push 操作时有冲突先解决冲突,提交过程不会被打断,但是会标记冲突文件。

5

Git 开发流程

一般项目主要包含 master 和 develop 两个分支,

master 为主分支,是部署生产环境的分支,确保 master 分支的稳定,只有当所有的功能测试通过以后才会将代码合并到 master 分支上,进行上线发布。

develop 为开发分支,从 master 分支上建立。在开发过程中保证 develop 分支下的代码是最新的和 bug 已经修复过的。

日常新功能的开发都是在 develop 分支下在创建一个 feature-xxx 的分支进行开发,当功能开发完成,测试没有问题后在 develop 分支下和 feature-xxx 分支合并。

release 分支为预发布分支,冲 develop 分支下建立。feature-xxx 分支开发完成后合并 develop 分支,在 develop 分支下建立一个预发布的分支 realease,部署测试,如果发现 bug 直接由开发者在 realase 分支下修改并提交,测试通过后,合并 release 分支到 master 和 develop 分支下,此时 master 分支用作上线发布。

Git 的常用命令

1. 新建代码库

git init  #在当前目录下创建一个代码库

git init [project-name]  #新建一个目录并初始化为 Git 代码库

git clone [url]  #clone 下载一个项目

2. 配置

git config --list  #显示 Git 配置信息

#在提交代码时的用户信息

git config --global user.name "[name]" #全局配置 git 用户名

git config --global user.email "[email]" #全局配置用户邮箱

3. 常用代码提交命令

git add [file1] [file2]... #添加文件到暂存区

git add [dir] 添加指定目录到暂存区

git add . #添加所有的文件到暂存区

git commit -m "[注释信息]" #提交暂存到仓库区

git commit -a #提交工作区自上次 commit 之后的变化直接到仓库区

git branch  # 查看当前分支

git branch -a #查看所有的分支

git checkout -b [branch] #创建一个分支

git checkout [branch] #切换分支

git merge [branch] #合并指定分支到当前分支

git log #显示当前分支提交的版本历史

git push -u origin [branch] #上次指定分支到远程仓库

git fetch #从远程仓库拉取代码

git pull #取回远程仓库的变化,并与本地分支合并

参考内容:
https://www.cnblogs.com/baby1…

正文完
 0