Git 基础操作、以及流程步骤
版本控制
说到版本控制,脑海里总会浮现大学毕业是写毕业论文的场景,你电脑上的毕业论文一定出现过这番景象!
1
2
3
4
5
6
7
8
9
10
11
|
毕业论文_初稿.doc 毕业论文_修改 1.doc 毕业论文_修改 2.doc 毕业论文_修改 3.doc 毕业论文_完整版 1.doc 毕业论文_完整版 2.doc 毕业论文_完整版 3.doc 毕业论文_最终版 1.doc 毕业论文_最终版 2.doc 毕业论文_死也不改版.doc ... |
以上就是使用最原始的方式进行版本控制,但是这种方式有显著缺点:
- 多个文件,保留所有版本时,需要为每个版本保存一个文件...
- 协同操作,多人协同操作时,需要将文件打包发来发去...
- 容易丢失,被删除意味着永远失去...(可以选择网盘)
为了解决以上版本控制存在问题,应运而生了一批版本控制工具:VSS、CVS、SVN、Git等,其中Git属于绝对霸主地位。
注意:一般版本控制工具包含两部分
- 客户端(本地):本地编写内容以及版本记录
- 服务端(网盘):将内容和版本记录同时保存在远程(可有可无)
GIT介绍
Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/
GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。
Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:
- 无GitHub:在本地 .git 文件夹内维护历时文件
- 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库
其他:
集中式:远程服务器保存所有版本,用户客户端有某个版本
分布式:远程服务器保存所有版本,用户客户端有所有版本
Git使用
- 什么是GIT,eg:如下
- 张开的故事:资源共享网站
- 小弟弟系列
- 小芳系列
初始化操作(命令在下面):
初始化后,会在当前目录自动创建 .git 文件夹,该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中,有了它,再也不用担心我好多文件来记录版本了,通过Git命令可以将所有版本保存在 .git 文件中。
目前已使用Git的四个命令,这四个命令已经可以代替本地多个文件保存版本的方式:
- 第一个版本:进入程序目录: git init 初始化,表示即将对当前文件夹进行版本控制。(新建的版本第一次要初始化操作) git add . 当前目录中所有文件添加到【某个地方】 git commit -m '描述信息' 第一版本git已经生成,这个描述信息中可以写第一次版本,第二次版本等等 git status 查看当前状态,若有内容修改的,会提示红字(查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。) git log 查看提交记录,即:历史版本记录
- 新功能: 李浩专区
开发到了一半,紧急修复线上BUG
git stash----->>下面三行是步骤 解决bug git add . git commit -m '修复bug完毕' git stash pop 可能出现冲突,出现之后不要着急,手动解决冲突 eg:冲突警告 Auto-merging templates/index.html CONFLICT (content): Merge conflict in templates/index.html
开发功能完毕
git add . git commit -m '解决冲突后,继续开发后续功能'
PS:
这些编号的,都是输入这个命令之后,后面加编号名称,记得有空格
git stash 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态(白话:目前位置,共写了5个版本,现在正在写5版本中的东西,输入这个命令,那么正在写的代码会暂时保存到其他地方,此时会回归到5版本从未做过任何修改的状态,注意:也可以这么说,可以用这个把工作区域弄成干净的状态,因暂时保存到其他地方,就相当于这样了)
git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突);(白话:跟上面的git stash联合起来看,就是修改了5版本的问题之后,会和5版本所写的新内容进行合并,合并的时候有可能冲突,这个时候就需要手动来解决冲突)
git stash list 查看“某个地方”存储的所有记录(查询到的是带编号的)
git stash clear 清空“某个地方”
git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) ----->>后面跟编号,表示把这个编号的版本重新拿到工作区;跟pop的区别是,pop是拿到的第一个,也就是正在编辑的这个。
git stash drop 编号,删除指定编号的记录 PS:注意用pop和apply的区别
git reflog----->>查看都有那些版本标识
git reset --hard ‘后面跟版本标识‘ 表示:回到某个版本
git stash list 是里面存放的所有东西
这个apply后面跟编号,指的是获取到某个编号的,而pop之的是第一个
PS:add后面跟文件名表示:只是把这个文件名增加到暂存区;而小数点表示:当前所有的文件都增加到暂存区
下面一幅图完美诠释以上操作:
即可更新状态,也可回滚。
工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。
版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。
———————————————————————
http://www.cnblogs.com/haiyan123/p/7989167.html 可参考博客
总结开发流程步骤:
项目背景:这个创业者想开发一个资源共享的系统
阶段一:顺利上线代码
首先在你创建的项目的文件夹里面右键--->点击Gir Bash Here---->把git运行起来。 1、初始化:git init 2、如果你第一次使用git的时候,需要配置一下。如果你已经配置了,以后就不用配置了>>>如下: git config --local user.name 'xxx' git config --local user.email 'xxx@example.com' 注意:执行git commit 命令时,可能会提示进行用户和邮箱的配置,该配置用于记录当前版本由那个用户提交 3、把当前的目录以及及所有的子文件添加到git: git add . #所有的文件 git templates/index.html #具体添加的文件 4、真实的把数据提交上线,设置版本:git commit -m "描述信息" 注意:这个描述信息一定好好写 5、查看状态,看那个是否被修改过:git status 一定记得先add,后commit,add之后是没有放到版本里的,只有commit的时候才有版本 6、查看有几个版本:查看版本提交记录 :git log 7、回滚到上一个版本:git reset --hard 版本号 8、再跳回去(查看往后的版本号):git reflog ——————————————————————— 最后需要往GitHub上进行push推送的时候 会提示输入用户名和密码的,然后输入自己的github注册的用户名,和自己邮箱密码即可。 ——————————————————————— ps: 红色》》 未管理的状态 git status 绿色》》 已经归我管理的状态 git add. 白色》》 已经移走的状态 git commit -m "描述信息"
———————————————————————
PS:
git常用命令速查表
详细参考:http://www.cnblogs.com/wupeiqi/p/7295372.html
附属一张大神画的流程图: