集腋成裘-12-git使用-01创建库和 集腋成裘-13-git使用-02进阶篇 从使用层面进行了简单的介绍,下面从命令形式进行介绍
Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,安装参见:http://git-scm.com/
GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。
Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:
其他:
集中式:远程服务器保存所有版本,用户客户端有某个版本
分布式:远程服务器保存所有版本,用户客户端有所有版本
一言以蔽之:GitHub是文件远端存放的平台,Git是文件版本控制的工具
安装过程不再赘述,这里开始第一行代码,即检查Git是否安装成功
$ git --version
我们先来理解下Git 工作区、暂存区和版本库概念
假设小P准备创建一个《网上书城》的项目,
把文件纳入到版本控制大致分三步:
cd /文件路径
git init
git status
git add 文件名 git add .
生成版本
git commit -m ‘版本备注信息‘
文件配置(如果是首次commit命令,需要通过以下命令配置跟人信息)
git config --global user.email "1692134188@qq.com" git config --global user.name "Yango"
git log
git log --graph --pretty=format:"%h %s"
对历史功能的完善,如:完善了index.html首页功能
拓展新功能,添加了readme系统说明
此时两个文件都会变红,需要重新添加(git add .),并提交(git commit -m ‘备注‘)
git add . git commit -m ‘备注‘
世界读书日,需要添加一个打5折优惠功能,假设需要修改到index页面和新增一个discount.py文件。
过了这天后,价格恢复原价,代码回滚
回滚流程:一、找到想要回滚的版本号。二、回滚
git add . git commit -m ‘v4版本,世界读书日,全场五折‘
git log查看日志,找到想要回滚的版本号 git log git reset --hard 要回滚的版本号
正常开发一个功能(商城功能)是在dev分支上进行的,线上突然有一个紧急bug需要修复,
git branch
git branch dev
git checkout dev
1:切换到mater分支并检查 git checkout master git branch 2:把bug分支merge到主干上 git merge bug_01
git branch -d 分支名
1:给远程仓库起别名
git remote add origin https://github.com/1692134188/bookstore.git
2:向远程推送代码 git push -u origin master
1:克隆远程仓库代码(内部已实现git remote add origin 远程仓库地址) git clone 远程仓库地址 2:切换分支 git checkout 分支
1:切换到dev分支 git checkout dev 2:把master分支合并到dev git merge master 3:修改代码 4:提交代码 git add . git commit -m ‘‘ 5:推送到远程 git push origin dev
1:切换到dev分支 git checkout dev 2:从远端拉取代码 git pull origin dev 3:继续开发 4:提交代码 git add . git commit -m ‘‘ 5:推送到远程 git push origin dev
。。。。。周而复始,直到有一天,出了差错,
1:切换到dev分支 git checkout dev 2:从远端拉取代码 git pull origin dev 3:继续开发 4:提交代码 git add . git commit -m ‘‘ 5:推送到远程 在公司继续写代码,但是忘记推送了!!!!!!!!!
1:切换到dev分支 git checkout dev 2:从远端拉取代码 啊没有拉取到内容,倒霉忘记提交了 git pull origin dev 3:继续开发 4:提交代码 git add . git commit -m ‘‘ 5:推送到远程 git push origin dev
git pull origin dev = git fetch origin dev + git merge origin dev
使提交记录更简洁,不分叉
举个例子,现在在一个新的future分支创建一个商城在线聊天室功能。假设第一天开发了前端,第二天开发了后台端40%,三天开发后端70%,第四天开发后台90%,第五条开发后端100%。
应用场景一:合并多次提交记录,更简洁 1:切换到master分支, $ git checkout master 2:把dev分支合并到master $ git merge dev 3:从master上切一个新的future分支,用于开发聊天室ChatRoom git branch ChatRoom 4:回到ChatRoom开始开发 git checkout ChatRoom 5:开发第一天 $ git add . $ git commit -m ‘ChatRoom V1:前端开发完成‘ 6:开发第二天 $ git add . $ git commit -m ‘ChatRoom V2:后端完成40%‘ 7:开发第三天 $ git add . $ git commit -m ‘ChatRoom V3:后端完成70%‘ 8:开发第四天 $ git add . $ git commit -m ‘ChatRoom V4:后端完成90%‘ 9:开发第五天 $ git add . $ git commit -m ‘ChatRoom V5:后端完成100%‘
我们需要把V2和V5版本统一整合成一次提交记录:后端开发完成 ,按照截图标识修改一些文件内容
10:开始变基(方式一) git rebase -i 版本号:表示要合并的起始位置 $ git rebase -i 08131d08ac095679d7bad5517cdc406e2da254a4 11:开始变基(方式二) git rebase -i HEAD~n n:表示把最近的n次进行合并 git rebase -i HEAD~4
再次查看日志记录
从master上切出三个分支featureA和featureB和featureC,分别由三个开发人员开发;
A分支率先开发完成,并提交到master,
此时B分支再想同步master分支,git merge master。此时查看日志
如果C分支想同步master分支,git rebase master。此时查看日志
1:从master切出3个分支 $ git branch featureA $ git branch featureB $ git branch featureC 2:回到A分支上开发,开发完成并提交。推送到远程 $ git checkout featureA $ git add . $ git commit -m ‘A分支,版本A-1,A功能开发完成‘ $ git push origin featureA 3:合并A分支到master上 $ git checkout master $ git merge featureA 4:分支B正常开发:提交,推送到远程 $ git checkout featureB $ git add . $ git commit -m ‘分支 B,版本B-1,开发50%‘ $ git add . $ git commit -m ‘分支 B,版本B-2,开发80%‘ $ git push origin featureB 5:分支C正常开发:提交,推送到远程 $ git checkout featureC $ git add . $ git commit -m ‘分支 C,版本C-1,开发60%‘ $ git push origin featureC $ git add . $ git commit -m ‘分支 C,版本C-2,开发70%‘ $ git push origin featureC
此时是B分支没有从master上merge的log日志
6:分支B采取直接从master上merge $ git checkout featureB $ git log $ git merge master $ git log
此时是B分支没有从master上rebase的log日志
7:分支C采取从master上rebase $ git checkout featureC $ git log $ git rebase master $ git log
git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/YangoCity/BookStore.git
git push -u origin master
原文:https://www.cnblogs.com/YK2012/p/13198581.html