Git
Git 是一个分布式版本控制系统,保存的是文件的完整快照,而不是差异变换或者文件补丁。Git 每一次提交都是对项目文件的一个完整拷贝,因此你可以完全恢复到以前的任何一个提交。Git 每个版本只会完整拷贝发生变化的文件,对于没有变化的文件,Git 只会保存一个指向上一个版本的文件的指针。
Git 工程在本地有三个工作区域:
- 工作区:进行日常开发的区域。
- 暂存区域:运行 git add 命令后文件保存的区域,也是进行 commit 的区域。
- 本地仓库:本地版本库,记录工程的提交历史,意味着数据永远不会丢失。
Git 的基本工作流程就是:
- 从远程仓库将项目clone到本地;
- 在本地工作区进行开发:增加、删除或者修改文件;
- 将更改的文件add到暂存区域;
- 将暂存区的更新commit到本地仓库;
- 将本地仓库push到服务器。
Git 分支:
几乎所有的版本控制系统都以分支的方式进行操作,分支是独立于项目主线的一条支线,我们可以在不影响主线代码的情况下,在分支下进行工作。
首先,项目存在两个长期分支:
主分支(maste):专门用于部署以及负责线上代码回滚的分支,是最为稳定的一个分支。
开发分支(develop):专门存放经过测试之后,保证代码无bug的代码分支。开发的时候主要依托于develop分支开发,基于develop分支新建分支,经过严格测试之后,才能合并到develop中。
开发过程中会从develop分支中衍生出临时开发分支:
- 项目开发分支(feature):此分支特点是周期长、需要团队协作、代码量大。工作方式是需要创建本地以及远程feature分支,代码基于develop分支代码,经过开发、测试之后,最终合并到develop分支上。
- 紧急bug、其他问题修复分支(hotfix):此分支特点是修改时间短、优先级高、代码量稍小、改完之后急需测试、上线。此分支会是团队协作或者单人、团队协作工作方式会类似feature分支,单人只需构建本地分支即可满足开发要求,当修复上线一段时间后,即可删除。
- 预发布分支(release):此分支是项目开发完成,经过测试没有问题之后,从develop分支分出用于项目的预发布,预发布一段时间没有问题之后合并到master分支进行正式发布。
分支操作:
git branch [branch-name] //创建分支 git branch branch_0.1 master 从主分支master创建branch_0.1分支 git branch //列出分支 git branch -r //列出远程分支 git branch -a //列出所有分支 git checkout [branch-name] // 切换到该分支 git checkout [commitId] // 切换到提交id的版本分支 git switch [branch-name] // 新命令,切换到分支 git branch -d [branch-name] //删除分支 git checkout -b [branch-name] //新建一个本地分支,并切换到该分支 git checkout -b [branch-name] origin/[branch-name] //新建一个基于远程分支的本地分支,并切换到该分支 git branch -m branch_0.1 branch_1.0将branch_0.1重命名为branch_1.0
远程仓库操作:
检出仓库:git clone 查看远程仓库:git remote -v 添加远程仓库:git remote add [name] [url] 删除远程仓库:git remote rm [name] 修改远程仓库:git remote set-url—push [name] [newUrl] 拉取远程仓库:git pull [remoteName] [localBranchName] 本地与服务器端同步: git pull 将本地分支推送到服务器上去: git push(远程仓库名) (分支名) 从远程获取最新版本到本地,不会自动merge同步至服务器端: git fetch
如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
$git push origin test:master// 提交本地test分支作为远程的master分支 $git push origin test:test// 提交本地test分支作为远程的test分支
其他常用命令:
git merge origin/dev将分支dev与当前分支进行合并 git add [file name]添加一个文件到git index git diff查看尚未暂存的更新 git diff --cached 或 git diff --staged查看尚未提交的更新 git ls-files看已经被提交的 git commit提交 git commit -a 提交当前repos的所有的改动 git commit -v当你用-v参数的时候可以看commit的差异 git commit -m "This is the message describing the commit" 添加commit信息 git rm [file name]删除一个文件 git rm a.a移除文件(从暂存区和工作区中删除) git rm --cached a.a移除文件(只从暂存区中删除) git rm -f a.a强行移除修改后文件(从暂存区和工作区中删除) git status 查看当前状态 git config --list看所有用户 git log 查看commit的日志 git reset --hard HEAD^HEAD is now at 1bc0043 Merge branch 'master' of put-me-down` 版本回退 git stash push将文件给push到一个临时空间中 git stash pop将文件从临时空间pop下来