赞
踩
当进入到公司进行多人合作开发项目的时候,版本控制工具是必不可少的.
版本控制是一种记录一个或若干文件内容变化,是对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一.
版本控制工具目前主要的就是两个Svn和Git .两者类似但不完全相同,本篇文章主要讲的是Git.
Git: 一个开源的分布式版本控制系统,可以有效、高速地处理有小到非常大地项目版本管理.
- 工作区:仓库的目录,工作区是独立于各个分支的.
- 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区,暂存区也是独立于各个分支的.
- 版本库:存放所有提交到本地仓库的代码版本
- 版本结构: 树结构,树中的每个节点代表一个代码版本.
如下图所示:
git config --global user.name xxx
:设置全局用户名,信息记录在~/.gitconfig中git config --global user.email xxx@xxx.com
:设置全局邮箱地址,信息记录在~/.gitconfig中- 以上两个在终端只需要设置一次,要修改也可以
vim ~/.gitconfig
进行修改.
git init
:将当前目录配置为git 仓库,创建.git文件,并将信息记录在.git文件夹中.- .git文件夹的信息
COMMIT_EDITMSG FETCH_HEAD HEAD ORIG_HEAD config description hooks/ index info/ logs/ objects/ refs/
命令 | 描述 |
---|---|
git add xxx | 将文件xxx加入到暂存区 |
git reset xxx | 将文件从暂存区返回工作区 |
git restore xxx / git checkout xxx | 将工作区的修改全部撤销 |
git commit -m “备注信息” | 将暂存区的内容提交到当前分支 |
git log | 查看当前分支所有的版本 |
git reflog | 查看HEAD指针的移动历史 |
git remote add origin 远程仓库地址 | 连接到远程仓库 |
git remote -v | 查看当前的远程仓库信息 |
git push | 将当前分支推送到远程仓库 |
git pull/git fetch | 将远程仓库拉取到本地仓库 |
git status | 当前仓库的状态 |
命令 | 描述 |
---|---|
git log | 查看当前分支的所有版本 |
git reflog | 查看HEAD 指针的移动历史 |
git diff xx | 查看xx文件相对于暂存区修改了哪些内容 |
git status | 查看当前仓库的状态 |
git branch | 查看仓库的分支信息 |
git remote -v | 查看当前的远程连接信息 |
命令 | 描述 |
---|---|
git reset xxx | 将xxx文件从暂存区返回到工作区 |
git checkout xxx / git restore xxx | 将xxx文件的修改撤销(xxx文件在工作区) |
git reset --hard HEAD^ | 将代码库回滚到上一版本 |
git reset --hard 版本号 | 回滚到某一特定的版本 |
命令 | 描述 |
---|---|
git remote add origin 远程仓库地址 | 将本地仓库连接到远程仓库 |
git remote -v | 查看远程分支的信息 |
git remote remove origin | 取消连接远程仓库 |
git push | 将当前分支推送到远程仓库 |
git push --set-upstream origin master | 将本地的主分支推送到远程仓库的主分支上 |
git clone ssh/url | 将远程仓库拉取到当前目录 |
git pull/git fetch | 将远程仓库于本地仓库的当前仓库合并 |
git push -d origin branch_name | 删除远程仓库的分支 |
命令 | 描述 |
---|---|
git branch | 查看分支信息 |
git branch branch_name | 创建新分支 |
git checkout branch_name | 切换branch_name分支 |
git merge branch_name | 将分支branch_name合并到当前分支 |
git branch -d branch_name | 删除本地分支 |
git push -d origin branch_name | 删除远程仓库的分支 |
git checkout -t origin/branch_name | 将远程仓库的分支拉取到本地 |
Git是分布式的,所有Git支持离线工作,可以在本地进行很多操作,SVN是集中式的,必须要联网才能进行正常工作.
Git的命令很多,例如add commit status fetch push等命令
- 分支:使用意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
- Git有本地分支,SVN无本地分支.当你在公司正在写一个任务A时,突然临时接到另一个任务B需要紧急处理,但任务A还没完成,这个时候任务A和任务B要处理同一个代码时,但任务A已经写一部分了,如果用SVN的话只能将这块代码撤销到初始版本才能进行任务B的操作,但用Git的分支就可以直接先从Matser主分支重新创建一个分支去完后任务B,任务B完成后再来完成任务A.
目前SVN还是很多公司用的,SVN简单易懂,在面对中小项目的时候加上其图形界面,SVN还是挺受欢迎的(目前我呆的公司用的就是SVN),但Git确实根据分支这一步还是比SVN稍占优势.Git和SVN都有各自好处,所有两者都是比较好的版本控制工具.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。