版本控制之git学习
最近学习了一下版本控制中比较符合开发者气质的Git,这里做一个总结。一来梳理所学的内容;二来也作为起点后续继续丰富。学习的方式主要为网络学习和个人实践。推荐两个学习网页,互相参考必有所成。
博客园:http://www.cnblogs.com/best/archive/2017/09/07/7474442.html
廖雪峰:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
------------------------------------------------------------------------------------------------------------
1、工具准备
a、下载Windows GUI:https://git-scm.com/ 【安装完成后,鼠标右键中将会出现git bash here和git gui here;这里我们主要用git bash here,这里类似于Linux命令,git + cmd】
b、在github上注册一个账号:https://github.com
b、小乌龟(工作中可能要):https://download.tortoisegit.org/tgit/2.5.0.0/
d、smart git工具,windows模式助你完成命令难处理之处
2、实践准备
a、桌面上新建一个文件夹(项目:test),选中文件夹右击后,选择git bash here .
b、为test创建git版本管理,执行: git init【你会在test文件夹下,看到隐藏文件夹.git,里面有HEAD/refs等。这就是用来进行版本控制的东西】
3、基本知识
a、Git含远程(github)在内,可以分为4个区。I(工作区-WorkSpace,即为test除了.git文件之外的部分)、II(暂存区-Stage/Index,即为.git中的Index部分)、III(本地版本区-Local Resopsity)、IV(远程版本区-github上)
b、个人在工作区进行写代码和文档,完成后提交到暂存区,在提交到本地版本区,无误后再提交到远程端。由于项目本身可能是多人协作,大家都可以从远程端clone项目文档到本地开发。Git提供了不错的分支、标签和版本切换。基本所有过程可追溯、可逆。
c、git中的文件类型:Untracted(项目新文件)、Unmodified(项目原始文件)、Modified(项目被修改文件)、Staged(暂存区中文件)。查看文件状态:git status [filename],系统会告诉你可能用到的一些脚本提示。
4、常用命令
git status:查看文件状态
git add . 将当前目录下文件添加到stage中
git commit -m "mesage" 提交到本地库,注释信息:message
git checkout -b bname 切换分支,如果不存在则新建
git log --pretty=oneline 查看本地日志历史,当前所在会有Head指向
git merge master 在本地分支合并master代码
5、场景1(团队协作)
a.git clone ** //克隆代码待本地
b.git checkout -b *** //新建分支
c.develop or modify
d.git add . //加入到stage中
e.git commit -m "message" //提交到本地库
f.review代码
g.git checkout master 切换到主分支
h.git pull 更新代码
i.git checkout ***切换分支
j.git merge master //把master分支内容合并到当前分支中。
k.git push origin *** 推送到远程库
6.场景2(修复bug)
a.git add .
b.git stash //放入临时中
c.git checkout bugBranch
d.git pull --rebase origin master
e.fix bug
f.git add.
g.git commit -m "message"
h.git push
i.git checkout ***
j.git stash pop //切换回工作分支,并回复临时保存的工作场景
7. 场景3 (分支管理:把本地的替换成远程的)
git fetch --all git reset --hard origin/master (这里master要修改为对应的分支名) git pull
8. 从远程拉取指定分区到本地
git checkout -b 本地分支名 origin/远程分支名