下载、安装:
https://git-scm.com/download/win
双击安装,下一步、下一步...
配置用户信息(自报家门)(在git-bush里配置,也可以在cmd):
git config --global user.name "zhangsan"
git config --global user.email "xxxxxxx@qq.com"
(global参数:这台机器上所有的仓库都使用这个配置)
(git config --list:查看配置信息)
可视化工具source tree的安装:
https://www.sourcetreeapp.com/
双击安装,下一步、下一步...
创建git仓库:
初始化版本库
git init
添加文件到版本库
git add
git commit
(还未到远程仓库,还需要git push命令)
查看仓库状态:
git status
工作流演示:
进入工作目录,执行clear命令(清理干净后,这是一个全新的目录)
新建文件并写入内容:
查看状态:
把文件添加到暂存区,查看状态:
提交到本地仓库:
git commit -m "first commit"
然后,产品经理临时变更需求,改了下:
刚做了修改,要提交到暂存区,不然,本地没有修改的记录:
git add test.txt
(然而,还没有进行自测,到这步,拎包走人)
在commit到本地仓库之前,产品经理pao过来说:修改不需要了。所以,要回滚到上那次:
(暂存区的修改回归到工作区。但工作区还没有弄干净clean)
通过git checkout命令将工作区的文件弄干净
在git checkout命令执行之前,先看下test.txt的内容:
执行完git checkout命令后:
(干净的)
接下来,又修改了代码:
再添加到暂存区,然后提交到本地仓库
接下来,产品经理说:第二次需求其实不要做,需要回滚到第一次
查看git提交日志:
回滚到第一次提交:
(进行回滚,--hard说明最终仓库和暂存区文件都回滚到第一次提交)
现在,又变回了第一次提交后的状态:
这时候,产品经理很欠抽的说:其实大家做的这么多都不用做的!你们要把本地仓库清理干净:
(本地清空了,但暂存区和本地仓库没有)
git commit之后才说明清空了:
提交到远程github:
先要创建ssh key:
在git-bash运行命令 ssh-keygen.exe -t rsa -C "xxxxxxxxxx@qq.com"(自己的git邮箱):
其实是保存在了git的家目录:
查看生成的公钥:
将公钥粘贴到github:
测试是否是通的:
添加远程仓库:
主要用这几个命令:
git remote add origin git@github.com:xxoo/xxoo.git
git pull origin master --allow-unrelated-histories
git push -u origin master
先在github上创建新的仓库:
然后在git-bash执行相关操作:
先进入工作目录:
创建并写入README.md文档:
初始化仓库:
git init
添加到暂存区:
git add
添加到本地仓库master分支
git commit -m "first commit"
本地仓库与远程github关联起来:
git remote add origin git@github.com:xxoo/websocket_push.git
推到github上:
查看github,会发现已经提交上来了:
改一下,再次提交:
(第一次git push -u origin master,接下来就可以git push)
查看github,已经更新了:
克隆仓库:
命令:
git clone git@github.com:xxoo/xxoo.git
测试:
标签管理:
命令:
git tag——>查看所有标签
git tag name——>创建标签
git tag -a name -m "commet"——>指定提示信息
git tag -d name——>删除标签
git push origin name——>标签发布
演示:
查看标签:
分支管理:
假设现在有个场景,你准备开发一个新功能,但需要两周时间才能完成,但只写了50%代码,如果立即提交,由于代码没有写完,不完整的代码可能导致项目运行出问题。但如果想把所有的代码写完,再一次提交,就会存在丢失每天进度的风险,有了分支就不用担心这个问题了。你只要创建属于你自己的分支,别人看不到,你只要在自己的分支上工作。而在自己的分支上,怎么提交都行。当你写完之后再合并到原来分支,这样既安全,又不影响工作。
演示:
(ls -a查看,没有看到.git文件,说明没有仓库)
创建新的分支(git branch):
查看分支:
(*说明在什么分支上)
切换到分支:
基于当前分支,进行代码编辑:
把分支的新代码合并到master上去:
(先切换到master分支上)
合并到master上去:
代码继续写,发现分支feature_x已经没有用了,这时候就要删掉分支了:
总结: