前言
对于开发来说,不想频繁的手动备份代码的话,版本控制是必须的。现阶段了解并使用的版本控制工具有2种。其一是Svn,其二是Git。而二者最大的不同是svn是集中式版本控制系,git是分布式版本控制系统。git版本控制中有三个重要的概念:工作区(working tree)、暂存区(index或stage)、版本库(repository)
而在共同协作一般都有一个远程的版本控制库,然后一个主干master加上其他的分支,共同开发一般流程如下图所示
了解了大概的过程,就需要了解记忆一些基本的git操作命令,下面就介绍一些常用的git操作命令。
创建一个工作区
git init
如果我们需要建立一个版本控制仓库或者初始化一个现有的仓库,特别注意如果要作为一个远程的git库,应该加-bare生成没有工作目录的裸库,只用记录版本信息。git clone
克隆一个版本控制仓库到指定路径,如 git clone xxx.git mygit
对工作区进行编辑
- git add
将需要提交的文件信息添加到暂存区中 - git mv
修改文件名称或转移文件路径 - git reset
版本、文件重置,
可选配置参数
–soft 暂存区和工作区都会保留,版本提交版本回退到指定版本
–mixed 工作区会保留,暂存区和本地提交版本库都会回退到指定的版本
–hard 直接还原、工作区、暂存和本地提交版本都会回退到指定的版本 - git rm
将文件移除,git rm –cached 只删除索引保留文件,即恢复成untracked状态
版本历史和状态
- git log
展示commit的日志,git log –since=2.weeks
可配置选项
-(n) 仅显示最近的 n 条提交
–since, –after 仅显示指定时间之后的提交。
–until, –before 仅显示指定时间之前的提交。
–author 仅显示指定作者相关的提交。
–committer 仅显示指定提交者相关的提交。 - git show
展示版本的修改详情(git show e6b7783887ee8d3d67bee67ef73cb2e233c8a856) - git status
工作区中的文件当前处于什么状态
提交历史管理
- git branch
展示分支列表, 新建分支(git branch new_branch),删除分支(git branch -d new_branch) - git checkout
更换分支(git checkout new_branch)、丢弃工作区的修改(git checkout – file) - git commit
将工作区的更改内容提交到本地版本库中。
git commit -a -m ‘msg’ -a 未暂存的文件也提交 -m ‘msg’ 提交的描述信息
git commit –amend 修改本地提交的最后一次 - git diff
展示版本之间的区别 - git merge
两个开发版本的合并,这个过程如果有冲突需要手动合并。合并某分支到当前分支(git merge new_branch) - git tag
版本标签
共同协作
- git fetch
获取远程更新到本地,可指定 git fetch <远程主机名> <分支名> - git pull
获取远程主机的分支信息合并,pull=fetch+merge - git push
将本地仓库提交的修改同步到远程库中