1.Git和GitHub的基本介绍
1、什么是GIT?
Git是一个免费、开源的版本控制软件
2、什么是版本控制系统?
版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况得系统。
实现功能:记录文件的所有历史变化,并通过命令可以随时恢复到任何一个历史状态;实现了多人协作开发或修改
3、常见版本控制工具?
Git:现在使用率最广,也是最受欢迎的版本管理工具
Svn:较早的版本管理工具
4、 Github和Git是什么关系
Git是版本控制软件,服务于本地
Github是项目代码托管的平台,借助git来管理项目代码,实现远程操作
常见代码托管平台GitHub,码云,csdn code等。GitHub开源公开,如果想创建私有项目需要花钱购买;而码云不需要,可以创建个人私有空间,安全性较好
2.使用Git
2.1安装
官网下载,直接点击下一步下一步安装即可
2.2 阶段一上线代码
1.针对你的项目文件夹,右键--->点击Git Bash Here---->把git运行起来
2.初始化操作
git init
3.提交邮箱,姓名
git config --global user.email "you@example.com"
git config -global ser.name "your name"
4.查看当前目录所有文件(文件显示红色)
git status
5.文件上传到git
git add . # 全部文件
git templates/index.html #具体添加的文件
6.数据提交上线(文件显示白色)
git commit -m "描述信息"
7.当我们的代码发生修改时,通过git status查看其状态会发现,变动部分都被红色标注出来。重复5-6步,提交我们改动的数据
8.查看版本日志,即提交记录
git log
9.查看修改的版本号ID(前面的黄色部分即ID号)
git reflog
10.通过ID回滚,回到改动之前的文件
git reset --hard ID号
11.在执行log和reflog操作,查看状态
## 这些变化在git命令行中操作可能你感觉不到啥,你对着你的项目看,哪里动了看哪里,它会随着你的命令行发生相关的变化,不信你自己试试,当然我这穷逼用的windows是这样,自带这种特效,其他系统的电脑就不清楚了
Git管理的文件分为了两个区四个状态
工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。
版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。
2.3 阶段二项目延伸
当我们的项目需要延伸功能,开发到一半时前面的某个部分出现bug,此时我们需要回溯到没开发前的代码,改完bug在提交,这时候我们有以下几种解决办法:
方案一:利用stash修复bug
stash用于将工作区发生变化的所有文件临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;
stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。
在执行pop命令时,某些情况下,我们紧急修复的代码会和stash存储在“某个地方”的代码有重合部分,此时就会出现冲突,需要你手动解决冲突
stash相关命令作用:
git stash # 将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
git stash list # 查看“某个地方”存储的所有记录
git stash clear # 清空“某个地方”
git stash pop # 将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply # 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop # 编号,删除指定编号的记录
方案二:使用分支branch
我们在编写程序的时候,绝对禁止使用单个master分支,必须在master上创建新的分支,在分支上进行操作
1.创建分支,相当于对master主线进行了拷贝
git branch dev
2.查看总共有几条分支
git branch
3.跳转到相应分支
git checkout dev
4.当我们在分支dev上对bug修复成功后,需要将dev分支和master分支合并,现在需要转到master上在主线上对它合并,不过记得先对代码进行提交一下,在此处合并也可能出现冲突,自行手动解决
git merge dev
5.删除dev分支
git branch -d dev
6.如果在公司上遇到紧急修复的bug,我们可以再master上创建bug分支,在bug分支上进行修复,修复完毕后再合并到master并删除debug分支
2.4 异地管理操作项目
1.登录GitHub
2.点击new resporepository,创建个人仓库
3.获取代码仓库地址
4.现在我们可以通过地址将我们的代码提交到GitHub上进行托管
git remote add origin https://github.com/LearningOnline/-.git # 绑定
git push origin master # 推送master分支
git push origin dev # 推送dev分支
## 注意这里的origin就是一个名字,在你clone一个托管在Github上的代码库时,git为你默认创建的指向这个远程代码库的标签就是它
通过remote -v,可以看到origin指向的是远程代码库
5.当我们想在另一个地方来继续编写代码的时候,从GitHub上进行克隆操作
方式一:登录GitHub,直接clone or download我们的文件
方式二:选择指定文件执行以下命令,克隆全部文件
git clone https://github.com/LearningOnline/-.git
方式三:指定文件夹后(你要放入代码的文件夹),init初始化,再进行远程添加,最后通过pull命令拿到
git remote add origin https://github.com/LearningOnline/-.git
git pull origin master
ps:如果当前自己电脑存在公司的项目,但是在公司电脑上已经更新上传过(git add . /git commit -m "xxx"/git push origin dev),此时我们只需要执行方式三(git pull origin dev),进行局部推送即可。写完代码后在进行上传更新(git add . /git commit -m "xxx"/git push origin dev),方便回到公司接着操作,这样来回执行
6. 如果我们在公司写完代码,最后忘记push推送我们的代码,回到家pull拉代码时,很有可能产生冲突,我们采用第三种rebase操作,能够保持代码操作记录的整洁性
git pull orgin dev 等价于:
git fetch origin dev
git merge origin/dev 约等于(不分叉):
git fetch origin dev
git rebase origin/dev
git操作详细操作指向说明
2.5 协同开发
合作者模式(收费的):
项目拥有者向新用户发起邀请
为每个用户创建一个分支
-master
-dev
---
## 一般还会创建一个review分支,这个分支资深开发对大家提交的代码进行审阅
创建组织(免费):
创建组织
邀请成员(可以对成员设置权限)
2.6代码贡献,GitHub中为别人的开源项目找bug
找到存在bug的项目,fork一下买这个项目就在自己仓库出现了
从自己仓库获取代码,编辑并提交
创建提交一个pull request,然后等待原作者回复即可
3.0 总结
git常用命令
# git init
初始化,当前所在的文件夹可以被管理且以后版本相关的数据都会存储到.git文件中
# git status
查看当前文件夹以及子目录中文件是否发生变化:内容修改/新增文件/删除,已经变化的文件会变成红色,已经add的文件会变成绿色
# git add .
给发生变化的文件(贴上一个标签)或 将发生变化的文件放到某个地方,只写一个句点符就代表把git status中红色的文件全部打上标签
# git commit -m
新增用户登录认证功能以及xxx功能将“绿色”文件添加到版本中
# git log
查看所有版本提交记录,可以获取版本号
# git reset --hard 版本号
将最新的版本回退到更早的版本
# git reflog
回退到之前版本后悔了,再更新到最新或者最新之前的版本
# git reset --hard 版本 回退
git stash中常用命令
'git stash':将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
'git stash list':查看“某个地方”存储的所有记录
'git stash clear':清空“某个地方”
'git stash pop':将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
'git stash apply':编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
'git stash drop':编号,删除指定编号的记录
git merge 和git rebase区别
merge:
会将不同分支的提交合并成一个新的节点,之前的提交分开显示,
注重历史信息、可以看出每个分支信息,基于时间点,遇到冲突,手动解决,再次提交
rebase:
将两个分支的提交结果融合成线性,不会产生新的节点;
注重开发过程,遇到冲突,手动解决,继续操作
3.1 其他
gitlab说明:
它是公司自己搭建的项目代码管理平台
git中 .gitignore文件的作用:
一般来说每个Git项目中都需要一个“.gitignore”文件, 这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。
实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。
关于配置文件,以及用户凭证,版本问题等操作等点击这里
更多细节性问题点击这里