【写在最前】
我们在平时的编程学习中,经常会接触到“版本控制”这个概念。
目前业界的开发团队,基本都会从 GIT 、 SVN 两种主流版本控制系统中选择一个在团队内部使用。
两个软件设计思路不同,各有利弊。
通过本文知识,让我们花5分钟时间学习一下git工具及其常用命令,相信聪明的你,看完一定会有收获!
【正文开始】
# 定义
Git 是一个开源的“分布式”版本控制系统,跟SVN不同,他并不需要一个集中式的中央代码服务器的支持。
# 安装
windows版: https://npm.taobao.org/mirrors/git-for-windows/
linux版: https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.gz (或 yum -y install git-core)
# 基本概念
想学好git,必须要理解版本库、暂存区、工作区概念
版本库:.git隐藏目录是 Git 的版本库
暂存区:对应版本库中名为index的二进制文件(另有stage一说,概念相同)
工作区:就是你在电脑里能正常看到的工作目录。
三者关系如下图所示:
# 常用命令
Git 常用命令有6个,分别是:
git clone、git push、git add、git commit、git checkout、git pull
使用过程如下图所示:
再附上另一张图,加深你的理解:
# 分支管理
每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。
使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
创建分支命令:
git branch (branchname)
切换分支命令:
git checkout (branchname)
删除分支命令:
git branch -d (branchname)
合并分支命令:
git merge (branchname)
注意:合并分支过程中,可能会有代码冲突,此时必须手动解决后重新通过git add+git commit命令提交
#版本回退(穿梭)
人人都会犯错误,版本回退功能给了我们犯错后改正的机会。
版本回退,需要区分两种情形:
1)如果还没有 commit ,则建议用 git checkout 命令进行指定文件错误恢复;
2)如果已经commit,则需要先用 git log 命令列出所有 commitId, 然后利用 reset 命令进行恢复;
命令语法为: git reset --hard
注1: --hard: commit 和 index都回退(推荐) –-soft:只回退commit,不回退index暂存区 --mixed:混合模式(默认值,但因为工作区没变化不直观,所以不推荐)
注2: reset 是全部回退(之后的commit记录会被直接清除) revert 则只回退指定的 commitId (单次),其余 commit 记录不变
特别注意:
不建议在已经commit的情况下利用 checkout 回退(因为二次修改会有detached HEAD游离态的问题)
detached HEAD 游离态产生的原因:
checkout head 命令原理是将head从master分支指向了某个具体 commitId,如果再对文件进行二次修改就会自动产生一个无名分支,此时只会允许你commit到本地,不会再允许你push到远程。
detached HEAD 游离态的解决:
方案原理:先创建新的临时分支保存修改操作,再将新分支合并到master
方案只需4步:
git branch temp_branch
git checkout master
git merge temp_branch
git branch -d temp_branch
【全文完】
十年技术沉淀,只做原创文章;
及时关注作者,成就大牛之路!
如果您对文章内容有不同意见或独到见解,欢迎大家在评论区留言讨论,作者也会第一时间进行互动回复。